A lightweight Linux daemon that kills processes to prevent out-of-memory crashes using Pressure Stall Information.
bustd is a lightweight Linux daemon that prevents out-of-memory system crashes by monitoring memory pressure and killing processes before the system becomes unresponsive. It uses Linux kernel Pressure Stall Information (PSI) to detect memory stalls and make intelligent decisions about which processes to terminate. The daemon is designed to be extremely resource-efficient, using minimal memory and CPU while remaining effective during memory thrashing.
Linux system administrators and users who run memory-constrained systems or servers and want to prevent out-of-memory crashes without significant overhead. It's particularly useful for embedded systems, low-resource servers, or any environment where memory reliability is critical.
Developers choose bustd for its minimal memory footprint compared to alternatives like earlyoom, its use of modern Linux PSI metrics for accurate memory pressure detection, and its reliability through features like page locking to avoid swap. It's a focused, efficient tool that does one job well with minimal system impact.
Process killer daemon for out-of-memory scenarios
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses less resident memory than alternatives like earlyoom, as demonstrated in ps output comparisons in the README, especially when compiled with musl libc.
Employs the fast sysinfo syscall instead of reading /proc/meminfo, reducing CPU overhead with adaptive sleep times, as noted in the README.
Locks all pages in memory with mlockall to avoid being swapped out during memory thrashing, ensuring daemon responsiveness under heavy load.
Leverages Linux kernel Pressure Stall Information (since v4.20) to detect memory stalls accurately, allowing configurable thresholds for proactive kills.
Notification sending and customization are listed as TODO items, so users won't receive alerts when processes are terminated.
Requires Linux kernel 4.20+ with CONFIG_PSI=y, limiting compatibility with older or differently configured systems, as stated in the building requirements.
Uses sysinfo syscall which doesn't account for cached memory, potentially leading to less accurate free RAM readings compared to /proc/meminfo, as admitted in the README.
Requires Rust toolchain and C compiler for compilation, which might be a barrier for users unfamiliar with these tools, despite prebuilt binaries being available.