Điểm số oom kernel được tính như thế nào?


12

Đã tìm trên Google và không thể tìm thấy bất cứ điều gì giải thích cách proc/<pid>/oom_scoretính điểm. Tại sao sử dụng điểm số này thay vì chỉ sử dụng tổng bộ nhớ được sử dụng?

Câu trả lời:


18

Xem bài viết năm 2009 của Goldwyn Coleues để thực hiện tại thời điểm đó, bài viết năm 2010 của Jonathan Corbet cho những gì tôi tin là hành vi hiện tại và bài viết năm 2013 của Jonathan Corbet để biết ý tưởng về những thay đổi trong tương lai.

Từ bài viết năm 2010:

Trong bộ vá của David, các heuristic cũ () đã gần như biến mất hoàn toàn. Thay vào đó, phép tính biến thành một câu hỏi đơn giản về tỷ lệ phần trăm bộ nhớ khả dụng đang được quá trình sử dụng. Nếu toàn bộ hệ thống bị thiếu bộ nhớ thì "bộ nhớ khả dụng" là tổng của tất cả RAM và dung lượng trao đổi có sẵn cho hệ thống. Thay vào đó, nếu tình huống OOM xảy ra do cạn kiệt bộ nhớ được phép cho một nhóm cpuset / nhóm điều khiển nhất định, thì "bộ nhớ khả dụng" là tổng số tiền được phân bổ cho nhóm điều khiển đó. Một tính toán tương tự được thực hiện nếu vượt quá giới hạn áp dụng bởi chính sách bộ nhớ. Trong mỗi trường hợp, việc sử dụng bộ nhớ của quá trình được coi là tổng của bộ lưu trú của nó (số trang RAM mà nó đang sử dụng) và mức sử dụng trao đổi của nó.

Kết quả tính toán này tạo ra một con số phần trăm lần mười; một quá trình sử dụng mỗi byte của bộ nhớ có sẵn sẽ có điểm 1000, trong khi một quá trình không sử dụng bộ nhớ nào sẽ nhận được điểm 0. Có rất ít điều chỉnh heuristic cho điểm này, nhưng mã vẫn trừ một lượng nhỏ (30) từ điểm của các quy trình thuộc sở hữu gốc với quan điểm rằng chúng có giá trị hơn một chút so với quy trình do người dùng sở hữu.

Một điều chỉnh khác được áp dụng là thêm giá trị được lưu trữ trong biến oom_score_adj của mỗi tiến trình, có thể được điều chỉnh thông qua / Proc. Núm này cho phép điều chỉnh mức độ hấp dẫn của từng quy trình đối với kẻ giết người OOM trong không gian người dùng; đặt nó thành -1000 sẽ vô hiệu hóa hoàn toàn OOM giết chết, trong khi cài đặt thành +1000 tương đương với việc vẽ một mục tiêu lớn trên quy trình liên quan.


Có thể cho tất cả các quá trình có điểm 0 oom? Hiện đang khởi động một kết quả cd trực tiếp trong này.
CMCDragonkai
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.