Thông điệp Out of Memory: hy sinh con là gì?


20

Máy tính của tôi gần đây đã hết bộ nhớ (một hậu quả không mong muốn của việc biên dịch phần mềm trong khi làm việc với các bộ dữ liệu GIS lớn). Trong nhật ký hệ thống chi tiết cách xử lý với điều kiện OOM là dòng sau:

Out of memory: Kill process 7429 (java) score 259 or sacrifice child

Đó là or sacrifice childvề cái gì? Chắc chắn đó không phải là một số nghi thức đen tối để giữ cho mọi thứ diễn ra?

Câu trả lời:


8

Từ các tệp nguồn tôi tìm thấy oom_kill.c , OOM Killer, sau khi thông báo đó được viết trong nhật ký hệ thống, kiểm tra con của quy trình được xác định và đánh giá nếu có thể giết một trong số chúng thay cho chính quá trình đó.

Ở đây một bình luận trích xuất từ ​​tập tin nguồn giải thích điều này:

/*
 * If any of p's children has a different mm and is eligible for kill,
 * the one with the highest oom_badness() score is sacrificed for its
 * parent.  This attempts to lose the minimal amount of work done while
 * still freeing memory.
 */

Nó cũng làm điều đó cho Firefox (Nội dung web).
neverMind9

2

Đó là nói về việc giết chết một quá trình con của quá trình được đề cử để gửi KILLtín hiệu.


2
Nhưng nó có nghĩa là gì? Có một số phương pháp mà cha mẹ có thể "hy sinh" một đứa trẻ để tự cứu mình?
Thanatos

Tôi đoán, đó chỉ là một phỏng đoán, bởi vì tất cả các quy trình đều là hậu duệ của quy trình khởi tạo Linux mà cha mẹ trong ngữ cảnh này là một quy trình Linux trong đó trẻ em là các ứng dụng khác nhau. Trong trường hợp này, quy trình Linux đang tự cứu mình bằng cách giết chết một trong những đứa con của nó.
Seamus

0

Đây là kẻ giết người Oom (hết bộ nhớ). Khi hệ thống của bạn hết bộ nhớ, nhân linux sẽ xử lý bộ nhớ còn trống. Một heuristic xác định quá trình nào là ứng cử viên tốt nhất để giải phóng bộ nhớ mà không làm hỏng hệ thống (thông thường, các quy trình thuộc sở hữu gốc không phải là ứng cử viên tốt nhất).

Thêm chi tiết tại đây: Làm thế nào kẻ giết người OOM quyết định quá trình giết đầu tiên?


4
Điều này không giải thích phần "hoặc hy sinh con" của tin nhắn, mặc dù.
Đánh dấu
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.