diff --git a/README.md b/README.md index 32a65c22f571a4dfa6f06010c18b7ab5e0a6dd27..8a60985fce687d2de37f066744f19afd1fb7f5d0 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,73 @@ # stalld #### 介绍 -The stalld program is a mechanism to prevent the starvation of operating system threads in a Linux system. +The stalld program (which stands for 'stall daemon') is a +mechanism to prevent the starvation of operating system threads in a +Linux system. The premise is to start up on a housekeeping cpu (one +that is not used for real-application purposes) and to periodically +monitor the state of each thread in the system, looking for a thread +that has been on a run queue (i.e. ready to run) for a specifed length +of time without being run. This condition is usually hit when the +thread is on the same cpu as a high-priority cpu-intensive task and +therefore is being given no opportunity to run. +When a thread is judged to be starving, stalld changes +that thread to use the SCHED_DEADLINE policy and gives the thread a +small slice of time for that cpu (specified on the command line). The +thread then runs and when that timeslice is used, the thread is then +returned to its original scheduling policy and stalld then +continues to monitor thread states. +There is now an experimental option to boost using SCHED_FIFO. This +logic is used if the running kernel does not support the +SCHED_DEADLINE policy and may be forced by using the -F/--force_fifo +option. + -#### 软件架构 -软件架构说明 #### 安装教程 -1. xxxx -2. xxxx -3. xxxx +Install stalld rpm package: + +yum install stalld #### 使用说明 +Logging options + +-l/--log_only: only log information (do not boost) [false] +-v/--verbose: print info to the std output [false] +-k/--log_kmsg: print log to the kernel buffer [false] +-s/--log_syslog: print log to syslog [true] + + +Startup options + +-c/--cpu: list of cpus to monitor for stalled threads [all cpus] +-f/--foreground: run in foreground [false but true when -v] +-P/--pidfile: write daemon pid to specified file [no pidfile] + + +Boosting options + +-p/--boost_period: SCHED_DEADLINE period [ns] that the starving task will receive [1000000000] +-r/--boost_runtime: SCHED_DEADLINE runtime [ns] that the starving task will receive [20000] +-d/--boost_duration: how long [s] the starving task will run with SCHED_DEADLINE [3] +-F/--force_fifo: force using SCHED_FIFO for boosting + + +Monitoring options -1. xxxx -2. xxxx -3. xxxx +-t/--starving_threshold: how long [s] the starving task will wait before being boosted [60] +-A/--aggressive_mode: dispatch one thread per run queue, even when there is no starving +threads on all CPU (uses more CPU/power). [false] #### 参与贡献 -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +master分支使用最新的上游版本,如果检测到上游有最新版本发布,先形成issue后再提交对应PR更新,流程如下。 +1. 提交issue +2. Fork 本仓库 +3. 新建 Feat_xxx 分支 +4. 提交代码 +5. 新建 Pull Request #### 特技