{"id":13578742,"url":"https://github.com/hakavlad/nohang","last_synced_at":"2025-05-16T18:06:33.356Z","repository":{"id":41168852,"uuid":"136584167","full_name":"hakavlad/nohang","owner":"hakavlad","description":"A sophisticated low memory handler for Linux","archived":false,"fork":false,"pushed_at":"2024-01-28T15:00:59.000Z","size":939,"stargazers_count":1121,"open_issues_count":36,"forks_count":49,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-05-16T18:06:06.956Z","etag":null,"topics":["cgroups","oom","oom-killer","out-of-memory","psi","sigterm","zram"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hakavlad.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-06-08T07:36:50.000Z","updated_at":"2025-05-12T17:13:08.000Z","dependencies_parsed_at":"2024-01-07T21:02:41.273Z","dependency_job_id":"96995c03-2748-4051-aa5b-23d3c455c530","html_url":"https://github.com/hakavlad/nohang","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakavlad%2Fnohang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakavlad%2Fnohang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakavlad%2Fnohang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakavlad%2Fnohang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hakavlad","download_url":"https://codeload.github.com/hakavlad/nohang/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254582904,"owners_count":22095518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cgroups","oom","oom-killer","out-of-memory","psi","sigterm","zram"],"created_at":"2024-08-01T15:01:33.372Z","updated_at":"2025-05-16T18:06:33.336Z","avatar_url":"https://github.com/hakavlad.png","language":"Python","funding_links":[],"categories":["Python","others"],"sub_categories":[],"readme":"![pic](https://i.imgur.com/scXQ312.png)\n\n# nohang\n\n[![Build Status](https://travis-ci.org/hakavlad/nohang.svg?branch=master)](https://travis-ci.org/hakavlad/nohang)\n![CodeQL](https://github.com/hakavlad/nohang/workflows/CodeQL/badge.svg)\n[![Packaging status](https://repology.org/badge/tiny-repos/nohang.svg)](https://repology.org/project/nohang/versions)\n\n`nohang` package provides a highly configurable daemon for Linux which is able to correctly prevent [out of memory](https://en.wikipedia.org/wiki/Out_of_memory) (OOM) and keep system responsiveness in low memory conditions.\n\nThe package also includes additional diagnostic tools (`oom-sort`, `psi2log`, `psi-top`).\n\n## What is the problem?\n\nOOM conditions may cause [freezes](https://en.wikipedia.org/wiki/Hang_(computing)), [livelocks](https://en.wikipedia.org/wiki/Deadlock#Livelock), drop [caches](https://en.wikipedia.org/wiki/Page_cache) and processes to be killed (via sending [SIGKILL](https://en.wikipedia.org/wiki/Signal_(IPC)#SIGKILL)) instead of trying to terminate them correctly (via sending [SIGTERM](https://en.wikipedia.org/wiki/Signal_(IPC)#SIGTERM) or takes other corrective action). Some applications may crash if it's impossible to allocate memory.\n\nHere are the statements of some users:\n\n\u003e \"How do I prevent Linux from freezing when out of memory?\nToday I (accidentally) ran some program on my Linux box that quickly used a lot of memory. My system froze, became unresponsive and thus I was unable to kill the offender.\nHow can I prevent this in the future? Can't it at least keep a responsive core or something running?\"\n\n— [serverfault](https://serverfault.com/questions/390623/how-do-i-prevent-linux-from-freezing-when-out-of-memory)\n\n\u003e \"With or without swap it still freezes before the OOM killer gets run automatically. This is really a kernel bug that should be fixed (i.e. run OOM killer earlier, before dropping all disk cache). Unfortunately kernel developers and a lot of other folk fail to see the problem. Common suggestions such as disable/enable swap, buy more RAM, run less processes, set limits etc. do not address the underlying problem that the kernel's low memory handling sucks camel's balls.\"\n\n— [serverfault](https://serverfault.com/questions/390623/how-do-i-prevent-linux-from-freezing-when-out-of-memory#comment417508_390625)\n\n\u003e \"The traditional Linux OOM killer works fine in some cases, but in others it kicks in too late, resulting in the system entering a [livelock](https://en.wikipedia.org/wiki/Deadlock#Livelock) for an indeterminate period.\"\n\n— [engineering.fb.com](https://engineering.fb.com/production-engineering/oomd/)\n\nAlso look at these discussions:\n- Why are low memory conditions handled so badly? [[r/linux](https://www.reddit.com/r/linux/comments/56r4xj/why_are_low_memory_conditions_handled_so_badly/)]\n- Memory management \"more effective\" on Windows than Linux? (in preventing total system lockup) [[r/linux](https://www.reddit.com/r/linux/comments/aqd9mh/memory_management_more_effective_on_windows_than/)]\n- Let's talk about the elephant in the room - the Linux kernel's inability to gracefully handle low memory pressure [[original LKML post](https://lkml.org/lkml/2019/8/4/15) | [r/linux](https://www.reddit.com/r/linux/comments/cmg48b/lets_talk_about_the_elephant_in_the_room_the/) | [Hacker News](https://news.ycombinator.com/item?id=20620545) | [slashdot](https://linux.slashdot.org/story/19/08/06/1839206/linux-performs-poorly-in-low-ram--memory-pressure-situations-on-the-desktop) | [phoronix](https://www.phoronix.com/forums/forum/phoronix/general-discussion/1118164-yes-linux-does-bad-in-low-ram-memory-pressure-situations-on-the-desktop) | [opennet.ru](https://www.opennet.ru/opennews/art.shtml?num=51231) | [linux.org.ru](https://www.linux.org.ru/forum/talks/15151526)]\n\n## Solution\n\nUse one of the userspace OOM killers:\n- [earlyoom](https://github.com/rfjakob/earlyoom): This is a simple, stable and tiny OOM prevention daemon written in C (the best choice for emedded and old servers). It has a minimum dependencies and can work with oldest kernels. It is enabled by default on Fedora 32 Workstation (and F33 KDE).\n- [oomd](https://github.com/facebookincubator/oomd): This is a userspace OOM killer for linux systems written in C++ and developed by Facebook. This is the best choice for use in large data centers. It needs Linux 4.20+.\n- [systemd-oomd](https://man7.org/linux/man-pages/man8/systemd-oomd.service.8.html): Provided by systemd as `systemd-oomd.service` that uses cgroups-v2 and pressure stall information (PSI) to monitor and take action on processes before an OOM occurs in kernel space. It's used by default on [desktop versions of Fedora 34](https://fedoraproject.org/wiki/Changes/EnableSystemdOomd).\n- [low-memory-monitor](https://gitlab.freedesktop.org/hadess/low-memory-monitor/): There's a [project announcement](http://www.hadess.net/2019/08/low-memory-monitor-new-project.html).\n- [psi-monitor](https://github.com/endlessm/eos-boot-helper/tree/master/psi-monitor): It's used by default on [Endless OS](https://endlessos.com/).\n- `nohang`: nohang is earlyoom on steroids and has many useful features, see below. Maybe this is a good choice for modern desktops and servers if you need fine-tuning. Previously it was used by default on [Garuda Linux](https://garudalinux.org/).\n\nUse these tools to improve responsiveness during heavy swapping:\n- MGLRU patchset is merged in Linux 6.1. Setting `min_ttl_ms` \u003e 50 can help you.\n- [le9-patch](https://github.com/hakavlad/le9-patch): [PATCH] mm: Protect clean file pages under memory pressure to prevent thrashing, avoid high latency and prevent livelock in near-OOM conditions. It's kernel-side solution that can fix the OOM killer behavior.\n- [prelockd](https://github.com/hakavlad/prelockd): Lock executables and shared libraries in memory to improve system responsiveness under low-memory conditions.\n- [memavaild](https://github.com/hakavlad/memavaild): Keep amount of available memory by evicting memory of selected cgroups into swap space.\n- [uresourced](https://gitlab.freedesktop.org/benzea/uresourced): This daemon will give resource allocations to active graphical users. It's [enabled by default](https://fedoraproject.org/wiki/Changes/Reserve_resources_for_active_user_WS) on Fedora 33 Workstation.\n\nOf course, you can also [download more RAM](https://downloadmoreram.com/), tune [virtual memory](https://www.kernel.org/doc/Documentation/sysctl/vm.txt), use [zram](https://www.kernel.org/doc/Documentation/blockdev/zram.txt)/[zswap](https://www.kernel.org/doc/Documentation/vm/zswap.txt) and use [limits](https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html) for cgroups.\n\n## Features\n\n- Sending the SIGTERM signal is default corrective action. If the victim does not respond to SIGTERM, with a further drop in the level of memory it gets SIGKILL;\n- Customizing victim selection: impact on the badness of processes via matching their names, cgroups, exe realpathes, environs, cmdlines and euids with specified regular expressions;\n- Customizing corrective actions: if the name or control group of the victim matches a certain regex pattern, you can run any command instead of sending the SIGTERM signal (the default corrective action) to the victim. For example:\n    - `systemctl restart foo`;\n    - `kill -INT $PID` (you can override the signal sent to the victim, $PID will be replaced by the victim's PID).\n- GUI notifications:\n    - Notification of corrective actions taken and displaying the name and PID of the victim;\n    - Low memory warnings.\n- [zram](https://www.kernel.org/doc/Documentation/blockdev/zram.txt) support (`mem_used_total` as a trigger);\n- [PSI](https://lwn.net/Articles/759658/) ([pressure stall information](https://facebookmicrosites.github.io/psi/)) support;\n- Optional checking kernel messages for OOM events;\n- Easy setup with configuration files ([nohang.conf](https://github.com/hakavlad/nohang/blob/master/conf/nohang/nohang.conf.in), [nohang-desktop.conf](https://github.com/hakavlad/nohang/blob/master/conf/nohang/nohang-desktop.conf.in)).\n\n## Demo\n\n`nohang` prevents Out Of Memory with GUI notifications:\n\n- [https://youtu.be/ChTNu9m7uMU](https://youtu.be/ChTNu9m7uMU) – just old demo without swap space.\n- [https://youtu.be/UCwZS5uNLu0](https://youtu.be/UCwZS5uNLu0) – running multiple fast memory hogs at the same time without swap space.\n- [https://youtu.be/PLVWgNrVNlc](https://youtu.be/PLVWgNrVNlc) – opening multiple chromium tabs with 2.3 GiB memory and 1.8 GiB swap space on zram.\n\n## Requirements\n\nFor basic usage:\n- `Linux` (\u003e= 3.14, since `MemAvailable` appeared in `/proc/meminfo`)\n- `Python` (\u003e= 3.3)\n\nTo respond to `PSI` metrics (optional):\n- `Linux` (\u003e= 4.20) with `CONFIG_PSI=y`\n\nTo show GUI notifications (optional):\n- [notification server](https://wiki.archlinux.org/index.php/Desktop_notifications#Notification_servers) (most of desktop environments use their own implementations)\n- `libnotify` (Arch Linux, Fedora, openSUSE) or `libnotify-bin` (Debian GNU/Linux, Ubuntu)\n- `sudo` if nohang started with UID=0.\n\n## Memory and CPU usage\n\n- VmRSS is about 10–14 MiB instead of the settings, about 10–11 MiB by default (with Python \u003c= 3.8), about 16–17 MiB with Python 3.9.\n- CPU usage depends on the level of available memory and monitoring intensity.\n\n## Warnings\n\n- the daemon runs with super-user privileges and has full access to all private memory of all processes and sensitive user data;\n- the daemon does not forbid you to shoot yourself in the foot: with some settings, unwanted killings of processes can occur;\n- the daemon is not a panacea: there are no universal settings that reliably protect against all types of threats.\n\n## Known problems\n\n- The documentation is terrible.\n- The ZFS ARC cache is memory-reclaimable, like the Linux buffer cache. However, in contrast to the buffer cache, it currently does not count to MemAvailable (see [openzfs/zfs#10255](https://github.com/openzfs/zfs/issues/10255)). See also https://github.com/rfjakob/earlyoom/pull/191 and https://github.com/hakavlad/nohang/issues/89.\n- Linux kernels without `CONFIG_CGROUP_CPUACCT=y` ([linux-ck](https://wiki.archlinux.org/index.php/Linux-ck), for example) provide incorrect PSI metrics, see [issue](https://github.com/hakavlad/nohang/issues/25#issuecomment-643716504).\n\n## nohang vs nohang-desktop\n\n`nohang` comes with two configs: `nohang.conf` and `nohang-desktop.conf`. `nohang` comes with two systemd service unit files: `nohang.service` and `nohang-desktop.service`. Choose one.\n\n- `nohang.conf` provides vanilla default settings without PSI checking enabled, without any badness correction and without GUI notifications enabled.\n- `nohang-desktop.conf` provides default settings optimized for desktop usage.\n\n## How to install\n\n#### To install on [Fedora](https://src.fedoraproject.org/rpms/nohang/):\n\nOrphaned for 6+ weeks, not available.\n\n#### To install on RHEL 7 and RHEL 8:\n\nnohang is avaliable in [EPEL repos](https://fedoraproject.org/wiki/EPEL).\n```bash\nsudo yum install nohang\nsudo systemctl enable nohang.service\nsudo systemctl start nohang.service\n```\nTo enable PSI on RHEL 8 pass `psi=1` to kernel boot cmdline.\n\n#### For Arch Linux there's an [AUR package](https://aur.archlinux.org/packages/nohang-git/)\n\nUse your favorite [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers). For example,\n```bash\nyay -S nohang-git\nsudo systemctl enable --now nohang-desktop.service\n```\n\n#### To install on Ubuntu 20.04/20.10\n\nTo install from [PPA](https://launchpad.net/~oibaf/+archive/ubuntu/test/):\n```bash\nsudo add-apt-repository ppa:oibaf/test\nsudo apt update\nsudo apt install nohang\nsudo systemctl enable --now nohang-desktop.service\n```\n\n#### To install on Debian and Ubuntu-based systems:\n\nOutdated and buggy nohang v0.1 release was packaged for [Debian 11](https://packages.debian.org/bullseye/source/nohang) and [Ubuntu 20.10](https://packages.ubuntu.com/source/groovy/nohang).\n\nIt's easy to build a deb package with the latest git snapshot. Install build dependencies:\n```bash\nsudo apt install make fakeroot\n```\n\nClone the latest git snapshot and run the build script to build the package:\n```bash\ngit clone https://github.com/hakavlad/nohang.git \u0026\u0026 cd nohang\ndeb/build.sh\n```\n\nInstall the package:\n```bash\nsudo apt install --reinstall ./deb/package.deb\n```\n\nStart and enable `nohang.service` or `nohang-desktop.service` after installing the package:\n```bash\nsudo systemctl enable --now nohang-desktop.service\n```\n\n#### To install on Gentoo and derivatives (e.g. Funtoo):\n\nAdd the [eph kit](https://git.sr.ht/~happy_shredder/eph_kit) overlay, for example using layman or as a local repository.\nThen update your repos:\n\n```bash\nsudo layman -S # if added via layman\nsudo emerge --sync # local repo on Gentoo\nsudo ego sync # local repo on Funtoo\n```\n\nInstall:\n\n```bash\nsudo emerge -a nohang\n```\n\nStart the service:\n\n```bash\nsudo rc-service nohang-desktop start\n```\n\nOptionally add to startup:\n\n```bash\nsudo rc-update add nohang-desktop default\n```\n\n#### To install the latest version on any distro:\n```bash\ngit clone https://github.com/hakavlad/nohang.git \u0026\u0026 cd nohang\nsudo make install\n```\n\nConfig files will be located in `/usr/local/etc/nohang/`. To enable and start unit without GUI notifications:\n```bash\nsudo systemctl enable --now nohang.service\n```\n\nTo enable and start unit with GUI notifications:\n```bash\nsudo systemctl enable --now nohang-desktop.service\n```\n\nOn systems with OpenRC:\n```bash\nsudo make install-openrc\n```\n\nTo uninstall:\n```bash\nsudo make uninstall\n```\n\n## Command line options\n\n```\n./nohang -h\nusage: nohang [-h|--help] [-v|--version] [-m|--memload]\n              [-c|--config CONFIG] [--check] [--monitor] [--tasks]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --version         show version of installed package and exit\n  -m, --memload         consume memory until 40 MiB (MemAvailable + SwapFree)\n                        remain free, and terminate the process\n  -c CONFIG, --config CONFIG\n                        path to the config file. This should only be used\n                        with one of the following options:\n                        --monitor, --tasks, --check\n  --check               check and show the configuration and exit. This should\n                        only be used with -c/--config CONFIG option\n  --monitor             start monitoring. This should only be used with\n                        -c/--config CONFIG option\n  --tasks               show tasks state and exit. This should only be used\n                        with -c/--config CONFIG option\n```\n\n## How to configure\n\nThe program can be configured by editing the config file. The configuration includes the following sections:\n\n0. Checking kernel messages for OOM events;\n1. Common zram settings;\n2. Common PSI settings;\n3. Poll rate;\n4. Warnings and notifications;\n5. Soft threshold;\n6. Hard threshold;\n7. Customize victim selection;\n8. Customize soft corrective actions;\n9. Misc settings;\n10. Verbosity, debug, logging.\n\nJust read the description of the parameters and edit the values. Please restart the daemon to apply the changes.\n\n## How to test nohang\n\n- The safest way is to run `nohang --memload`. This causes memory consumption, and the process will exits before OOM occurs.\n- Another way is to run `tail /dev/zero`. This causes fast memory comsumption and causes OOM at the end.\n\nIf testing occurs while `nohang` is running, these processes should be terminated before OOM occurs.\n\n## Tasks state\n\nRun `sudo nohang -c/--config CONFIG --tasks` to see the table of prosesses with their badness values, oom_scores, names, UIDs etc.\n\n\u003cdetails\u003e\n \u003csummary\u003eOutput example\u003c/summary\u003e\n\n```\nConfig: /etc/nohang/nohang.conf\n###################################################################################################################\n#    PID     PPID  badness  oom_score  oom_score_adj        eUID  S  VmSize  VmRSS  VmSwap  Name             CGroup\n#-------  -------  -------  ---------  -------------  ----------  -  ------  -----  ------  ---------------  --------\n#    336        1        1          1              0           0  S      85     25       0  systemd-journal  /system.slice/systemd-journald.service\n#    383        1        0          0          -1000           0  S      46      5       0  systemd-udevd    /system.slice/systemd-udevd.service\n#    526     2238        7          7              0        1000  S     840     96       0  kate             /user.slice/user-1000.slice/session-7.scope\n#    650        1        3          3              0        1000  S     760     50       0  kate             /user.slice/user-1000.slice/session-7.scope\n#    731        1        0          0              0         100  S     126      4       0  systemd-timesyn  /system.slice/systemd-timesyncd.service\n#    756        1        0          0              0         105  S     181      3       0  rtkit-daemon     /system.slice/rtkit-daemon.service\n#    759        1        0          0              0           0  S     277      7       0  accounts-daemon  /system.slice/accounts-daemon.service\n#    761        1        0          0              0           0  S     244      3       0  rsyslogd         /system.slice/rsyslog.service\n#    764        1        0          0           -900         108  S      45      5       0  dbus-daemon      /system.slice/dbus.service\n#    805        1        0          0              0           0  S      46      5       0  systemd-logind   /system.slice/systemd-logind.service\n#    806        1        0          0              0           0  S      35      3       0  irqbalance       /system.slice/irqbalance.service\n#    813        1        0          0              0           0  S      29      3       0  cron             /system.slice/cron.service\n#    814        1       11         11              0           0  S     176    160       0  memlockd         /system.slice/memlockd.service\n#    815        1        0          0            -10           0  S      32      9       0  python3          /fork.slice/fork-bomb.slice/fork-bomb-killer.slice/fork-bomb-killer.service\n#    823        1        0          0              0           0  S      25      4       0  smartd           /system.slice/smartd.service\n#    826        1        0          0              0         113  S      46      3       0  avahi-daemon     /system.slice/avahi-daemon.service\n#    850      826        0          0              0         113  S      46      0       0  avahi-daemon     /system.slice/avahi-daemon.service\n#    868        1        0          0              0           0  S     281      8       0  polkitd          /system.slice/polkit.service\n#    903        1        1          1              0           0  S    4094     16       0  stunnel4         /system.slice/stunnel4.service\n#    940        1        0          0           -600           0  S      39     10       0  python3          /nohang.slice/nohang.service\n#   1014        1        0          0              0          13  S      22      2       0  obfs-local       /system.slice/obfs-local.service\n#   1015        1        0          0              0        1000  S      36      4       0  ss-local         /system.slice/ss-local.service\n#   1023        1        0          0              0         116  S      33      2       0  dnscrypt-proxy   /system.slice/dnscrypt-proxy.service\n#   1029        1        1          1              0         119  S    4236     16       0  privoxy          /system.slice/privoxy.service\n#   1035        1        0          0              0           0  S     355      6       0  lightdm          /system.slice/lightdm.service\n#   1066        1        0          0              0           0  S      45      7       0  wpa_supplicant   /system.slice/wpa_supplicant.service\n#   1178        1        0          0              0           0  S      14      2       0  agetty           /system.slice/system-getty.slice/getty@tty1.service\n#   1294        1        0          0          -1000           0  S       4      1       0  watchdog         /system.slice/watchdog.service\n#   1632        1        1          1              0        1000  S    1391     22       0  pulseaudio       /user.slice/user-1000.slice/session-2.scope\n#   1689     1632        0          0              0        1000  S     125      5       0  gconf-helper     /user.slice/user-1000.slice/session-2.scope\n#   1711        1        0          0              0           0  S     367      8       0  udisksd          /system.slice/udisks2.service\n#   1819        1        0          0              0           0  S     304      8       0  upowerd          /system.slice/upower.service\n#   1879        1        0          0              0        1000  S      64      7       0  systemd          /user.slice/user-1000.slice/user@1000.service/init.scope\n#   1880     1879        0          0              0        1000  S     229      2       0  (sd-pam)         /user.slice/user-1000.slice/user@1000.service/init.scope\n#   1888        1        0          0              0           0  S      14      2       0  agetty           /system.slice/system-getty.slice/getty@tty2.service\n#   1889        1        0          0              0           0  S      14      2       0  agetty           /system.slice/system-getty.slice/getty@tty3.service\n#   1890        1        0          0              0           0  S      14      2       0  agetty           /system.slice/system-getty.slice/getty@tty4.service\n#   1891        1        0          0              0           0  S      14      2       0  agetty           /system.slice/system-getty.slice/getty@tty5.service\n#   1892        1        0          0              0           0  S      14      2       0  agetty           /system.slice/system-getty.slice/getty@tty6.service\n#   1893     1035       14         14              0           0  R     623    208       0  Xorg             /system.slice/lightdm.service\n#   1904        1        0          0              0         111  S      64      7       0  systemd          /user.slice/user-111.slice/user@111.service/init.scope\n#   1905     1904        0          0              0         111  S     229      2       0  (sd-pam)         /user.slice/user-111.slice/user@111.service/init.scope\n#   1916     1904        0          0              0         111  S      44      3       0  dbus-daemon      /user.slice/user-111.slice/user@111.service/dbus.service\n#   1920        1        0          0              0         111  S     215      5       0  at-spi2-registr  /user.slice/user-111.slice/session-c2.scope\n#   1922     1904        0          0              0         111  S     278      6       0  gvfsd            /user.slice/user-111.slice/user@111.service/gvfs-daemon.service\n#   1935     1035        0          0              0           0  S     238      6       0  lightdm          /user.slice/user-1000.slice/session-7.scope\n#   1942        1        0          0              0        1000  S     210      9       0  gnome-keyring-d  /user.slice/user-1000.slice/session-7.scope\n#   1944     1935        1          1              0        1000  S     411     21       0  mate-session     /user.slice/user-1000.slice/session-7.scope\n#   1952     1879        0          0              0        1000  S      45      5       0  dbus-daemon      /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   1981     1944        0          0              0        1000  S      11      0       0  ssh-agent        /user.slice/user-1000.slice/session-7.scope\n#   1984     1879        0          0              0        1000  S     278      6       0  gvfsd            /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\n#   1990     1879        0          0              0        1000  S     341      5       0  at-spi-bus-laun  /user.slice/user-1000.slice/user@1000.service/at-spi-dbus-bus.service\n#   1995     1990        0          0              0        1000  S      44      4       0  dbus-daemon      /user.slice/user-1000.slice/user@1000.service/at-spi-dbus-bus.service\n#   1997     1879        0          0              0        1000  S     215      5       0  at-spi2-registr  /user.slice/user-1000.slice/user@1000.service/at-spi-dbus-bus.service\n#   2000     1879        0          0              0        1000  S     184      5       0  dconf-service    /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2009     1944        2          2              0        1000  S    1308     35       0  mate-settings-d  /user.slice/user-1000.slice/session-7.scope\n#   2013     1944        2          2              0        1000  S     436     32       0  marco            /user.slice/user-1000.slice/session-7.scope\n#   2024     1944        4          4              0        1000  S    1258     55       0  caja             /user.slice/user-1000.slice/session-7.scope\n#   2032        1        1          1              0        1000  S     333     18       0  msd-locate-poin  /user.slice/user-1000.slice/session-7.scope\n#   2033     1879        0          0              0        1000  S     348     11       0  gvfs-udisks2-vo  /user.slice/user-1000.slice/user@1000.service/gvfs-udisks2-volume-monitor.service\n#   2036     1944        1          1              0        1000  S     331     17       0  polkit-mate-aut  /user.slice/user-1000.slice/session-7.scope\n#   2038     1944        5          5              0        1000  S     682     78       0  mate-panel       /user.slice/user-1000.slice/session-7.scope\n#   2041     1944        2          2              0        1000  S     514     31       0  nm-applet        /user.slice/user-1000.slice/session-7.scope\n#   2046     1944        1          1              0        1000  S     495     25       0  mate-power-mana  /user.slice/user-1000.slice/session-7.scope\n#   2047     1944        2          2              0        1000  S     692     32       0  mate-volume-con  /user.slice/user-1000.slice/session-7.scope\n#   2049     1944        3          3              0        1000  S     548     44       0  mate-screensave  /user.slice/user-1000.slice/session-7.scope\n#   2059     1879        0          0              0        1000  S     263      5       0  gvfs-goa-volume  /user.slice/user-1000.slice/user@1000.service/gvfs-goa-volume-monitor.service\n#   2076     1879        0          0              0        1000  S     352      7       0  gvfsd-trash      /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\n#   2077     1879        0          0              0        1000  S     362      7       0  gvfs-afc-volume  /user.slice/user-1000.slice/user@1000.service/gvfs-afc-volume-monitor.service\n#   2087     1879        0          0              0        1000  S     263      5       0  gvfs-mtp-volume  /user.slice/user-1000.slice/user@1000.service/gvfs-mtp-volume-monitor.service\n#   2093     1879        0          0              0        1000  S     275      6       0  gvfs-gphoto2-vo  /user.slice/user-1000.slice/user@1000.service/gvfs-gphoto2-volume-monitor.service\n#   2106     1879        3          3              0        1000  S     544     42       0  wnck-applet      /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2108     1879        1          1              0        1000  S     396     21       0  notification-ar  /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2112     1879        1          1              0        1000  S     499     25       0  mate-sensors-ap  /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2113     1879        1          1              0        1000  S     390     21       0  mate-brightness  /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2114     1879        1          1              0        1000  S     534     22       0  mate-multiload-  /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2118     1879        2          2              0        1000  S     547     29       0  clock-applet     /user.slice/user-1000.slice/user@1000.service/dbus.service\n#   2152     1879        1          1              0        1000  S     218     22       0  gvfsd-metadata   /user.slice/user-1000.slice/user@1000.service/gvfs-metadata.service\n#   2206        1        3          3              0         110  S     106     48       0  tor              /system.slice/system-tor.slice/tor@default.service\n#   2229        1        3          3              0        1000  S     999     42       0  kactivitymanage  /user.slice/user-1000.slice/session-7.scope\n#   2238        1        0          0              0        1000  S     150      9       0  kdeinit5         /user.slice/user-1000.slice/session-7.scope\n#   2239     2238        3          3              0        1000  S     648     41       0  klauncher        /user.slice/user-1000.slice/session-7.scope\n#   3959        1        1          1              0           0  S     615     18       0  NetworkManager   /system.slice/NetworkManager.service\n#   3977     3959        0          0              0           0  S      20      4       0  dhclient         /system.slice/NetworkManager.service\n#   5626     1879        0          0              0        1000  S     355      7       0  gvfsd-network    /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\n#   5637     1879        1          1              0        1000  S     623     14       0  gvfsd-smb-brows  /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\n#   6296     1879        0          0              0        1000  S     435      7       0  gvfsd-dnssd      /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\n#  11129     1879        3          3              0        1000  S     597     42       0  kded5            /user.slice/user-1000.slice/user@1000.service/dbus.service\n#  11136     1879        2          2              0        1000  S     639     39       0  kuiserver5       /user.slice/user-1000.slice/user@1000.service/dbus.service\n#  11703     1879        3          3              0        1000  S     500     45       0  mate-system-mon  /user.slice/user-1000.slice/user@1000.service/dbus.service\n#  16798     1879        0          0              0        1000  S     346     10       0  gvfsd-http       /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\n#  18133        1        3          3              0        1000  S     760     49       0  kate             /user.slice/user-1000.slice/session-7.scope\n#  18144     2038        1          1              0        1000  S     301     23       0  lxterminal       /user.slice/user-1000.slice/session-7.scope\n#  18147    18144        0          0              0        1000  S      14      2       0  gnome-pty-helpe  /user.slice/user-1000.slice/session-7.scope\n#  18148    18144        1          1              0        1000  S      42     26       0  bash             /user.slice/user-1000.slice/session-7.scope\n#  18242     2238        1          1              0        1000  S     194     14       0  file.so          /user.slice/user-1000.slice/session-7.scope\n#  18246    18148        0          0              0           0  S      54      4       0  sudo             /user.slice/user-1000.slice/session-7.scope\n#  19003        1        0          0              0           0  S     310     12       0  packagekitd      /system.slice/packagekit.service\n#  26993     2038       91         91              0        1000  S    3935   1256       0  firefox-esr      /user.slice/user-1000.slice/session-7.scope\n#  27275    26993      121        121              0        1000  S    3957   1684       0  Web Content      /user.slice/user-1000.slice/session-7.scope\n#  30374        1        1          1              0        1000  S     167     14       0  VBoxXPCOMIPCD    /user.slice/user-1000.slice/session-7.scope\n#  30380        1        2          2              0        1000  S     958     27       0  VBoxSVC          /user.slice/user-1000.slice/session-7.scope\n#  30549    30380       86         86              0        1000  S    5332   1192       0  VirtualBox       /user.slice/user-1000.slice/session-7.scope\n#  30875        1        1          1              0        1000  S     345     26       0  leafpad          /user.slice/user-1000.slice/session-7.scope\n#  32689        1        7          7              0        1000  S     896     99       0  dolphin          /user.slice/user-1000.slice/session-7.scope\n###################################################################################################################\nProcess with highest badness (found in 55 ms):\n  PID: 27275, Name: Web Content, badness: 121\n```\n\u003c/details\u003e\n\n\n## Logging\n\nTo view the latest entries in the log (for systemd users):\n```bash\nsudo journalctl -eu nohang.service\n\n#### or\n\nsudo journalctl -eu nohang-desktop.service\n```\n\nYou can also enable `separate_log` in the config to logging in `/var/log/nohang/nohang.log`.\n\n## oom-sort\n\n`oom-sort` is an additional diagnostic tool that will be installed with `nohang` package. It sorts the processes in descending order of their `oom_score` and also displays `oom_score_adj`, `Uid`, `Pid`, `Name`, `VmRSS`, `VmSwap` and optionally `cmdline`. Run `oom-sort --help` for more info. Man page: [oom-sort.manpage.md](docs/oom-sort.manpage.md).\n\nUsage:\n\n```bash\noom-sort\n```\n\n\u003cdetails\u003e\n \u003csummary\u003eOutput example\u003c/summary\u003e\n\n```\noom_score oom_score_adj  UID   PID Name            VmRSS   VmSwap   cmdline\n--------- ------------- ---- ----- --------------- ------- -------- -------\n       23             0    0   964 Xorg               58 M     22 M /usr/libexec/Xorg -background none :0 vt01 -nolisten tcp -novtswitch -auth /var/run/lxdm/lxdm-:0.auth\n       13             0 1000  1365 pcmanfm            38 M     10 M pcmanfm --desktop --profile LXDE\n       10             0 1000  1408 dnfdragora-upda     9 M     27 M /usr/bin/python3 /bin/dnfdragora-updater\n        5             0    0   822 firewalld           0 M     19 M /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid\n        5             0 1000  1364 lxpanel            18 M      2 M lxpanel --profile LXDE\n        5             0 1000  1685 nm-applet           6 M     12 M nm-applet\n        5             0 1000  1862 lxterminal         16 M      2 M lxterminal\n        4             0  996   890 polkitd             8 M      6 M /usr/lib/polkit-1/polkitd --no-debug\n        4             0 1000  1703 pnmixer             6 M     11 M pnmixer\n        3             0    0   649 systemd-journal    10 M      1 M /usr/lib/systemd/systemd-journald\n        3             0 1000  1360 openbox             9 M      2 M openbox --config-file /home/user/.config/openbox/lxde-rc.xml\n        3             0 1000  1363 notification-da     3 M     10 M /usr/libexec/notification-daemon\n        2             0 1000  1744 clipit              5 M      3 M clipit\n        2             0 1000  2619 python3             9 M      0 M python3 /bin/oom-sort\n        1             0    0   809 rsyslogd            3 M      3 M /usr/sbin/rsyslogd -n\n        1             0    0   825 udisksd             2 M      2 M /usr/libexec/udisks2/udisksd\n        1             0    0   873 sssd_nss            4 M      1 M /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files\n        1             0    0   876 systemd-logind      2 M      2 M /usr/lib/systemd/systemd-logind\n        1             0    0   907 abrt-dump-journ     2 M      1 M /usr/bin/abrt-dump-journal-oops -fxtD\n        1             0    0   920 NetworkManager      3 M      2 M /usr/sbin/NetworkManager --no-daemon\n        1             0 1000  1115 systemd             4 M      1 M /usr/lib/systemd/systemd --user\n        1             0 1000  1118 (sd-pam)            0 M      5 M (sd-pam)\n        1             0 1000  1366 xscreensaver        5 M      0 M xscreensaver -no-splash\n        1             0 1000  1851 gvfsd-trash         3 M      1 M /usr/libexec/gvfsd-trash --spawner :1.6 /org/gtk/gvfs/exec_spaw/0\n        1             0 1000  1969 gvfsd-metadata      6 M      0 M /usr/libexec/gvfsd-metadata\n        1             0 1000  2262 bash                5 M      0 M bash\n        0         -1000    0   675 systemd-udevd       0 M      4 M /usr/lib/systemd/systemd-udevd\n        0         -1000    0   787 auditd              0 M      1 M /sbin/auditd\n        0             0    0   807 ModemManager        0 M      1 M /usr/sbin/ModemManager\n        0             0    0   808 smartd              0 M      1 M /usr/sbin/smartd -n -q never\n        0             0    0   810 alsactl             0 M      0 M /usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main rdaemon\n        0             0    0   811 mcelog              0 M      0 M /usr/sbin/mcelog --ignorenodev --daemon --foreground\n        0             0  172   813 rtkit-daemon        0 M      0 M /usr/libexec/rtkit-daemon\n        0             0    0   814 VBoxService         0 M      1 M /usr/sbin/VBoxService -f\n        0             0    0   817 rngd                0 M      1 M /sbin/rngd -f\n        0          -900   81   818 dbus-daemon         3 M      0 M /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only\n        0             0    0   823 irqbalance          0 M      0 M /usr/sbin/irqbalance --foreground\n        0             0   70   824 avahi-daemon        0 M      0 M avahi-daemon: running [linux.local]\n        0             0    0   826 sssd                0 M      2 M /usr/sbin/sssd -i --logger=files\n        0             0  995   838 chronyd             1 M      0 M /usr/sbin/chronyd\n        0             0    0   849 gssproxy            0 M      1 M /usr/sbin/gssproxy -D\n        0             0    0   866 abrtd               0 M      2 M /usr/sbin/abrtd -d -s\n        0             0   70   870 avahi-daemon        0 M      0 M avahi-daemon: chroot helper\n        0             0    0   871 sssd_be             0 M      2 M /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files\n        0             0    0   875 accounts-daemon     0 M      1 M /usr/libexec/accounts-daemon\n        0             0    0   906 abrt-dump-journ     1 M      2 M /usr/bin/abrt-dump-journal-core -D -T -f -e\n        0             0    0   908 abrt-dump-journ     1 M      2 M /usr/bin/abrt-dump-journal-xorg -fxtD\n        0             0    0   950 crond               2 M      1 M /usr/sbin/crond -n\n        0             0    0   951 atd                 0 M      0 M /usr/sbin/atd -f\n        0             0    0   953 lxdm-binary         0 M      0 M /usr/sbin/lxdm-binary\n        0             0    0  1060 dhclient            0 M      2 M /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s3.pid -lf /var/lib/NetworkManager/dhclient-939eab05-4796-3792-af24-9f76cf53ca7f-enp0s3.lease -cf /var/lib/NetworkManager/dhclient-enp0s3.conf enp0s3\n        0             0    0  1105 lxdm-session        0 M      1 M /usr/libexec/lxdm-session\n        0             0 1000  1123 pulseaudio          0 M      3 M /usr/bin/pulseaudio --daemonize=no\n        0             0 1000  1124 lxsession           1 M      2 M /usr/bin/lxsession -s LXDE -e LXDE\n        0             0 1000  1134 dbus-daemon         2 M      0 M /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only\n        0             0 1000  1215 imsettings-daem     0 M      1 M /usr/libexec/imsettings-daemon\n        0             0 1000  1218 gvfsd               3 M      1 M /usr/libexec/gvfsd\n        0             0 1000  1223 gvfsd-fuse          0 M      1 M /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes\n        0             0 1000  1309 VBoxClient          0 M      0 M /usr/bin/VBoxClient --display\n        0             0 1000  1310 VBoxClient          0 M      0 M /usr/bin/VBoxClient --clipboard\n        0             0 1000  1311 VBoxClient          0 M      0 M /usr/bin/VBoxClient --draganddrop\n        0             0 1000  1312 VBoxClient          0 M      0 M /usr/bin/VBoxClient --display\n        0             0 1000  1313 VBoxClient          1 M      0 M /usr/bin/VBoxClient --clipboard\n        0             0 1000  1316 VBoxClient          0 M      0 M /usr/bin/VBoxClient --seamless\n        0             0 1000  1318 VBoxClient          0 M      0 M /usr/bin/VBoxClient --seamless\n        0             0 1000  1320 VBoxClient          0 M      0 M /usr/bin/VBoxClient --draganddrop\n        0             0 1000  1334 ssh-agent           0 M      0 M /usr/bin/ssh-agent /bin/sh -c exec -l bash -c \"/usr/bin/startlxde\"\n        0             0 1000  1362 lxpolkit            0 M      1 M lxpolkit\n        0             0 1000  1370 lxclipboard         0 M      1 M lxclipboard\n        0             0 1000  1373 ssh-agent           0 M      1 M /usr/bin/ssh-agent -s\n        0             0 1000  1485 agent               0 M      1 M /usr/libexec/geoclue-2.0/demos/agent\n        0             0 1000  1751 menu-cached         0 M      1 M /usr/libexec/menu-cache/menu-cached /run/user/1000/menu-cached-:0\n        0             0 1000  1780 at-spi-bus-laun     0 M      1 M /usr/libexec/at-spi-bus-launcher\n        0             0 1000  1786 dbus-daemon         1 M      0 M /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3\n        0             0 1000  1792 at-spi2-registr     1 M      1 M /usr/libexec/at-spi2-registryd --use-gnome-session\n        0             0 1000  1840 gvfs-udisks2-vo     0 M      2 M /usr/libexec/gvfs-udisks2-volume-monitor\n        0             0 1000  1863 gnome-pty-helpe     1 M      0 M gnome-pty-helper\n        0             0 1000  1864 bash                0 M      1 M bash\n        0             0    0  1899 sudo                0 M      1 M sudo -i\n        0             0    0  1901 bash                0 M      1 M -bash\n        0             0    0  1953 oomd_bin            0 M      0 M oomd_bin -f /sys/fs/cgroup/unified\n        0          -600    0  2562 python3            10 M      0 M python3 /usr/sbin/nohang --config /etc/nohang/nohang.conf\n```\n\u003c/details\u003e\n\nKthreads, zombies and Pid 1 will not be displayed.\n\n## psi-top\n\npsi-top is script that prints the PSI metrics values for every cgroup. It requires `Linux` \u003e= 4.20 with `CONFIG_PSI=y`. Man page: [psi-top.manpage.md](docs/psi-top.manpage.md).\n\n\u003cdetails\u003e\n \u003csummary\u003eOutput example\u003c/summary\u003e\n\n```\n$ psi-top\ncgroup2 mountpoint: /sys/fs/cgroup\n      avg10  avg60 avg300         avg10  avg60 avg300  cgroup2\n      -----  ----- ------         -----  ----- ------  ---------\nsome   0.00   0.21   1.56 | full   0.00   0.16   1.14  [SYSTEM_WIDE]\nsome   0.00   0.21   1.56 | full   0.00   0.16   1.14\nsome   0.00   0.15   1.11 | full   0.00   0.12   0.89  /user.slice\nsome  45.92  28.77  20.19 | full  45.05  28.17  19.56  /user.slice/user-1000.slice\nsome   1.44   4.67   9.24 | full   1.44   4.65   9.20  /user.slice/user-1000.slice/user@1000.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/pulseaudio.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/gvfs-daemon.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/dbus.socket\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/gvfs-udisks2-volume-monitor.service\nsome   0.25   1.97   4.05 | full   0.25   1.96   4.03  /user.slice/user-1000.slice/user@1000.service/xfce4-notifyd.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/init.scope\nsome   0.00   0.66   1.99 | full   0.00   0.66   1.97  /user.slice/user-1000.slice/user@1000.service/gpg-agent.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/gvfs-gphoto2-volume-monitor.service\nsome   0.93   0.75   0.20 | full   0.93   0.75   0.20  /user.slice/user-1000.slice/user@1000.service/at-spi-dbus-bus.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/gvfs-metadata.service\nsome   0.00   2.44   6.78 | full   0.00   2.43   6.74  /user.slice/user-1000.slice/user@1000.service/dbus.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/gvfs-mtp-volume-monitor.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /user.slice/user-1000.slice/user@1000.service/gvfs-afc-volume-monitor.service\nsome  44.99  28.30  19.41 | full  44.10  27.70  18.79  /user.slice/user-1000.slice/session-2.scope\nsome   0.00   0.31   0.53 | full   0.00   0.31   0.53  /init.scope\nsome   7.25  11.40  13.34 | full   7.23  11.32  13.24  /system.slice\nsome   0.00   0.01   0.02 | full   0.00   0.01   0.02  /system.slice/systemd-udevd.service\nsome   0.00   0.58   1.55 | full   0.00   0.58   1.55  /system.slice/cronie.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/sys-kernel-config.mount\nsome   0.00   0.22   0.35 | full   0.00   0.22   0.35  /system.slice/polkit.service\nsome   0.00   0.06   0.20 | full   0.00   0.06   0.20  /system.slice/rtkit-daemon.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/sys-kernel-debug.mount\nsome   0.00   0.14   0.62 | full   0.00   0.14   0.62  /system.slice/accounts-daemon.service\nsome   7.86  11.48  12.56 | full   7.84  11.42  12.51  /system.slice/lightdm.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/ModemManager.service\nsome   0.00   1.82   5.47 | full   0.00   1.81   5.43  /system.slice/systemd-journald.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/dev-mqueue.mount\nsome   0.00   1.64   4.07 | full   0.00   1.64   4.07  /system.slice/NetworkManager.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/tmp.mount\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/lvm2-lvmetad.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/dev-disk-by\\x2duuid-5d7355c0\\x2dc131\\x2d40c5\\x2d8541\\x2d1e04ad7c8b8d.swap\nsome   0.00   0.09   0.11 | full   0.00   0.09   0.11  /system.slice/upower.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/udisks2.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/dev-hugepages.mount\nsome   0.00   0.27   0.49 | full   0.00   0.27   0.48  /system.slice/dbus.service\nsome   0.00   0.00   0.00 | full   0.00   0.00   0.00  /system.slice/system-getty.slice\nsome   0.00   0.12   0.20 | full   0.00   0.12   0.20  /system.slice/avahi-daemon.service\nsome   0.00   0.18   0.30 | full   0.00   0.18   0.30  /system.slice/systemd-logind.service\n```\n\u003c/details\u003e\n\n## psi2log\n\npsi2log is a CLI tool that can check and log PSI metrics from specified target. It requires `Linux` \u003e= 4.20 with `CONFIG_PSI=y`. Man page: [psi2log.manpage.md](docs/psi2log.manpage.md).\n\n\u003cdetails\u003e\n \u003csummary\u003eOutput example\u003c/summary\u003e\n\n```\n$ psi2log\nStarting psi2log\ntarget: SYSTEM_WIDE\nperiod: 2\n------------------------------------------------------------------------------------------------------------------\n some cpu pressure   || some memory pressure | full memory pressure ||  some io pressure    |  full io pressure\n---------------------||----------------------|----------------------||----------------------|---------------------\n avg10  avg60 avg300 ||  avg10  avg60 avg300 |  avg10  avg60 avg300 ||  avg10  avg60 avg300 |  avg10  avg60 avg300\n------ ------ ------ || ------ ------ ------ | ------ ------ ------ || ------ ------ ------ | ------ ------ ------\n  0.13   0.26   0.08 ||   3.36  10.31   3.47 |   2.68   7.69   2.56 ||  20.24  26.90   8.60 |  18.80  23.16   7.33\n  0.11   0.25   0.08 ||   2.75   9.97   3.45 |   2.20   7.44   2.54 ||  18.38  26.34   8.61 |  17.21  22.73   7.35\n  0.09   0.25   0.07 ||   2.25   9.65   3.43 |   1.80   7.20   2.52 ||  15.05  25.48   8.55 |  14.09  21.99   7.30\n  0.07   0.24   0.07 ||   1.84   9.33   3.40 |   1.47   6.96   2.51 ||  13.05  24.78   8.52 |  12.26  21.40   7.28\n^C\nPeak values:  avg10  avg60 avg300\n-----------  ------ ------ ------\nsome cpu       0.13   0.26   0.08\n-----------  ------ ------ ------\nsome memory    3.36  10.31   3.47\nfull memory    2.68   7.69   2.56\n-----------  ------ ------ ------\nsome io       20.24  26.90   8.61\nfull io       18.80  23.16   7.35\n$ psi2log -t /user.slice -l pm.log\nStarting psi2log\ntarget: /user.slice\nperiod: 2\nlog file: pm.log\ncgroup2 mountpoint: /sys/fs/cgroup\n------------------------------------------------------------------------------------------------------------------\n some cpu pressure   || some memory pressure | full memory pressure ||  some io pressure    |  full io pressure\n---------------------||----------------------|----------------------||----------------------|---------------------\n avg10  avg60 avg300 ||  avg10  avg60 avg300 |  avg10  avg60 avg300 ||  avg10  avg60 avg300 |  avg10  avg60 avg300\n------ ------ ------ || ------ ------ ------ | ------ ------ ------ || ------ ------ ------ | ------ ------ ------\n 28.32  11.97   3.03 ||   0.00   1.05   1.65 |   0.00   0.85   1.33 ||   0.55   7.79   7.21 |   0.54   7.52   6.80\n 29.53  12.72   3.25 ||   0.00   1.01   1.64 |   0.00   0.82   1.32 ||   0.81   7.60   7.17 |   0.44   7.27   6.76\n 29.80  13.32   3.44 ||   0.00   0.98   1.63 |   0.00   0.79   1.31 ||   0.66   7.35   7.12 |   0.36   7.03   6.71\n 29.83  13.86   3.62 ||   0.00   0.95   1.62 |   0.00   0.77   1.30 ||   0.54   7.11   7.08 |   0.30   6.80   6.66\n 29.86  14.39   3.80 ||   0.00   0.91   1.60 |   0.00   0.74   1.29 ||   0.44   6.88   7.03 |   0.24   6.58   6.62\n 30.07  14.94   3.99 ||   0.00   0.88   1.59 |   0.00   0.72   1.28 ||   0.36   6.65   6.98 |   0.20   6.36   6.57\n^C\nPeak values:  avg10  avg60 avg300\n-----------  ------ ------ ------\nsome cpu      30.07  14.94   3.99\n-----------  ------ ------ ------\nsome memory    0.00   1.05   1.65\nfull memory    0.00   0.85   1.33\n-----------  ------ ------ ------\nsome io        0.81   7.79   7.21\nfull io        0.54   7.52   6.80\n```\n\u003c/details\u003e\n\n## Contribution\n\n- Use cases, feature requests and any questions are [welcome](https://github.com/hakavlad/nohang/issues).\n- Pull requests in `dev` branch are welcome.\n\n## Documentation\n\n- [nohang.manpage.md](docs/nohang.manpage.md)\n- [oom-sort.manpage.md](docs/oom-sort.manpage.md)\n- [psi2log.manpage.md](docs/psi2log.manpage.md)\n- [psi-top.manpage.md](docs/psi-top.manpage.md)\n- [FAQ.ru.md](docs/FAQ.ru.md)\n- [CHANGELOG.md](CHANGELOG.md)\n\n## License\n\nThis project is licensed under the terms of the [MIT license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhakavlad%2Fnohang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhakavlad%2Fnohang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhakavlad%2Fnohang/lists"}