nhận tín hiệu trước khi quá trình bị giết bởi OOM killer / cgroups


11

Trong cụm của chúng tôi, chúng tôi đang giới hạn các tài nguyên quy trình của mình, ví dụ như bộ nhớ ( memory.limit_in_bytes).

Tôi nghĩ rằng, cuối cùng, điều này cũng được xử lý thông qua trình diệt OOM trong nhân Linux (trông giống như nó bằng cách đọc mã nguồn ).

Có cách nào để có được tín hiệu trước khi quá trình của tôi bị giết không? (Giống như -notifytùy chọn cho SGEqsub , sẽ gửi SIGUSR1trước khi quá trình bị hủy.)

Tôi đọc về /dev/mem_notify đây nhưng tôi không có nó - ngày nay có gì khác không? Tôi cũng đọc cái này có vẻ hơi liên quan.

Tôi muốn có thể ít nhất kết xuất một dấu vết ngăn xếp nhỏ và có thể một số thông tin gỡ lỗi hữu ích khác - nhưng có lẽ tôi thậm chí có thể khôi phục bằng cách giải phóng một số bộ nhớ.

Một cách giải quyết khác mà tôi hiện đang sử dụng là tập lệnh nhỏ này thường kiểm tra xem tôi có gần (95%) đến giới hạn không và nếu có, nó sẽ gửi quy trình a SIGUSR1. Trong Bash, tôi đang bắt đầu tập lệnh này ở chế độ nền ( cgroup-mem-limit-watcher.py &) để nó theo dõi các procs khác trong cùng một nhóm và nó tự động thoát khi quá trình Bash cha mẹ chết.


Tôi không thể tìm thấy bất kỳ nguồn thẩm quyền nào, tôi cũng không thể tìm ra cách gọi kẻ giết OOM cho quy trình cụ thể bằng tay (để kiểm tra ý tưởng) , nhưng từ những gì tôi thấy có vẻ như kẻ giết người OOM chỉ đơn giản là gửi SIGTERM, vì vậy bạn phải đặt một xử lý cho tín hiệu này.
Hi-Angel

5
@ Hi-Angel: Từ mã nguồn Linux , có vẻ như nó gửi SIGKILL.
Albert

@Albert Sau khi đọc mã nguồn, tôi cũng nghĩ rằng OOM Killer sẽ trực tiếp gửi tín hiệu SIGKILL.
andy

Câu trả lời:



5

Kẻ giết người OOM không gửi SIGKILL vì nếu không nó sẽ phản tác dụng để cho chương trình có vấn đề lựa chọn tiếp tục.

Điều này có nghĩa là hoàn toàn không có cách nào để một quá trình biết khi nào nó sẽ bị giết bởi nó.

Quản lý các vấn đề như vậy thường ngụ ý sửa chữa các chương trình hoặc cấu hình của chúng. Đôi khi, tùy thuộc vào cấu hình của hệ thống, chỉ cần tăng không gian hoán đổi có thể giúp HĐH linh hoạt hơn trong việc quản lý bộ nhớ để tránh các biện pháp quyết liệt như vậy.

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.