14.04'ten 16.04'e `free` çıktısındaki değişiklikler ne anlama geliyor?


29

freeKomuta raporlamasının Trusty ve Xenial arasında bir yerde değiştiğini fark ettim . İşte benim 'güvenilir-m' Güvenilir bilgisayarlarımdan birinde gösteriyor:

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

İşte (farklı) bir Xenial sisteminin karşılığı:

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

Genelde bakmaya alıştığım +/- tampon / önbellek hattı kapandı. Yeni sayıları nasıl yorumlamalıyım?

  • Mem kullanılmış / ücretsiz arabellek ve önbellek içeriyor mu?
  • Hangi numaralar, önceki sürümün "+/- buffers / cache" satırındaki kullanılmış ve serbest sayıların karşılığıdır?

Yanıtlar:


16

Ben aldığım örnek çıkışını düşünün freebenim, komuta Ubuntu 12.04:

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

Memused (kb_main_used) alan değeri artık şöyle hesaplanır:

used = total - free - cached - buffers

Önceden, eskiden:

used = total - free

Bu değişiklik aşağıdaki taahhütnamede tanıtıldı: https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9

Bir ara değer:

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

+/- tampon / önbellek değeri şöyle hesaplanır:

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

Yeni buff / cache değeri şöyle hesaplanır:

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

Bu, buffers_plus_cachedönceki sürümlerde kullanılan ile aynıdır , fark daha önce dahili olarak kullanılmış olması ve şimdi doğrudan gösterilmesi ve hesaplanan diğer satırın -/+ buffers/cachekaldırılmasıdır.

Daha fazla bilgi için, bu değişiklikler tanıtıldı bu hareketin, lütfen kontrol edin: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8

Yeni availablealandan itibaren, 2.6.27'den daha eski Linux çekirdeği için freedeğeri, değerle aynıdır , ancak Çekirdeğin sonraki sürümleri için biraz farklıdır:

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)

Nezaket: http://manpages.ubuntu.com/manpages/xenial/tr/man1/free.1.html

Yani, sorularınıza özel cevap olacaktır:

  • Yeni sürüm free, Mem used/freedeğerlerin hesaplanmasında tamponlar / önbellek içerir .
  • +/- buffers/cacheÖnceki sürümlerinde orada eskiden değeri freeolarak kullanıma sunulmuştur:
    • - / + buffers / cacheused = Geçerli Mem usedsütun (Hesaplaması yukarıda detaylandırılmıştır)
    • - / + buffers / cachefree , mevcut yeni sütunda daha doğru bir değer olarak kullanılabiliravailable

Not:kb_* değişken adları kaynak kodu kullanılan iç isimlerdir.


1
Bu cevap, özel cevabı = "tl; dr part" en üste ve aşağıdaki detayları (şu an tam tersi) koyarak geliştirilebilir.
Nikana Reklawyks,

Bu harika bir açıklama ama ubuntu 16.04 çalıştıran OpenVZ'de, "müsait" in önceki "boş" üzerindeki "+/- tampon / önbellek" içindeki serbest sütuna bile yaklaşmadığını görüyorum . Aynı uygulamaları çalıştırarak 14.04'te 120 MB ücretsiz ve 16.04'te 0'a yakın olacağım. Bu iki sistemde ram kullanımı tamamen farklıdır ya da bu bedava paketlerin yanlış olduğu (ya da sadece OpenVZ bu şeyler için bir karmaşa).
Sandro Antonucci
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.