Điểm:11

Cached Memory Lấy tất cả bộ nhớ

lá cờ id

Tôi đã chuyển sang Ubuntu chỉ vài tháng trước. Vài ngày trước, tôi phát hiện ra rằng hệ thống đang lưu trữ bộ đệm trong bộ nhớ chiếm nhiều dung lượng và mặc dù tôi đang nhận được lợi ích của bộ nhớ đệm, nhưng điều này hiện đang khiến tôi gặp rắc rối.

bộ nhớ đệm ubuntu

Như bạn có thể thấy trong hình này, Ubuntu đang chiếm hơn 50% RAM của tôi. Ngoài ra, tôi đang sử dụng 23,3% trong số 11,6 GiB, điều đó về cơ bản có nghĩa là hệ thống của tôi đang chiếm hơn 75-80% bộ nhớ của tôi...

Bây giờ, tôi đã tìm kiếm rất nhiều lần về cách xóa bộ nhớ cache và tôi đã tìm thấy đồng bộ hóa; tiếng vang 1 > /proc/sys/vm/drop_caches lệnh có đặc quyền sudo có thể xóa nó, nhưng lệnh này chỉ hoạt động lúc đầu như khi tôi sử dụng lệnh này và thấy bộ đệm của tôi bị giảm đi rất nhiều. Nhưng bây giờ, khi tôi nhìn thấy bộ nhớ cache của mình sau khi chạy nó, nó vẫn giữ nguyên.

Bất cứ ai có thể giúp tôi với rắc rối này?

Tái bút Tôi nghĩ rằng nếu tôi thử nâng cấp RAM của mình, điều đó sẽ không giải quyết được vấn đề này ...

