Những thay đổi trong đầu ra `free` từ 14.04 đến 16.04 có nghĩa là gì?


29

Tôi nhận thấy rằng freebáo cáo lệnh đã thay đổi ở đâu đó giữa Trusty và Xenial. Đây là những gì `free -m 'hiển thị trên một trong những máy tính Trusty của tôi:

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

Đây là tương đương trên (một hệ thống Xenial) khác nhau:

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

Dòng +/- bộ đệm / bộ đệm, mà tôi chủ yếu sử dụng để xem xét, đã biến mất. Làm thế nào tôi nên giải thích các số mới?

  • Mem đã sử dụng / miễn phí có bao gồm bộ đệm và bộ đệm hay không?
  • Những số nào tương đương với các số được sử dụng và miễn phí trên dòng "+/- bộ đệm / bộ đệm" của phiên bản trước?

Câu trả lời:


16

Vui lòng xem xét đầu ra mẫu tôi nhận được từ freelệnh trong Ubuntu 12.04:

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

Các Memused (kb_main_used) giá trị trường hiện được tính như thế này:

used = total - free - cached - buffers

Trước đây, nó từng là:

used = total - free

Thay đổi này đã được giới thiệu trong cam kết sau https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f58f511f8ed9

Một giá trị trung gian:

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

+/- giá trị bộ đệm / bộ đệm được tính như thế này:

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

Giá trị buff / cache mới được tính như thế này:

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

Điều này giống như buffers_plus_cached, được sử dụng trong các phiên bản trước, điểm khác biệt là trước đây nó được sử dụng nội bộ, và bây giờ nó được hiển thị trực tiếp và dòng tính toán tiếp theo -/+ buffers/cacheđã bị xóa

Để biết thêm thông tin, vui lòng kiểm tra các cam kết này, trong đó các thay đổi này đã được giới thiệu: https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procpscbc

Đối với trường mới available, đối với các nhân Linux cũ hơn 2.6,27, giá trị của nó giống với freegiá trị, nhưng đối với các phiên bản sau của Kernel, thì hơi khác một chút:

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)

Lịch sự: http://manpages.ubfox.com/manpages/xenial/en/man1/free.1.html

Vì vậy, câu trả lời cụ thể cho câu hỏi của bạn sẽ là:

  • Phiên bản mới freebao gồm bộ đệm / bộ đệm trong tính toán các Mem used/freegiá trị.
  • Các +/- buffers/cachegiá trị được sử dụng để có mặt ở đó trong các phiên bản trước của freebây giờ đã có như:
    • - / + bộ đệm / bộ đệmused = Mem usedcột hiện tại (Tính toán của nó được nêu chi tiết ở trên)
    • - / + bộ đệm / bộ đệmfree có sẵn dưới dạng giá trị chính xác hơn trong cột mới hiện tạiavailable

NB: Tên kb_*biến là tên nội bộ được sử dụng trong mã nguồn.


1
Câu trả lời này có thể được cải thiện bằng cách đặt câu trả lời cụ thể = "phần tl; dr" ở trên cùng và các chi tiết bên dưới (ngay bây giờ là ngược lại).
Nikana Reklawyks

Đây là một lời giải thích tuyệt vời nhưng trên OpenVZ chạy ubfox 16.04 tôi thấy rằng "có sẵn" thậm chí không đến gần cột miễn phí trong "+/- bộ đệm / bộ đệm" trên "miễn phí" trước đó. Có cùng các ứng dụng đang chạy, tôi nhận được 120 MB miễn phí vào ngày 14.04 và gần bằng 0 vào ngày 16.04. Việc sử dụng ram hoàn toàn khác nhau trên hai hệ thống đó hoặc một trong những gói miễn phí đó là sai (hoặc đó chỉ là OpenVZ một mớ hỗn độn cho những điều này).
Sandro Antonucci
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.