Làm cách nào để dọn dẹp hoặc vô hiệu hóa bộ nhớ cache?


49

Sau khi hệ thống khởi động, trong vài phút, bộ nhớ cache của tôi sẽ đầy và nó bắt đầu sử dụng trao đổi. Đây là một ảnh chụp màn hình của / Proc / meminfo.

ký ức

Tuy nhiên, nếu tôi có thể vô hiệu hóa quá trình này / xóa bộ nhớ cache một lần sau đó, tôi nghĩ hệ thống của tôi sẽ tăng tốc đến một mức độ nào đó. Sửa lỗi cho tôi nếu tôi sai ở đây.

Tôi cũng đã thử làm sạch bộ nhớ Bleachbit, nhưng dường như nó không làm sạch bộ nhớ cache đúng cách. Ngoài ra, tính năng này vẫn đang trong giai đoạn thử nghiệm.

bộ nhớ Bleachbit

Đã có một câu hỏi tương tự được đăng ở đây: Làm thế nào tôi có thể vô hiệu hóa bộ đệm tìm nạp trước? , nhưng nó liên quan đến Ubuntu Server, và cả các câu trả lời liên quan đến cài đặt thủ công, v.v.

Vì vậy, tôi muốn biết liệu có một số phần mềm để tắt / bật Bộ nhớ cache cho Ubuntu 12.04 không.


Bạn có chắc chắn điều này sẽ giải quyết vấn đề của bạn? Bộ nhớ không lấp đầy mà không có lý do. Tôi cũng gặp vấn đề là trí nhớ của tôi bị lấp đầy, và truy nguyên nó tracker-miner. Sau khi tôi gỡ cài đặt tất cả các gói theo dõi, vấn đề của tôi đã biến mất. Tôi cũng có bộ nhớ 4GB và 2GB được sử dụng bởi các bộ nhớ, nhưng tôi cũng không gặp phải bất kỳ vấn đề nào.
daniel kullmann

1
@danielkullmann: Anh ấy đề cập đến bộ nhớ được lưu trong bộ nhớ cache, không phải bộ nhớ được sử dụng bởi các ứng dụng ...
ish

@izx Vâng, tôi biết. Chỉ có thể là anh ta tìm giải pháp cho vấn đề sai. Hạt nhân đủ thông minh để không lấp đầy bộ nhớ với bộ nhớ cache khi cần thiết bởi các chương trình. Đó là lý do tại sao tôi nghĩ rằng vấn đề bộ nhớ của anh ấy đến từ một chương trình sử dụng quá nhiều bộ nhớ.
daniel kullmann

@danielkullmann: Tôi tò mò muốn biết làm thế nào bạn truy tìm nó trở lại một quá trình đang ngấu nghiến tất cả bộ nhớ đó ... Có công cụ / lệnh nào cho việc đó không?
Bharadwaj Srigiriraju

Tôi chỉ sử dụng lệnh htop và sắp xếp theo cách sử dụng bộ nhớ.
daniel kullmann

Câu trả lời:


58

Lưu ý: Linux KHÔNG "ăn" RAM của bạn! Xin hãy xem câu trả lời tuyệt vời của Geirha dưới đây để hiểu tại sao ...

Sau lưu ý trên, nếu bạn vẫn cảm thấy "dọn dẹp" bộ đệm có thể giúp ích, bạn chắc chắn có thể thử: đó là một lớp lót từ thiết bị đầu cuối:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Không có cách nào dễ dàng để vô hiệu hóa bộ đệm, nhưng bạn có thể đạt được hiệu quả tương tự bằng cách làm sạch nó thường xuyên như mọi phút , nếu bạn muốn:

  • Làm cho nó một công việc định kỳ
  • Nhấn Alt-F2, nhập gksudo gedit /etc/crontabvà thêm dòng này gần phía dưới:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Điều này làm sạch cứ sau 15 phút. Bạn có thể đặt thành 1 hoặc 5 phút nếu bạn thực sự muốn bằng cách thay đổi tham số đầu tiên thành *hoặc */5thay vì*/15

Một lớp lót để biết RAM miễn phí THỰC, ngoại trừ bộ đệm

Câu trả lời của Geirha giải thích chi tiết, nhưng tóm lại, bạn nhận được số megabyte miễn phí với:

free -m | sed -n -e '3p' | grep -Po "\d+$"

mà trên máy chủ dòng lệnh 2GB của tôi trả về một sức khỏe cực kỳ tốt 1835.


3
Ơ! Loại bỏ bộ nhớ cache là đủ xấu, nhưng làm một cronjob cho nó? Ý tôi là, điều này "giải quyết" câu hỏi, có thể nói, nhưng điều đó không làm cho nó bớt đau đớn hơn.
Reid


@izx: hmm ... vì vậy đây là cách người ta tạo ra một cronjob. Nếu tôi định bỏ bộ nhớ cache định kỳ, điều đó không có nghĩa là tôi thực sự làm chậm hệ thống? Nếu đó là trường hợp, tôi nghĩ rằng câu trả lời của bạn nghe giống như một câu trả lời lý thuyết hơn là câu trả lời của geirha. : p Câu trả lời tốt BTW ...
Bharadwaj Srigiriraju

