Làm cách nào để đặt giới hạn bộ nhớ cho một quy trình cụ thể?


10

Tôi đã cố thực thi mpiexec -16 ...trên máy chủ RAM 384 GB, nhưng nó đã gây ra OOM Killer và bị hủy bỏ.

Làm cách nào tôi có thể đặt giới hạn bộ nhớ để mpiexecthực hiện?

Tôi biết ulimit, nhưng nó có thể ảnh hưởng đến các quá trình khác.

Cảm ơn bạn.

Câu trả lời:


9

Tôi nghĩ rằng điều này có thể được thực hiện bằng cách sử dụng cgroups:

Tạo một nhóm có tên mpigroup(hoặc bất kỳ tên nào bạn chọn) với giới hạn bộ nhớ (ví dụ: 50 GB ):

cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup

Sau đó, nếu mpiexec đã chạy, hãy đưa nó vào nhóm này:

cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)

Hoặc thực hiện mpiexectrong nhóm này:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...

Bộ memoryđiều khiển không nên là đủ : cgcreate -g memory:mpigroup?
heemayl

@heemayl nên. Tôi vừa gỡ ví dụ này trực tiếp từ wiki
muru

cài đặt được lưu trữ tại / sys / fs / cgroup / memory / và để sudo hoạt động được yêu cầu ngay cả khi nó không bị lỗi trong khi không sử dụng sudo
Aquarius Power

Tôi đã quản lý để giới hạn bộ nhớ vật lý xuống còn 2GB, hoạt động hoàn hảo, nhưng bộ nhớ ảo vẫn ở mức 8GB, nhưng điều đó hoàn toàn ổn vì trò chơi rượu sẽ chỉ sử dụng trao đổi thay vì gửi tất cả các ứng dụng linux khác để trao đổi, và điều đó đã được thực hiện Toàn bộ hệ thống hoạt động tốt hơn! cám ơn!
Sức mạnh Bảo Bì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.