STALLD(8) | System Manager's Manual | STALLD(8) |
NAME¶
stalld - detect starving threads and boost them
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¶
stalld is a system daemon that monitors thread for the starvation condition. Starvation occurs when a thread sits on a cpu run-queue for longer than the starvation-threshold, meaning the thread has not been allowed to run for threshold seconds. The thread is boosted using the SCHED_DEADLINE policy and given a time period to run. Once it uses this boost period, the thread is returned to its original scheduling policy.
OPTIONS¶
- -t|--starving_threshold
- how long (in seconds) a thread must starve before being boosted [60 s]
- -p|--boost_period
- SCHED_DEADLINE period in nanoseconds for a starving thread [1000000000 ns]
- -r|--boost_runtime
- SCHED_DEADLINE runtime in nanoseconds for a starving thread [20000 ns]
- -d|--boost_duration
- duration in seconds the starving thread will run [ 3 s]
- -F|--force_fifo
- force using SCHED_FIFO for boosting
- -l|--log_only
- only log information, do no boosting [false]
- -v|--verbose
- print action informtion to stdout [false]
- -k|--log_kmsg
- log information to the kernel buffer [false]
- -s|--log_syslog
- print information to syslog [true]
- -f|--foreground
- run in the foreground [false (true with -v)]
- -P|--pidfile
- write daemon pid to specified file [none]
- -A|--aggressive_mode
- dispatch one thread per cpu run-queue, even if thre are no starving threads (uses more power). [false]
- -O|--power_mode
- run as a single threaded program, it consumes less CPU, at the price of less precision/granularity. [false]
- -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. [false]
- -g|--granularity
- set the granularity (in seconds) at which stalld checks for starving threads. The lower the value the more precise will be the detection, at the price of consuming more CPU time. [5 seconds]
- -R|--reservation
- set the percentage of CPU time reserved for stalld via SCHED_DEADLINE. In this way, stalld cannot starve due to high priority threads, also avoid indirect starvation via priority inversion. [not set]
- -a|--affinity
- set the stalld's affinity to the set of cpus in cpu-list.
- -i|--ignore_threads
- regexes (comma-separated) of thread names that must be ignored from being boosted
- -I|--ignore_processes
- regexes (comma-separated) of process names that must be ignored from being boosted
- -b|--backend
- selects the backend to search for starving tasks, options are:
sched_debug || S: for sched/debug file (default option).
queue_track || Q: for tracking enqueue/dequeue of tasks in the runqueues.
- -h|--help
- print options
FILES¶
- /etc/systemd/stalld.conf
- parameter file for systemd startup
- /usr/lib/systemd/system/stalld.service
- systemd unit file
- /usr/bin/stalld
- stalld executable
BUGS¶
none
AUTHOR¶
Daniel Bristot de Oliveira (bristot@redhat.com) Juri Lelli (juri.lelli@redhat.com)