lá cờ in
Đây không phải là rắc rối. Đây là do thiết kế. Tại sao có RAM nếu bạn không sử dụng nó? Khi hệ thống cần bộ nhớ cho các mục đích khác, chẳng hạn như các ứng dụng, v.v., bộ đệm sẽ được xáo trộn để hoán đổi hoặc loại bỏ khỏi bộ nhớ để đáp ứng các yêu cầu trước mắt. Nếu không, hệ thống sẽ làm những gì nó cần để nhanh chóng và đáp ứng. Đây là một trong những lợi ích chính của Linux so với hệ điều hành khác, như Windows.
Labham Jain avatar
lá cờ id
Chà, tôi không gặp vấn đề gì khi lưu trữ bộ nhớ đệm, tôi chỉ muốn rằng nó phải ở mức giới hạn... Bởi vì nếu hệ thống chiếm hết dung lượng trong bộ nhớ đệm thì tôi sẽ không thể sử dụng ram... bây giờ do sự cố bộ nhớ đệm, chrome của tôi đang hiển thị cho tôi lỗi SIGSEV. và AVD luôn tệ.
guiverc avatar
lá cờ cn
Nếu các chương trình của bạn thực hiện lệnh gọi `malloc()` (cấp phát bộ nhớ) và không có sẵn RAM trống thì bộ nhớ đệm ram đã được cấp phát, phần đó của bộ đệm sẽ bị mất... Tôi không biết các hạn chế sẽ giúp ích gì cho vấn đề của bạn, có lẽ bạn đang tập trung vào vấn đề sai .. (*ý kiến ​​​​*, tôi không biết mã và việc đọc sách * hoạt động của nhân linux * của tôi đã lâu rồi)
Artur Meinild avatar
lá cờ vn
Đây không phải là một vấn đề, bạn có nó sai. Hệ thống KHÔNG sử dụng bất kỳ bộ nhớ nào cho bộ đệm mà lẽ ra sẽ được sử dụng cho các ứng dụng. Bạn NGHĨ đây là một vấn đề, trong khi thực tế không phải vậy.
lá cờ us
Không liên quan đến câu hỏi: vì bạn có nhiều RAM, hãy cân nhắc chuyển sang ZRam thay vì trao đổi dựa trên ổ cứng.
lá cờ ru
Điều này là bình thường. Ví dụ: ram được lưu trong bộ nhớ cache hàng ngày của hệ thống trình điều khiển RAM 32 GB của tôi là 7,6GiB trên ~ 31GiB có thể sử dụng được. 7GB RAM đang được hệ thống tích cực sử dụng. Với bộ nhớ cache, bạn sẽ nghĩ rằng tôi đang sử dụng 14,6 GB RAM, tuy nhiên, thực ra tôi chỉ sử dụng 7 GB RAM. Bộ nhớ RAM 7,6 GB được giải phóng nếu cần, nếu không, nó chỉ được giữ lại để 'tăng tốc' những thứ trên đĩa, bộ nhớ cache, v.v. Bộ nhớ đệm RAM được giữ cho đến khi cần và được giải phóng ngay lập tức khi cần - nó không thực sự ảnh hưởng đến bộ nhớ của bạn * cách sử dụng * theo bất kỳ cách nào.
lá cờ cn
@LabhamJain Hãy lắng nghe chính mình. Hệ thống đang *sử dụng* bộ nhớ. Bạn muốn nó *không sử dụng* bộ nhớ. Và lý do của bạn là nếu hệ thống sử dụng bộ nhớ thì "sẽ không thể sử dụng ram". Điều đó không có ý nghĩa gì. Bạn muốn hệ thống có thể sử dụng RAM, nó *is* đang sử dụng RAM, chứng tỏ rằng nó *is* có thể sử dụng nó.
lá cờ gf
SIGSEV là kết quả của lỗi lập trình viên. Nó không liên quan gì đến dung lượng RAM có sẵn hay không. AVD luôn tệ khi mô phỏng các hướng dẫn cánh tay trên CPU x86.
lá cờ cn
@matigo: Windows cũng sử dụng bộ nhớ "không sử dụng" để lưu trữ mọi thứ, nhưng giao diện người dùng _most_ của nó ẩn điều này khỏi người dùng để họ không bị nhầm lẫn và hoảng sợ.
Labham Jain avatar
lá cờ id
@OrangeDog Đó thực sự là một vấn đề xảy ra khi chrome hết quyền truy cập bộ nhớ ... vì vậy, ý tôi là bộ nhớ đệm có nghĩa là hệ thống của tôi chiếm phần lớn ram trong bộ đệm nên về mặt kỹ thuật, tôi sẽ chỉ có thể sử dụng bộ nhớ trống, ví dụ: Tổng cộng 11 gb - 6 gb được lưu trong bộ nhớ cache nên tôi chỉ có thể sử dụng tối đa 5 hợp đồng biểu diễn...
lá cờ gf
@LabhamJain như đã được giải thích nhiều lần, điều đó là sai
lá cờ fk
https://www.linuxatemyram.com/ Ram không sử dụng là lãng phí ram, Nếu thứ gì đó cần bộ nhớ đó, Linux sẽ loại bỏ những gì nó đang sử dụng hiện tại. Vì vậy, nó không có vấn đề thực sự
Ruslan avatar
lá cờ bv
Bây giờ bạn đã đề cập đến SIGSEGV, đây có vẻ như là [sự cố XY](https://xyproblem.info).
nulldev avatar
lá cờ cn
Lưu ý rằng bộ nhớ cache không phải lúc nào cũng có nghĩa là bộ nhớ có thể bị loại bỏ khi cần thêm RAM. Ví dụ: dữ liệu trong `tmpfs` sẽ hiển thị dưới dạng "bộ nhớ đệm". Tuy nhiên, System Monitor sẽ hiển thị loại bộ nhớ này vừa được lưu trong bộ nhớ đệm vừa được sử dụng (do đó, nó sẽ nằm trong phần màu của biểu đồ hình tròn). [Điều này đã cắn tôi trước đây.](https://askubuntu.com/questions/762717/high-shmem-memory-usage)
eckes avatar
lá cờ cn
Windows cũng có bộ nhớ cache, chỉ là nó ít tích cực hơn một chút. @matigo
lá cờ fr
https://www.linuxatemyram.com - đây là một cổ điển;)
eckes avatar
lá cờ cn
@OrangeDog có nhưng - vì malloc bị lỗi trả về null nên chương trình gặp sự cố với SEGV nếu hết bộ nhớ ảo và không kiểm tra trả về đúng cách, do đó, có mối tương quan chặt chẽ ở đó, ví dụ: mã ZIP trong thời gian chạy Java có vấn đề đó trong nhiều năm.
marcelm avatar
lá cờ cn
@eckes `malloc()` trên Linux về cơ bản [không bao giờ trả về NULL](https://stackoverflow.com/questions/16674370), vì vậy đó là tranh luận.
Điểm:26
lá cờ bo

nếu hệ thống chiếm hết dung lượng trong bộ nhớ đệm thì tôi sẽ không thể sử dụng ram

Đây không phải là sự thật. Bộ nhớ đệm RAM không xác định RAM đang sử dụng. Bạn sẽ có thể sử dụng RAM, đó là lý do tại sao nó được gọi là bộ nhớ cache – nó có thể được sử dụng và loại bỏ khi cần. Trên thực tế, nó hoàn toàn ngược lại với giả định của bạn. Nếu bạn loại bỏ bộ nhớ cache RAM, bạn sẽ không thể sử dụng những gì được lưu trữ.

Bây giờ, tôi đã tìm kiếm rất nhiều lần cách xóa bộ nhớ cache của mình, tôi đã tìm thấy sự đồng bộ hóa đó; lệnh echo 1 > /proc/sys/vm/drop_caches với đặc quyền sudo có thể xóa nó, nhưng lệnh này chỉ hoạt động lúc đầu giống như khi tôi sử dụng lệnh này và thấy bộ nhớ cache của tôi đã giảm đi rất nhiều. Nhưng bây giờ, khi tôi thấy bộ nhớ cache của mình sau khi chạy nó thì nó vẫn như cũ.

Bạn chỉ cần xóa bộ nhớ cache theo cách thủ công nếu bạn đã tắt tính năng hoán đổi. vô hiệu hóa trao đổi không được khuyến khích để tăng hiệu suất vì điều này thực sự làm giảm hiệu suất hệ thống.

Không giống như Windows, Ubuntu không gặp sự cố khi tải RAM nặng do sự khác biệt trong quản lý bộ nhớ. Vô hiệu hóa các tính năng này sẽ làm giảm đáng kể hiệu suất.

Tóm lại, RAM được lưu trong bộ nhớ cache không phải là RAM đang được sử dụng và không sử dụng tối đa RAM của bạn hoặc làm giảm hiệu suất hệ thống vì RAM được lưu trong bộ nhớ cache sẽ tự động bị loại bỏ khi cần. Ngược lại, RAM được lưu trong bộ nhớ cache sẽ tăng hiệu suất vì nó được sử dụng khi cần thiết.

mchid avatar
lá cờ bo
Nếu bạn muốn tăng hiệu suất hệ thống, điều tốt nhất bạn có thể làm là chuyển sang ổ đĩa thể rắn thay vì ổ đĩa cứng.
mchid avatar
lá cờ bo
Cá nhân tôi đã chuyển sang ổ SSD và tăng khả năng hoán đổi lên 70 để có hiệu suất tốt hơn trên 5GB RAM. Vì bạn có 11GB nên tính hoán đổi sẽ ít ảnh hưởng đến hiệu suất hệ thống trừ khi hệ thống bị sa lầy. Trong trường hợp này, tính hoán đổi sẽ tăng hiệu suất chứ không phải giảm hiệu suất.
lá cờ in
@MooingDuck: Tại sao bạn nghĩ Linux đã tắt trao đổi theo mặc định? Tôi nghĩ Ubuntu tạo một phân vùng trao đổi trong quá trình cài đặt mặc định - tất nhiên, bạn có thể nhất quyết không trao đổi nếu muốn.Ngoài ra, "sự cố" là khi hệ thống không phản hồi hoặc khởi động lại - điều này rất khác với những gì Linux thực hiện trong tình huống hết bộ nhớ (dừng các quy trình một cách rõ ràng để giải phóng ram)
Ruslan avatar
lá cờ bv
Thật không công bằng khi nói Ubuntu không gặp sự cố do quá tải RAM. OOM-kill máy chủ X của bạn cũng tệ cho trải nghiệm máy tính để bàn như khóa hoặc hoảng loạn kernel. Đúng vậy, ngày nay điều này hiếm xảy ra do các bản phân phối hiện đại thực hiện các điều chỉnh điểm OOM đối với các quy trình quan trọng, nhưng tôi đã thường xuyên trải nghiệm điều này khoảng 5 năm trước.
terdon avatar
lá cờ cn
Tất nhiên Linux (bao gồm cả Ubuntu) có thể gặp sự cố khi quá tải RAM. Để đạt được điểm đó khó hơn vì cách nó quản lý bộ nhớ, nhưng không phải là không thể. Nếu bạn thực sự sử dụng hết RAM, hệ thống sẽ bắt đầu tráo đổi và nếu bạn lấp đầy RAM, hệ thống sẽ không phản hồi và cuối cùng bị sập (có lẽ chúng tôi thường buộc khởi động lại khi điều này xảy ra).
lá cờ cn
@terdon Ý tôi là, nó sẽ không gặp sự cố, có sát thủ OOM cho tình huống đó. Tất nhiên, phụ thuộc vào ý của bạn trong "sự cố", nhưng kernel sẽ ổn thôi. Các quy trình khác - nó phụ thuộc.
mchid avatar
lá cờ bo
@terdon Vâng, tôi thường xuyên bị khóa hệ thống trên một máy tính rất cũ (chỉ có 1,5 GB RAM) nhưng đó là do phân vùng trao đổi của tôi quá nhỏ và ổ cứng siêu chậm. Sau khi tăng kích thước của phân vùng trao đổi (và tính hoán đổi từ 10 trở lại lên 60), hệ thống chậm nhưng không phản hồi.
Điểm:21
lá cờ tr

Bộ nhớ đệm trên thực tế là bộ nhớ trống.

Nó có thể (và sẽ) được cung cấp miễn phí cho bất kỳ tiến trình nào yêu cầu bộ nhớ, ngay khi bộ nhớ trống khác được sử dụng hết.

Trong khi chờ đợi, hạt nhân theo dõi thông tin nào được lưu trong bộ nhớ đệm trong bộ nhớ trống này.

Thông tin này dự kiến ​​sẽ không được viết ở đâu đó bởi một i/o tốn thời gian. Nó đã được viết hoặc đọc và không bao giờ thay đổi ngay từ đầu. Thông tin này có thể được xóa một cách an toàn (và nhanh chóng) khỏi bộ nhớ.

Điểm:15
lá cờ bd

Bộ nhớ đệm không làm hại bạn theo bất kỳ cách nào!

RAM không được được sử dụng bởi bộ nhớ cache ... nó đang được mượn bằng bộ đệm! Điều đó có nghĩa là nó sẽ được trả lại để bạn sử dụng ngay khi bạn cần.

Nếu phần mềm của bạn yêu cầu một khối bộ nhớ, hệ thống sẽ chuyển sang "bạn bắt đầu" và cung cấp khối đó. Nếu tình cờ có bộ đệm nằm ở đó, các phần tử được lưu trong bộ đệm sẽ bị hủy (tức là chúng không còn trong bộ đệm và sẽ phải được tìm nạp lại từ đĩa nếu cần).

Các hệ thống thông minh hơn sẽ đưa ra các lựa chọn thông minh về việc loại bỏ các thành phần nào khỏi bộ đệm để cung cấp bộ nhớ cho bạn.

Labham Jain avatar
lá cờ id
Điều này có vẻ không đúng, tôi đã thử chạy trình giả lập Android nhưng khi ram của tôi đầy với bộ đệm 4gb, nó đã treo hệ thống của tôi thay vì xóa bộ đệm đó ...
terdon avatar
lá cờ cn
@LabhamJain có vẻ như bạn đã sử dụng hết RAM _and_ trao đổi của mình. Bộ đệm đĩa không phải là vấn đề của bạn.
Harper - Reinstate Monica avatar
lá cờ bd
@LabhamJain vấn đề về bộ đệm không treo hệ thống của bạn, vì vậy tôi nghĩ "bộ đệm" là một vấn đề cá trích đỏ và bạn gặp phải một vấn đề hoàn toàn khác... điều này xảy ra mọi lúc ở đây, nó được gọi là "sự cố XY"...
mchid avatar
lá cờ bo
@LabhamJain Tôi đã từng gặp phải tình trạng hỏng đĩa trên một máy tính cũ và hóa ra là tôi cần tăng kích thước phân vùng hoán đổi của mình—hệ thống đang cố hoán đổi sang không gian hoán đổi không tồn tại. Ngoài ra, tôi đã bị treo tạm thời do ổ cứng chậm. Giải pháp ở đó là chuyển sang SSD.
Điểm:10
lá cờ cn
raj

Mở terminal của bạn (Ctrl+Alt+T) và gõ lệnh: miễn phí -h. Bạn sẽ nhận được đầu ra như thế này:

              tổng số buff/bộ đệm được chia sẻ miễn phí đã sử dụng hiện có
Mem: 15Gi 2.0Gi 10Gi 33Mi 2.7Gi 13Gi
Hoán đổi: 31Gi 0B 31Gi

Ở đây bạn có 15G tổng RAM, 2G được sử dụng, 2,7G là bộ đệm và 10G được hiển thị là "miễn phí". Nhưng hãy nhìn vào cột cuối cùng: nó hiển thị 13G là "có sẵn". Điều đó có nghĩa là bạn co thể sử dụng 13G RAM (tức là tổng dung lượng trống + bộ nhớ cache) mặc dù chỉ có 10G được hiển thị là "miễn phí". Như các câu trả lời khác đã chỉ ra, bộ nhớ cache là tạm thời: nó được gán cho các ứng dụng nếu cần, chính xác là bộ nhớ "miễn phí"; không có sự khác biệt giữa hai điều này liên quan đến điều này.

Hãy nhìn theo cách này: hệ thống sử dụng một phần của miễn phí bộ nhớ trên máy tính của bạn để một cách tạm thời bộ đệm dữ liệu đọc từ đĩa để tăng tốc độ hoạt động của đĩa. Nhưng bất kể được sử dụng làm bộ đệm, bộ nhớ này vẫn được các ứng dụng sử dụng miễn phí, nghĩa là nó sẽ được gán cho ứng dụng (làm mất hiệu lực bộ đệm) nếu ứng dụng cần.

Điểm:3
lá cờ cn

RAM trống được sử dụng làm bộ đệm cho ssd của bạn theo thiết kế để tăng tốc máy tính của bạn. Nếu bạn muốn xóa bộ đệm sau mỗi x phút, bạn có thể đặt mục nhập crontab để xóa bộ đệm.

Labham Jain avatar
lá cờ id
Đó không phải là tôi muốn, tôi chỉ muốn giới hạn bộ nhớ đệm của mình ...
Boann avatar
lá cờ cn
@LabhamJain Không, bạn không.
Điểm:3
lá cờ eg

Chào mừng bạn đến với GNU/Linux!

Trong thế giới này, các hạt nhân của chúng tôi không lãng phí ram và chúng tôi không lo lắng về việc ram đang 'được sử dụng' trừ khi các ứng dụng của nó đang tranh giành các ứng dụng khác để giành lấy nó.

Những gì bạn mô tả là bình thường.

100% ram sẽ được sử dụng một cách lý tưởng trên hệ thống GNU/Linux. Những ứng dụng ram nào không cần sẽ được bộ nhớ đệm đĩa sử dụng. Bạn có muốn các hoạt động của đĩa hoạt động ở tốc độ của RAM hơn là ở tốc độ của đĩa cứng không? Vâng, bạn có được điều đó ngay bây giờ, miễn phí. Hãy tận hưởng và đừng lo lắng khi bạn thấy bộ nhớ được sử dụng bằng bộ nhớ đệm.

Điểm:0
lá cờ br

Vui lòng kiểm tra liên kết này https://www.linuxatemyram.com/, tác giả giải thích rằng những gì bạn đang thấy không phải là những gì bạn nghĩ đang diễn ra.

Điểm:0
lá cờ id

Chà, tôi đã tìm ra vấn đề của mình với đồng bộ hóa; tiếng vang 1 > /proc/sys/vm/drop_caches lệnh, tôi đã viết sai chính tả lệnh này ở đâu đó và bây giờ nếu tôi sử dụng lệnh này đúng cách thì nó sẽ xóa bộ nhớ đệm của tôi, do đó vấn đề của tôi dường như đã được giải quyết, mặc dù sẽ có nhiều câu trả lời hơn cho các tài liệu tham khảo trong tương lai và cho cộng đồng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.