Ý nghĩa của dòng bộ đệm / bộ đệm trong đầu ra miễn phí


168

Tại sao máy chủ của tôi hiển thị

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Tôi không có ý tưởng về việc tính toán bộ nhớ trong linux. Tôi nghĩ rằng nó nói rằng 5088232 được sử dụng trong khi 7198224 là miễn phí, có nghĩa là nó thực sự tiêu thụ 5GB RAM?



Câu trả lời:


232

Ý nghĩa của các giá trị

Dòng đầu tiên có nghĩa là:

  • total: Tổng RAM (vật lý) của bạn (không bao gồm một bit nhỏ mà hạt nhân dự trữ vĩnh viễn cho chính nó khi khởi động); đó là lý do tại sao nó cho thấy ca. 11,7 GiB chứ không phải 12 GiB mà bạn có thể có.
  • used: bộ nhớ được sử dụng bởi HĐH.
  • free: bộ nhớ không sử dụng.

total= used+free

  • shared/ buffers/ cached: Điều này cho thấy việc sử dụng bộ nhớ cho các mục đích cụ thể, các giá trị này được bao gồm trong giá trị cho used.

Dòng thứ hai cho giá trị dòng đầu tiên được điều chỉnh. Nó đưa ra giá trị ban đầu để used trừ tổng buffers+cachedvà giá trị ban đầu free cộng với tổng buffers+cached, do đó, tiêu đề của nó. Những giá trị mới này thường có ý nghĩa hơn so với dòng đầu tiên.

Dòng cuối cùng ( Swap:) cung cấp thông tin về việc sử dụng không gian hoán đổi (tức là nội dung bộ nhớ đã được tạm thời chuyển sang đĩa).

Lý lịch

Để thực sự hiểu ý nghĩa của các con số, bạn cần có một chút nền tảng về hệ thống con bộ nhớ ảo (VM) trong Linux. Chỉ là một phiên bản ngắn: Linux (giống như hầu hết các hệ điều hành hiện đại) sẽ luôn cố gắng sử dụng RAM miễn phí cho các bộ nhớ đệm, vì vậy Mem: freehầu như sẽ luôn ở mức rất thấp. Do đó, dòng -/+ buffers/cache:được hiển thị, bởi vì nó hiển thị bao nhiêu bộ nhớ là miễn phí khi bỏ qua bộ nhớ cache; bộ nhớ cache sẽ được giải phóng tự động nếu bộ nhớ bị khan hiếm, vì vậy chúng không thực sự quan trọng.

Một hệ thống Linux thực sự rất thấp về bộ nhớ nếu freegiá trị trong -/+ buffers/cache:dòng bị thấp.

Để biết thêm chi tiết về ý nghĩa của các con số, xem ví dụ: các câu hỏi:

Thay đổi trong Procps 3.3.10

Lưu ý rằng đầu ra của freeđã được thay đổi trong Procps 3.3.10 (phát hành năm 2014). Các cột được báo cáo hiện là "tổng", "đã sử dụng", "miễn phí", "chia sẻ", "đệm / bộ đệm", "có sẵn" và ý nghĩa của một số giá trị đã thay đổi, chủ yếu là để giải thích tốt hơn cho bản mỏng của nhân Linux bộ nhớ cache.

Xem báo cáo lỗi Debian # 565518 để biết động lực và những thay đổi trong freeđầu ra từ 14.04 đến 16.04 có nghĩa là gì? để biết thêm thông tin chi tiết.


Bạn có thể mở rộng về những thứ mà Linux có thể lưu vào bộ nhớ cache không? Nó sẽ là các tập tin đã được truy cập hoặc công cụ mạng?
CMCDragonkai

@CMCDragonkai: Câu trả lời cho serverfault.com/questions/23433/ địa chỉ chi tiết về những gì cấu thành "bộ đệm" và "bộ đệm".
sleske

5
Tôi không nghĩ câu lệnh "Total = used + free" là chính xác, hãy xem kết quả đầu ra sau trên máy của tôi:$ free -h total used free shared buff/cache available Mem: 3.4G 585M 152M 11M 2.6G 2.5G Swap: 4.0G 84M 3.9G
Sebastian

@Sebastian: Ah, thú vị. Có vẻ như thông số miễn phí đã được thay đổi (trong 3.3.10). Tôi chỉnh sửa câu trả lời của tôi để đề cập đến điều này. Nếu bạn quan tâm đến sự thay đổi này, hãy xem xét đặt câu hỏi mới :-).
sleske

3
total = used + free + buff/cache
nguy hiểm89


2

Dòng bộ đệm / bộ đệm cho bạn thấy các chương trình được sử dụng bao nhiêu bộ nhớ (đầu tiên trong số các cột đó) và miễn phí cho các chương trình sử dụng (cột thứ hai). Đó là một con số khá bí truyền và không phải là thứ bạn thực sự nhìn nhiều vào thực tế.


Và dòng đầu tiên (dòng mem) nghĩa là gì
Muahmmad Zeeshan

8
Rằng bạn đã cài đặt 12GB RAM trong hệ thống, 11,5 GB trong số đó được sử dụng và 0,5 GB hiện không được sử dụng. Khoảng 82 MB bộ nhớ đã sử dụng được sử dụng cho bộ đệm (kết nối mạng, v.v.), trong khi khoảng 6,5 GB đang được sử dụng để lưu trữ các bản sao dữ liệu trên đĩa, do đó dữ liệu sẽ không phải đọc lại nếu cần.
womble

3
@Muhammad: "82 MB là miễn phí." - không, 57MiB là miễn phí (nhưng điều đó không thực sự quan trọng, hãy xem câu trả lời của tôi). "Bây giờ tất cả có nghĩa là hệ thống đã đạt đến giới hạn của nó" - Không, hoàn toàn không. Hệ thống có 6,9GiB được sử dụng để lưu vào bộ đệm, nó sẽ dễ dàng cung cấp cho các ứng dụng, vì vậy có rất nhiều chỗ. Ngoài ra, việc sử dụng trao đổi là rất thấp (ony khoảng 50MiB). Nếu bộ nhớ bắt đầu bị thắt chặt, việc sử dụng trao đổi sẽ tăng lên. Hiện tại bạn chỉ đang sử dụng một nửa RAM bạn có.
sleske

4
Bạn đã xem xét việc hỏi một câu hỏi mới tại một số điểm?
womble

3
Tôi không đồng ý, dòng bộ đệm / bộ đệm là bộ nhớ trống thực tế của hệ thống và do đó có liên quan nhất nếu bạn muốn biết hệ thống có đủ chỗ cho các chương trình hay không.
eckes 04/07/2015
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.