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 ]

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 dameon 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]

-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

-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)