STALLD(8)
π STALLD(8) β bestie edition π
okay so you found the stalld man page and honestly? good for you. it's the stalld page from the System Manager's Manual, and it's lowkey one of the most underrated little daemons out there. sit down, grab a boba, and let me tell you everything π
β¨ NAME β¨
stalld β it detects starving threads and boosts them. that's it, that's the whole job. icon behavior honestly π«Ά
πΈ SYNOPSIS πΈ
stalld [ -l ] [ -v ] [ -k ] [ -s ] [ -f ] [ -h ] [ -c cpu-list] [ -p
time-in-ns ] [ -r time-in-ns ] [ -d time-in-sec ] [ -t time-in-sec ] [
-i regexes-of-thread-names ] [ -I regexes-of-process-names ] [ -R
percentage ] [ -a cpu-list ]
π¦ DESCRIPTION π¦
so stalld is a system daemon that keeps an eye on your threads for the starvation condition. and what even IS starvation, you ask? bestie. it's when a thread just sits there on a cpu run-queue for longer than the starvation-threshold β meaning the poor thing hasn't been allowed to run for threshold seconds. the audacity.
so what does stalld do about it? it boosts that thread using the SCHED_DEADLINE policy and hands it a time period to run. and once the thread uses up that boost period, it gets returned to its original scheduling policy like nothing ever happened. main character rescue mission, no cap π
π OPTIONS π
every flag, every default, no skips. we're doing this properly β¨
-t,--starving_thresholdβ how long, in seconds, a thread has to be starving before it gets boosted. default:[60 s]. sixty whole seconds of suffering, be so fr π-p,--boost_periodβ theSCHED_DEADLINEperiod, in nanoseconds, for a starving thread. default:[1000000000 ns]-r,--boost_runtimeβ theSCHED_DEADLINEruntime, in nanoseconds, for a starving thread. default:[20000 ns]-d,--boost_durationβ how many seconds the starving thread actually gets to run. default:[ 3 s]-F,--force_fifoβ force it to useSCHED_FIFOfor boosting instead. periodt.-l,--log_onlyβ only log the info, do no boosting at all. default:[false]. it's giving "i'm just here to observe"-v,--verboseβ print action informtion to stdout. default:[false]. (yes, that's the original spelling, i'm not touching it π)-k,--log_kmsgβ log the info into the kernel buffer. default:[false]-s,--log_syslogβ print information to syslog. default:[true]. the only one that's on by default, she's the moment-f,--foregroundβ run in the foreground. default:[false (true with -v)]β so it flips to true if you pass-v-P,--pidfileβ write the daemon pid to the specified file. default:[none]-A,--aggressive_modeβ dispatch one thread per cpu run-queue, even if there are no starving threads at all. heads up, this uses more power. default:[false]-O,--power_modeβ run as a single threaded program. it consumes less CPU, but the price is less precision/granularity. default:[false]. tradeoffs bestie, tradeoffs π₯²-M,--adaptive_modeβ when a CPU shows threads starving for more than half of thestarving_thresholdtime, dispatch a specialized thread to monitor it. default:[false]-g,--granularityβ set the granularity, in seconds, at whichstalldchecks for starving threads. the lower the value, the more precise the detection β at the price of eating more CPU time. default:[5 seconds]-R,--reservationβ set the percentage of CPU time reserved forstalldviaSCHED_DEADLINE. this waystalldcan't get starved out by high priority threads, and it also avoids indirect starvation via priority inversion. default:[not set]-a,--affinityβ setstalld's affinity to the set of cpus in cpu-list.-i,--ignore_threadsβ regexes (comma-separated) of thread names that must be ignored and not boosted.-I,--ignore_processesβ regexes (comma-separated) of process names that must be ignored and not boosted.-b,--backendβ picks the backend used to search for starving tasks. the options are:sched_debug||S: for the sched/debug file (this is the default option).queue_track||Q: for tracking enqueue/dequeue of tasks in the runqueues.
-h,--helpβ print options. the classic π
π FILES π
/etc/systemd/stalld.confβ parameter file for systemd startup/usr/lib/systemd/system/stalld.serviceβ systemd unit file/usr/bin/stalldβ thestalldexecutable itself, the girlboss π
π BUGS π
none
literally zero. not a single one. she said "i'm flawless" and honestly? we believe her π
π AUTHOR π
- Daniel Bristot de Oliveira (
bristot@redhat.com) - Juri Lelli (
juri.lelli@redhat.com)
ngl, shoutout to these two for keeping your threads fed π
and that's the whole page bestie!! you now know stalld better than 90% of people who use it, iykyk π§ this was the STALLD(8) page, part of the System Manager's Manual β source/version and date vibes all wrapped up in that same STALLD(8) footer, so consider this your official sign-off. go boost something πβ¨
π¦ where this page comes from
- centos-stream 10: stalld 1.26.3-1.el10 Β· GPL-2.0-or-later AND GPL-2.0-only
- centos-stream 9: stalld 1.26.3-1.el9 Β· GPLv2
- fedora 43: stalld 1.21.1-1.fc43 Β· GPL-2.0-or-later AND GPL-2.0-only
- fedora 43: stalld 1.28.1-1.fc43 Β· GPL-2.0-or-later AND GPL-2.0-only
- fedora 44: stalld 1.26.3-2.fc44 Β· GPL-2.0-or-later AND GPL-2.0-only
- fedora 44: stalld 1.28.1-1.fc44 Β· GPL-2.0-or-later AND GPL-2.0-only
- opensuse-leap 16.0: stalld 1.19.8-160000.3.1 Β· GPL-2.0-only AND GPL-2.0-or-later
- opensuse-leap 16.0: stalld 1.19.8-160000.3.1 Β· GPL-2.0-only AND GPL-2.0-or-later
- opensuse-leap 16.0: stalld 1.19.8-160000.3.1 Β· GPL-2.0-only AND GPL-2.0-or-later
- opensuse-leap 16.0: stalld 1.19.8-160000.3.1 Β· GPL-2.0-only AND GPL-2.0-or-later
- π the page's license: GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms