Mengapa penggunaan memori di "atas" tidak bertambah?

28

Saya perhatikan bahwa kadang-kadang ketika saya menjalankan teratas , penggunaan memori dari setiap proses dalam tabel proses tampaknya tidak menambah total.

Misalnya, dalam dump di bawah ini, top mengatakan bahwa saya menggunakan memori 16 Gb. Namun, tabel proses hanya menunjukkan dua proses menggunakan sedikit lebih dari 520 Mb. Bagaimana saya bisa mengetahui apa yang mengkonsumsi 15,5 Gb lainnya? (Saya menggunakan CentOS.)

$ top

top - 12:16:34 hingga 45 hari, 2:28, 3 pengguna, rata-rata memuat: 0.24, 0.65, 0.71
Tugas: 274 total, 1 lari, 273 tidur, 0 berhenti, 0 zombie
Cpu (s): 2,3% us, 0,2% sy, 0,0% ni, 97,5% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Mem: 16432032k total, 16340144k digunakan, 91888k gratis, 21736k buffer
Swap: 18481144k total, 1112k digunakan, 18480032k gratis, cache 15624488k

  PID PENGGUNA PR NI VIRT RES SHR S% CPU% MEM TIME + PERINTAH
18159 jsmith 15 0 260m 31m 4560 S 16.6 0.2 53: 35.64 python
 4795 26 15 0 260m 6608 4220 S 2.0 0.0 0: 00.06 postmaster
    1 root 15 0 10344 680 568 S 0.0 0.0 0: 39.36 init
    2 root RT -5 0 0 0 S 0,0 0,0 0: 00,53 migrasi / 0
    3 root 34 19 0 0 0 S 0.0 0.0 0: 00.62 ksoftirqd / 0
    4 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 0
    5 root RT -5 0 0 0 S 0,0 0,0 0: 02,09 migrasi / 1
    6 root 34 19 0 0 0 S 0.0 0.0 0: 01.32 ksoftirqd / 1
    7 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 anjing penjaga / 1
    8 root RT -5 0 0 0 S 0,0 0,0 0: 00,99 migrasi / 2
    9 root 34 19 0 0 0 S 0.0 0.0 0: 01.74 ksoftirqd / 2
   10 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 2
   11 root RT -5 0 0 0 S 0,0 0,0 0: 02,16 migrasi / 3
   12 root 34 19 0 0 0 S 0.0 0.0 0: 01.30 ksoftirqd / 3
   13 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 3
   14 root RT -5 0 0 0 S 0,0 0,0 0: 01,94 migrasi / 4
   15 root 34 19 0 0 0 S 0.0 0.0 0: 01.78 ksoftirqd / 4
   16 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 4
   17 root RT -5 0 0 0 S 0,0 0,0 0: 01,92 migrasi / 5
   18 root 34 19 0 0 0 S 0.0 0.0 0: 01.30 ksoftirqd / 5
   19 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 5
   20 root RT -5 0 0 0 S 0.0 0.0 0: 02.06 migrasi / 6
   21 root 34 19 0 0 0 S 0.0 0.0 0: 01.83 ksoftirqd / 6
   22 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 6
   23 root RT -5 0 0 0 S 0,0 0,0 0: 02,31 migrasi / 7
   24 root 34 19 0 0 0 S 0.0 0.0 0: 01.50 ksoftirqd / 7
   25 root RT -5 0 0 0 S 0.0 0.0 0: 00.00 pengawas / 7
   26 root 10 -5 0 0 0 S 0,0 0,0 0: 00,42 kejadian / 0
   27 root 10 -5 0 0 0 S 0,0 0,0 0: 00,28 acara / 1
   28 root 10 -5 0 0 0 S 0,0 0,0 0: 00,37 kejadian / 2
   29 root 10 -5 0 0 0 S 0,0 0,0 0: 00,21 peristiwa / 3
   30 root 10 -5 0 0 0 S 0,0 0,0 0: 00,38 kejadian / 4
   31 root 10 -5 0 0 0 S 0,0 0,0 0: 00,27 peristiwa / 5
   32 root 10 -5 0 0 0 S 0,0 0,0 0: 00,52 peristiwa / 6
   33 root 10 -5 0 0 0 S 0,0 0,0 0: 00,64 peristiwa / 7
   34 root 10 -5 0 0 0 S 0,0 0,0 0: 00,00 khelper
del
sumber

Jawaban:

26

Dari baris terkait penggunaan memori di atas:

Mem: 16432032k total, 16340144k used, 91888k free, 21736k buffers
Swap: 18481144k total, 1112k used, 18480032k free, 15624488k cached

Mari kita abaikan swap. Memori total sama dengan jumlah memori yang digunakan dan bebas. Digunakan, di sisi lain, adalah jumlah dari "benar-benar digunakan oleh aplikasi" dan di-cache dan buffer. Jadi, dalam kasus Anda seperti ini:

  • Mem = 16432032k = 16340144k + 91888k;
  • "Benar-benar digunakan oleh aplikasi" = Digunakan - (cache + buffer) = 16340144k - (15624488k + 21736k) = 693920k.

15,5 GB lainnya di-cache. Ini meningkatkan kinerja. Namun, pada saat suatu aplikasi membutuhkan bagian dari memori yang di-cache itu segera diberikan kepadanya. Anda akan melihat ini jika Anda menjalankan beberapa aplikasi dan monitor yang haus memori top.

grs
sumber
1

Daftar itu sepertinya bukan 274 totalproses bagi saya. Top biasanya hanya menampilkan apa yang cocok di terminal / layar Anda. Gunakan ps auxsebagai gantinya dan tambahkan rssnilainya (atau kolom memori apa pun yang ditampilkan versi Anda).

Anda juga tidak ingin menambahkan ukuran memori virtual, sepertinya Anda benar-benar tertarik pada kolom resident ( RES).

Daniel Beck
sumber