
Ich habe einen Server mit 2 GB RAM, der auf dem von MediaTemple verwalteten DV-Server läuft, der CentOS verwendet. Der Befehl free -m
gibt Folgendes aus:
total used free shared buffers cached
Mem: 2048 1948 99 0 0 140
-/+ buffers/cache: 1808 239
Swap: 1536 288 1247
Wenn ich jedoch versuche herauszufinden, welche Prozesse den Speicher verwenden top
, erhalte ich Folgendes:
1417 mysql 20 0 496m 496m 7512 S 1.3 24.3 42:10.92 mysqld
3259 okgo 20 0 49436 48m 11m S 0.0 2.4 0:21.96 php-cgi
3175 root 20 0 49144 47m 3196 S 0.0 2.3 0:01.80 spamd
3176 popuser 20 0 46940 45m 992 S 0.0 2.2 0:00.00 spamd
3269 okgo 20 0 44372 43m 10m S 19.2 2.1 0:02.11 php-cgi
3272 okgo_for 20 0 23808 23m 10m S 0.0 1.1 0:00.79 php-cgi
27161 root 20 0 10816 10m 9460 S 0.0 0.5 0:01.97 httpd
786 root 20 0 4844 4844 2140 S 0.0 0.2 2:28.96 newrelic-daemon
1017 apache 20 0 4552 4552 2228 S 0.0 0.2 0:01.38 httpd
3277 postfix 20 0 4432 4432 2548 S 0.0 0.2 0:00.00 trivial-rewrite
Was mich hier verwirrt, ist die Tatsache, dass der free -m
Befehl scheinbar anzeigt, dass dieser Speicher nicht zwischengespeichert ist, d. h. die -/+ buffers/cache
Zeile zeigt auch 1827 verwendet an! Was übersehe ich hier?
Bearbeiten
Auf Anfrage hier die Ausgabe von /proc/meminfo (die free -m zu widersprechen scheint?):
MemTotal: 2097152 kB
MemFree: 55808 kB
Cached: 158656 kB
Buffers: 0 kB
Active: 368924 kB
Inactive: 428580 kB
Active(anon): 273480 kB
Inactive(anon): 365368 kB
Active(file): 95444 kB
Inactive(file): 63212 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1572864 kB
SwapFree: 1277160 kB
Dirty: 68 kB
Writeback: 0 kB
AnonPages: 638848 kB
Shmem: 4424 kB
Slab: 1243780 kB
SReclaimable: 1222584 kB
SUnreclaim: 21196 kB
Auch,dieser Beitragkönnte Licht in die Situation bringen, aber /proc/meminfo hier deutet darauf hin, dass ein sehr großer Prozentsatz des Speichers verwendet wird, der oben nicht aufgeführt ist.
Antwort1
Slab ist Speicher, der vom Kernel verwendet wird und nicht angezeigt wird inSpitze. Es sind derzeit ca. 1,2 GB und das addiert sich richtig zu IhremSpitzeAusgabe auf diejenige, die gegeben ist durchfrei. Sie können genauer untersuchen, wo es verwendet wird, indem SiePlattenplatteBefehl.
PS: Eines der häufigsten Szenarien, in denen viel Slab-Speicher verwendet wird, ist, wenn das System viele Dateien hat und diese häufig liest/schreibt. Dann wird viel Speicher für das Zwischenspeichern von Inode-Informationen verwendet. Dieses Zwischenspeichern kann etwas optimiert werden, allerdings auf Kosten der Leistung.