1
@ForbiddenOverseer: Tôi chỉ đưa nó vào vì bạn muốn "vô hiệu hóa" bộ đệm và thả nó theo định kỳ là cách duy nhất để thực hiện điều đó. Lưu ý của tôi ở trên cùng (và liên kết của geirha) nói rõ rằng bộ đệm thực sự tăng tốc hệ thống của bạn hầu hết thời gian, ngay cả khi nó trông giống như "ăn RAM của bạn) --- vì vậy, IMO bạn sẽ làm chậm hệ thống của bạn , nhưng bạn muốn thử nó, vì vậy tôi chỉ trả lời câu hỏi của bạn thay vì chỉ cằn nhằn bạn và nói với bạn rằng đó là một ý tưởng tồi và vì vậy bạn không nên làm điều đó! Tôi chỉ cho bạn sức mạnh để thử nghiệm ...: D
ish

1
Tôi đang sử dụng Ubuntu Server 12.04 LTS làm VDS. Tôi đang cố gắng tiếp cận được cung cấp trong câu trả lời này, nhưng tôi liên tục nhận được tee: /proc/sys/vm/drop_caches: Permission denied. Lời khuyên nào?
Eimantas

44

Cứu giúp! Linux đã ăn RAM của tôi!

www.linuxHRyram.com giải thích điều này rất hay trong mẫu FAQ, với các yếu tố cần thiết là:

Chuyện gì đang xảy ra vậy?

Linux đang mượn bộ nhớ không sử dụng để lưu trữ đĩa. Điều này làm cho có vẻ như bạn bị thiếu bộ nhớ, nhưng bạn thì không! Mọi thứ đều ổn!

Tại sao nó làm điều này?

Bộ nhớ đệm đĩa làm cho hệ thống nhanh hơn nhiều! Không có nhược điểm, ngoại trừ những người mới khó hiểu. Nó không lấy đi bộ nhớ từ các ứng dụng theo bất kỳ cách nào!

Nếu tôi muốn chạy nhiều ứng dụng hơn thì sao?

Nếu các ứng dụng của bạn muốn có thêm bộ nhớ, chúng chỉ cần lấy lại một đoạn mà bộ đệm đĩa đã mượn. Bộ nhớ cache đĩa luôn có thể được trả lại cho các ứng dụng ngay lập tức! Bạn không thấp ram!

Làm thế nào để tôi thấy bao nhiêu ram miễn phí tôi thực sự có?

Để xem các ứng dụng của bạn có thể sử dụng bao nhiêu ram mà không cần hoán đổi, hãy chạy free -m và xem cột "khả dụng":

$ miễn phí -m
              tổng số bộ đệm / bộ nhớ cache được sử dụng miễn phí có sẵn
Mem: 1504 1491 13 0 855       792
Hoán đổi: 2047 6 2041
Đây là câu trả lời của bạn trong mebibytes.


Nguồn: như đã đề cập, www.linuxHRyram.com tuyệt vời - vui lòng truy cập để biết thêm thông tin.


1
@geirha: Cảm ơn vì liên kết ... Nó rất nhiều thông tin và tôi thích các thí nghiệm được đưa ra ở cuối !!
Bharadwaj Srigiriraju

@izx: tbh, tôi đang gặp khó khăn khi quyết định câu trả lời được chấp nhận. Chưa kể, liên kết này thực sự có nhiều thông tin theo mọi cách khác ...;)
Bharadwaj Srigiriraju

@ForbiddenOverseer: xem nhận xét của tôi trong câu trả lời của tôi để có câu trả lời chi tiết - Tôi đã đưa cho bạn phiên bản ngắn về lý do tại sao bạn không nên làm điều đó, nhưng sau đó trả lời câu hỏi của bạn, cho bạn sức mạnh để thử nghiệm và tự mình thử. Nếu bạn không nghĩ việc dọn dẹp / xóa bộ nhớ cache sẽ giúp ích, thì đừng làm điều đó nữa :)
đó là

@izx, tôi thấy hơi khó để làm điều đó cho trường hợp này. Tuy nhiên, bạn đã viết một văn bản hữu ích về vấn đề này, vì vậy có lẽ bạn chỉ cần thêm url vào câu trả lời của mình và chúng tôi xóa câu trả lời của tôi?
geirha

Không cần, liên kết của bạn trong một tài nguyên tuyệt vời; Tôi chỉ kết hợp một số phần vào câu trả lời (có ghi công) để giờ đây nó là một lựa chọn hoàn toàn hợp lệ (thực tế là câu trả lời tốt hơn mà công chúng thấy!) Công việc tuyệt vời, được nâng cấp - chào mừng tới 5k!
ish

4

Để kiểm tra mức sử dụng bộ nhớ hiện tại của bạn

 watch -n 1 free -m

hoặc là

 watch -n 1 cat /proc/meminfo

Giải phóng không gian

 sudo sysctl -w vm.drop_caches=3

LƯU Ý: hành động này sẽ không làm cho hệ thống của bạn nhanh hơn cũng như không ảnh hưởng đến tính ổn định và hiệu suất của nó, nó sẽ chỉ dọn sạch bộ nhớ được sử dụng bởi Linux Kernel trên bộ nhớ cache.

hoặc là

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

LƯU Ý: Bạn có thể sử dụng các công việc định kỳ để lên lịch các lệnh ở trên để chạy trong các khoảng thời gian cụ thể.


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.