Làm cách nào để buộc các chương trình nhất định sống trong một dấu chân bộ nhớ nhất định mà chúng nhận thức rõ?


0

Trên máy của tôi (Linux Mint x64, trao đổi không cố ý), các chương trình như Firefox và Chrome (chạy cùng lúc, vì không may, sau đó, rất tiếc) cuối cùng lại tiêu tốn nhiều bộ nhớ hơn bất kỳ lý do nào. Và khi họ đi sai, toàn bộ máy dừng lại.

Làm cách nào để buộc một số tác vụ này bị giới hạn ở một dấu chân bộ nhớ cụ thể mà chúng hoàn toàn nhận thức được để chúng không cố gắng vượt qua dấu chân bộ nhớ tối đa của chúng?

Tôi phát ốm và mệt mỏi với các chương trình như Chrome và Firefox làm tôi khó chịu vì chúng chỉ ngẫu nhiên (từ góc độ người dùng) quyết định, "Này, tôi cần thêm bộ nhớ. Kernel, tôi cần thêm bộ nhớ!" thay vì "Này, tôi cần thêm bộ nhớ ... Crap, tôi ra ngoài. Tôi phải cắt gì đây?"

Tốt nhất tôi có thể tìm thấy, cho đến nay là cách ly Chrome và Firefox (riêng lẻ) với máy ảo trên một số máy khác có dấu chân bộ nhớ tối đa bị khóa. Nhưng, điều đó rất lãng phí, và hóa ra khủng khiếp cho những thứ như trò chơi flash, đặc biệt là những trò chơi mong đợi tăng tốc phần cứng.

Chúa chỉ biết những gì đang sử dụng rất nhiều bộ nhớ, bởi vì mỗi trình duyệt thường không có hơn 15 tab được mở. Vì vậy, đó là một sự thất vọng hơn nữa.

Làm cách nào để buộc các chương trình nhất định sống trong một dấu chân bộ nhớ nhất định mà chúng nhận thức rõ?

Mặc dù câu hỏi này có thể chỉ giới hạn ở Chrome hoặc Firefox, tôi chắc chắn có những chương trình rất lãng phí khác cần một số loại hạn chế. Vì vậy, trong khi một giải pháp khắc phục hành vi xấu của Firefox và Chrome có thể làm những gì tôi cần, thì một giải pháp tổng quát hơn thực sự là những gì tôi muốn.

Câu trả lời:


1

Bạn có thể dùng:

  • nhóm kiểm soát ( cgroups]) trên hệ điều hành chính của bạn.
  • lxcthay vì máy ảo có cgroupsđiều khiển bộ nhớ.

Để tham khảo tất cả các tùy chọn trong kernel để điều khiển bộ nhớ, bạn có thể kiểm tra ở đây .

Giải pháp này áp dụng cho bất kỳ chương trình hoặc nhóm chương trình.


0

Bạn có thể sử dụng ulimit để đặt bộ nhớ tối đa cho các quá trình được khởi chạy qua thiết bị đầu cuối hiện tại hoặc sử dụng chương trình như softlimit để khởi chạy chương trình có giới hạn bộ nhớ nhất định. Khi đạt đến giới hạn đó, việc phân bổ bộ nhớ sẽ thất bại với ENOMEM (có thể không được xử lý chính xác bởi tất cả các chương trình).

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.