2013-07-12 9 views
52

auf RedHat Linux 6.2 Ich free -m laufen und es zeigt fast alle 8GBLinux kostenlos zeigt hohe Speicherauslastung, aber oben nicht

verwendet
   total  used  free  shared buffers  cached 
Mem:   7989  7734  254   0   28  7128 
-/+ buffers/cache:  578  7411 
Swap:   4150   0  4150 

Aber zur gleichen Zeit in top -M kann ich keine Prozesse sehen, alle mit dieser Speicher:

top - 16:03:34 up 4:10, 2 users, load average: 0.08, 0.04, 0.01 
Tasks: 169 total, 1 running, 163 sleeping, 5 stopped, 0 zombie 
Cpu(s): 0.7%us, 0.3%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 7989.539M total, 7721.570M used, 267.969M free, 28.633M buffers 
Swap: 4150.992M total, 0.000k used, 4150.992M free, 7115.312M cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
1863 sroot  20 0 398m 24m 9.8m S 0.3 0.3 3:12.87 App1 
    1 sroot  20 0 2864 1392 1180 S 0.0 0.0 0:00.91 init 
    2 sroot  20 0  0 0 0 S 0.0 0.0 0:00.00 kthreadd 
    3 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.07 migration/0 
    4 sroot  20 0  0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 
    5 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.00 migration/0 
    6 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.00 watchdog/0 
    7 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.08 migration/1 
    8 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.00 migration/1 

ich habe auch versucht, diese ps mem script aber es zeigt onlt über 400 MB Speicher verwendet wird.

Antwort

99

Schauen Sie nicht auf die "Mem" -Linie, schauen Sie sich die darunterliegende an.

Der Linux-Kernel verbraucht so viel Speicher wie möglich, um den E/A-Cache (und andere nicht kritische Puffer) bereitzustellen, aber der Cache wird den größten Teil dieser Nutzung übernehmen. Dieser Speicher wird an Prozesse zurückgegeben, wenn sie ihn anfordern. Die Zeile "-/+ buffers/cache" zeigt die angepassten Werte an, nachdem der E/A-Cache berücksichtigt wurde, dh die von Prozessen belegte Speichermenge und die für Prozesse verfügbare Menge (in diesem Fall 578 MB und 7411MB frei).

Der Unterschied des belegten Speichers zwischen der Zeile "Mem" und "-/+ buffers/cache" zeigt an, wieviel vom Kernel zum Zweck des Caching verwendet wird: 7734MB - 578MB = 7156MB in der E/A Zwischenspeicher. Wenn Prozesse diesen Speicher benötigen, verkleinert der Kernel einfach die Größe des E/A-Cache.

+1

Yip, danke. Taumelte auch in diesen, die auch eine gute Erklärung ist: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Memory_Usage_and_Page_Cache.html – DarVar

+0

Dank. Wirklich hilft. –

12

Auch als die erste Zeile total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411

zeigt Wenn wir (im Cache [7128] + Puffer [28] + free [254]) hinzufügen, werden wir etwa in der zweiten Zeile der freie [7411] Wert erhalten 7128 + 28 + 254 = 7410

Verwandte Themen