1;2802;0c\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename slack.info @settitle slack @afourpaper @documentencoding UTF-8 @documentlanguage en @finalout @c %**end of header @dircategory Miscellaneous @direntry * slack: (slack). Control your timer slack @end direntry @copying Copyright @copyright{} 2014 Mattias Andrée @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @ifnottex @node Top @top slack -- Control your timer slack @insertcopying @end ifnottex @titlepage @title slack @subtitle Control your timer slack @author by Mattias Andrée (maandree) @page @c @center `' @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @menu * Overview:: Brief overview of @command{slack}. * Invoking:: Invocation of @command{slack}. * GNU Free Documentation License:: Copying and sharing this manual. @end menu @node Overview @chapter Overview Get the current timer slack value or spawn a new process with a new timer slack value. Timer slack is inherited to child processes. Timer slack allows the kernel to coalesce events so that the kernel does not need to which context as often. For example, if you have a lot timers @footnote{Timer slack affects more than timers.} but you only want 100 milliseconds accuracy (instead of 50 microsoconds accuracy which is the default) on your timers you can set your tiemr slack to 100 milliseconds. If this is done the kernel can let a timer expire up to 100 milliseconds lot so it can expire at the same time as other timers that expire in the near future, this way the kernel will only have to which between kernel mode and user mode once. This can also have nice effects in user mode, if you have an @code{epoll} with @code{timerfd}:s, the epoll can return once and list multiple timers than expire within 100 milliseconds of each other. Note: real-time threads do not slack off. @node Invoking @chapter Invoking There are four ways to run @command{slack}: @table @command @item slack get Print the current process's timer slack in human-readable format. @item slack GET Print the current process's timer slack in machine-readable format, namely the timer slack in nanoseconds with digits only. @item slack reset [--fatal] [--] Start the specified command with default timer slack, which is determined by the timer slack of the proceess with PID 1. By default this is 50 microseconds. If @option{--fatal} is used, the specified command will not be executed if its timer slack cannot be set. If @option{--fatal} is not used, the specified command will be executed even if its timer slack cannot be set. @item slack [--fatal] [--] Start the specified command with a selected timer slack. The timer slack must be expressed as a integer optionally suffixed (without any blank space) by `n', `u' (or the micro character), `m', optionally in turn suffixed by `s', for nanoseconds, microseconds and milliseconds, respectively, `s' can be used for whole seconds. If no suffix is used, nanoseconds are assumed. If @option{--fatal} is used, the specified command will not be executed if its timer slack cannot be set. If @option{--fatal} is not used, the specified command will be executed even if its timer slack cannot be set. @end table @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texinfo @bye