2013-07-12 14 views
52

Su RedHat Linux 6.2 Io corro free -m e si vede quasi tutti 8GB utilizzatoLinux spettacoli gratuiti elevato utilizzo della memoria, ma superiore non

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

Ma allo stesso tempo, in top -M che non possono vedere i processi che utilizzano tutti questa memoria:

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 

ho anche provato questo ps mem script ma mostra onlt sulla memoria 400MB in uso.

risposta

99

Non guardare la riga "Mem", guarda quella sotto.

Il kernel di Linux consuma quanta più memoria possibile per fornire la cache I/O (e altri buffer non critici, ma la cache sarà la maggior parte di questo utilizzo). Questa memoria è ceduta ai processi quando la richiedono. La riga "-/+ buffer/cache" mostra i valori regolati dopo che la cache I/O è stata contabilizzata, ovvero la quantità di memoria utilizzata dai processi e la quantità disponibile per i processi (in questo caso, 578 MB utilizzati e 7411 MB gratuiti).

La differenza di memoria utilizzata tra la riga "Mem" e "-/+ buffer/cache" mostra quanto è in uso dal kernel ai fini della memorizzazione nella cache: 7734 MB - 578 MB = 7156 MB in I/O cache. Se i processi hanno bisogno di questa memoria, il kernel ridurrà semplicemente la dimensione della cache I/O.

+1

Sì, grazie. Ci siamo imbattuti in questo troppo che è anche una buona spiegazione: 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

Grazie. Aiuta davvero –

12

Inoltre, come la prima linea mostra total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411

Se aggiungiamo (cache [7128] + buffer [28] + libero [254]), avremo circa libera il valore della seconda della linea [7411] 7128 + 28 + 254 = 7410

Problemi correlati