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 β€” the SCHED_DEADLINE period, in nanoseconds, for a starving thread. default: [1000000000 ns]
  • -r, --boost_runtime β€” the SCHED_DEADLINE runtime, 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 use SCHED_FIFO for 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 the starving_threshold time, dispatch a specialized thread to monitor it. default: [false]
  • -g, --granularity β€” set the granularity, in seconds, at which stalld checks 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 for stalld via SCHED_DEADLINE. this way stalld can't get starved out by high priority threads, and it also avoids indirect starvation via priority inversion. default: [not set]
  • -a, --affinity β€” set stalld'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 β€” the stalld executable 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