aboutsummaryrefslogblamecommitdiffstats
path: root/doc/info/slack.texinfo
blob: 692b7c94970f959cfc6b8eb6e975ea8db6636a6b (plain) (tree)














































































































































                                                                      
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] [--] <command...>
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 <timer slack> [--fatal] [--] <command...>
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