oom-notifier is a program and a library used to track oom scores for Linux.
oom-notifier gets the oom score of each process by getting the /proc/<PID>/oom_score
value. As a program, it tracks
the oom scores of each process (by default) every 5 seconds and the threshold is set to 1000. If you want to change these
values, refer to the configuration header below.
But what is an oom_score
?
An oom_score
is basically a score assigned to a process by the Linux kernel which is the likelihood that a process will
be terminated in case a computer is out of memory. If a process oom score is high, it means it will be one of the first processes to be killed in case
of low memory resources. If a process oom score is low, it means it will be the least likely to be killed in case of low memory
resources.
- Any Linux-based distribution
- Python>=3.6
- pip
- Install
oom-notifier
using pip.
$ pip install oom-notifier
As a library:
import oom_notifier
oom = oom_notifier.OOM()
# to get all pids and oom scores of each process, use this:
all_oom_scores = oom.info # this is a dictionary
# to get the maximum oom score of all processes, use this:
max_oom_score = oom.max # this is also a dictionary
As a program:
$ oom-notifier # launches oom-notifier in the background
In ~/.config/oom-notifier/config.ini
:
[Main]
; this sets the threshold to where oom-notifier will trigger a notification if it passes this value
threshold = <NUMBER_HERE>
; this sets the time where oom-notifier will wait to refresh the oom-scores
wait_time = <NUMBER_HERE>
This usually means that the dbus can't contact the notification service (as, internally, dbus-python
raises an exception incase of failure).
AFAIK, most of the time the reason this happens is because the notification service isn't installed.
In XFCE:
Check if xfce4-notifyd
is running in the background.
$ ps cax | grep xfce4-notifyd
if there's no output, it means xfce4-notifyd isn't running and means it isn't started or isn't installed. If it isn't installed, you can install using your distribution's package manager.
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details