Pertanyaan Apa yang berubah dalam `bebas` output dari 14.04 ke 16.04 berarti?


Saya memperhatikan bahwa free pelaporan perintah telah berubah di suatu tempat antara Trusty dan Xenial. Inilah yang ditunjukkan `free -m 'di salah satu komputer saya yang tepercaya:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7916       7645        271         99        455       1764
-/+ buffers/cache:       5426       2490
Swap:        24999        805      24194

Ini adalah sistem Xenial (yang berbeda):

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3553        1192         857          16        1504        2277
Swap:          3689           0        3689

Baris +/- buffer / cache, yang biasanya saya gunakan untuk melihat, hilang. Bagaimana saya harus menafsirkan angka-angka baru?

  • Apakah Mem yang digunakan / gratis termasuk buffer dan cache atau tidak?
  • Nomor mana yang setara dengan nomor yang digunakan dan nomor bebas pada baris "+/- buffer / cache" dari versi sebelumnya?

26
2018-05-10 06:28


asal




Jawaban:


Silakan mempertimbangkan output sampel yang saya dapatkan dari free perintah di saya Ubuntu 12.04:

           total       used       free     shared    buffers     cached
Mem:       8074640    6187480    1887160     377056     365128    2113156
-/+ buffers/cache:    3709196    4365444
Swap:     15998972      82120   15916852

Itu Mem usedNilai kolom (kb_main_used) sekarang dihitung seperti ini:

used = total - free - cached - buffers

Sebelumnya, dulu:

used = total - free

Perubahan ini diperkenalkan dalam komit berikut https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9

Nilai tengah:

buffers_plus_cached = buffers (kb_main_buffers) + cached (kb_main_cached) = 365128 + 2113156 = 2478284

+/- buffer / nilai cache dihitung seperti ini:

buffers = kb_main_used - buffers_plus_cached = 6187480 - 2478284 = 3709196
/
cache = kb_main_free + buffers_plus_cached = 1887160 + 2478284 = 4365444

Nilai buff / cache baru dihitung seperti ini:

buff/cache = kb_main_buffers+kb_main_cached = 365128 + 2113156 = 2478284

Ini sama dengan buffers_plus_cached, digunakan dalam versi sebelumnya, perbedaannya adalah bahwa sebelumnya digunakan secara internal, dan sekarang ditampilkan secara langsung, dan garis yang dihitung lebih lanjut, -/+ buffers/cache telah dihapus

Untuk info lebih lanjut, periksa komitmen ini, di mana perubahan ini diperkenalkan: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8

Mulai dari yang baru available lapangan, untuk kernel Linux yang lebih tua dari 2.6.27, nilainya sama dengan free nilai, tetapi untuk versi yang lebih baru dari Kernel, ini sedikit berbeda:

Estimation of how much memory  is  available  for  starting  new
applications,  without swapping. Unlike the data provided by the
cache or free fields, this field takes into account  page  cache
and also that not all reclaimable memory slabs will be reclaimed
due to  items  being  in  use  (MemAvailable  in  /proc/meminfo,
available   on   kernels  3.14,  emulated  on  kernels  2.6.27+,
otherwise the same as free)

Kesopanan: http://manpages.ubuntu.com/manpages/xenial/en/man1/free.1.html

Jadi, jawaban spesifik untuk pertanyaan Anda adalah:

  • Versi baru dari free termasuk buffer / cache dalam perhitungan Mem used/free nilai-nilai.
  • Itu +/- buffers/cache nilai yang dulu ada di versi sebelumnya free sekarang tersedia sebagai:
    • - / + buffer / cache used = Sekarang Mem used kolom (Perhitungannya diperinci di atas)
    • - / + buffer / cache free tersedia sebagai nilai yang lebih akurat di kolom baru saat ini available

N.B: Itu kb_* nama variabel adalah nama internal yang digunakan dalam kode sumber.


13
2018-05-10 07:33



Jawaban ini dapat ditingkatkan dengan menempatkan jawaban spesifik = "bagian tl; dr" di bagian atas dan detail di bawah (saat ini sebaliknya). - Nikana Reklawyks
Ini penjelasan yang bagus tetapi pada OpenVZ menjalankan ubuntu 16.04 saya melihat bahwa "tersedia" bahkan tidak datang mendekati bebas kolom di "+/- buffer / cache" pada "bebas" sebelumnya. Setelah aplikasi yang sama berjalan, saya mendapatkan 120MB gratis pada 14.04 dan hampir 0 tersedia pada 16.04. Entah penggunaan ram benar-benar berbeda pada kedua sistem atau satu paket gratis itu salah (atau hanya OpenVZ yang berantakan untuk hal-hal ini). - Sandro Antonucci