summaryrefslogtreecommitdiff
path: root/src/cgtop
AgeCommit message (Collapse)AuthorFilesLines
2015-09-29bus-util: rename bus_open_transport() to bus_connect_transport()Lennart Poettering1-1/+1
In sd-bus, the sd_bus_open_xyz() family of calls allocates a new bus, while sd_bus_default_xyz() family tries to reuse the thread's default bus. bus_open_transport() sometimes internally uses the former, sometimes the latter family, but suggests it only calls the former via its name. Hence, let's avoid this confusion, and generically rename the call to bus_connect_transport(). Similar for all related calls. And while we are at it, also change cgls + cgtop to do direct systemd connections where possible, since all they do is talk to systemd itself.
2015-09-29util: introduce common version() implementation and use it everywhereLennart Poettering1-17/+15
This also allows us to drop build.h from a ton of files, hence do so. Since we touched the #includes of those files, let's order them properly according to CODING_STYLE.
2015-09-22cgtop: make sure help text doesn't cause main contents to moveLennart Poettering1-1/+1
Let's always keep space for the full help text. (We used to do that, but recently another line of help was added which broke this.)
2015-09-22cgtop: underline table headerLennart Poettering1-19/+25
Let's underline the header line of the table shown by cgtop, how it is customary for tables. In order to do this, let's introduce new ANSI underline macros, and clean up the existing ones as side effect.
2015-09-21cgtop: add -M/--machineEvgeny Vereshchagin1-2/+55
2015-09-10Merge pull request #1239 from poettering/cgroup-pidsDaniel Mack1-18/+89
core: add support for the "pids" cgroup controller
2015-09-10core: add support for the "pids" cgroup controllerLennart Poettering1-18/+89
This adds support for the new "pids" cgroup controller of 4.3 kernels. It allows accounting the number of tasks in a cgroup and enforcing limits on it. This adds two new setting TasksAccounting= and TasksMax= to each unit, as well as a gloabl option DefaultTasksAccounting=. This also updated "cgtop" to optionally make use of the new kernel-provided accounting. systemctl has been updated to show the number of tasks for each service if it is available. This patch also adds correct support for undoing memory limits for units using a MemoryLimit=infinity syntax. We do the same for TasksMax= now and hence keep things in sync here.
2015-09-10tree-wide: never use the off_t unless glibc makes us use itLennart Poettering1-1/+1
off_t is a really weird type as it is usually 64bit these days (at least in sane programs), but could theoretically be 32bit. We don't support off_t as 32bit builds though, but still constantly deal with safely converting from off_t to other types and back for no point. Hence, never use the type anymore. Always use uint64_t instead. This has various benefits, including that we can expose these values directly as D-Bus properties, and also that the values parse the same in all cases.
2015-09-01core: unified cgroup hierarchy supportLennart Poettering1-3/+6
This patch set adds full support the new unified cgroup hierarchy logic of modern kernels. A new kernel command line option "systemd.unified_cgroup_hierarchy=1" is added. If specified the unified hierarchy is mounted to /sys/fs/cgroup instead of a tmpfs. No further hierarchies are mounted. The kernel command line option defaults to off. We can turn it on by default as soon as the kernel's APIs regarding this are stabilized (but even then downstream distros might want to turn this off, as this will break any tools that access cgroupfs directly). It is possibly to choose for each boot individually whether the unified or the legacy hierarchy is used. nspawn will by default provide the legacy hierarchy to containers if the host is using it, and the unified otherwise. However it is possible to run containers with the unified hierarchy on a legacy host and vice versa, by setting the $UNIFIED_CGROUP_HIERARCHY environment variable for nspawn to 1 or 0, respectively. The unified hierarchy provides reliable cgroup empty notifications for the first time, via inotify. To make use of this we maintain one manager-wide inotify fd, and each cgroup to it. This patch also removes cg_delete() which is unused now. On kernel 4.2 only the "memory" controller is compatible with the unified hierarchy, hence that's the only controller systemd exposes when booted in unified heirarchy mode. This introduces a new enum for enumerating supported controllers, plus a related enum for the mask bits mapping to it. The core is changed to make use of this everywhere. This moves PID 1 into a new "init.scope" implicit scope unit in the root slice. This is necessary since on the unified hierarchy cgroups may either contain subgroups or processes but not both. PID 1 hence has to move out of the root cgroup (strictly speaking the root cgroup is the only one where processes and subgroups are still allowed, but in order to support containers nicey, we move PID 1 into the new scope in all cases.) This new unit is also used on legacy hierarchy setups. It's actually pretty useful on all systems, as it can then be used to filter journal messages coming from PID 1, and so on. The root slice ("-.slice") is now implicitly created and started (and does not require a unit file on disk anymore), since that's where "init.scope" is located and the slice needs to be started before the scope can. To check whether we are in unified or legacy hierarchy mode we use statfs() on /sys/fs/cgroup. If the .f_type field reports tmpfs we are in legacy mode, if it reports cgroupfs we are in unified mode. This patch set carefuly makes sure that cgls and cgtop continue to work as desired. When invoking nspawn as a service it will implicitly create two subcgroups in the cgroup it is using, one to move the nspawn process into, the other to move the actual container processes into. This is done because of the requirement that cgroups may either contain processes or other subgroups.
2015-09-01cgtop: properly show "/" instead of empty string in cgroup listLennart Poettering1-3/+5
2015-08-31cgtop: rework error handlingLennart Poettering1-14/+7
Never report errors twice.
2015-08-31cgtop: allow toggling of --recursive= and -k at runtimeLennart Poettering1-2/+16
2015-08-31cgtop: recursively count cgroup member tasksLennart Poettering1-25/+71
When showing the number of tasks in a cgroup, recursively count tasks in child cgroups and include them in the number. This ensures that the number of tasks is cummulative the same way as memory, cpu and IO resources are. Old behaviour can be restored by passing the new --recursive=no switch.
2015-08-31cgtop: ignore kernel threads when counting tasksLennart Poettering1-2/+14
However, allow them to be counted in by specifying -k
2015-08-31cgtop: show resource usage relative to cgroup root onlyLennart Poettering1-6/+13
This way the output is restricted to cgroups from a container when run in one.
2015-08-28cgtop: major modernizationsLennart Poettering1-134/+159
In preparation of the unified cgroup support, let's clean up cgtop: a) rework time code to be based on "nsec_t" rather than "struct timespec" b) Introduce long option --order= for selecting ordering c) count number of processes only in the main hierarchy, don't bother with the controller hierarchies. We don't allow orthogonal hierarchies in systemd anymore, hence there's no point to check the other hierarchies. d) Deal with non-monotonic cpuacct values (see #749) e) When sorting groups, don't do prefix compare when ordering by number of tasks, since this is not accumulative for all children. f) Actually make --cpu without parameter work g) Don't output control characters when we get them as input. Fixes #749.
2015-07-17cgtop: include missing signal.h for sigwinchUmut Tezduyar Lindskog1-0/+1
2015-06-10cgtop: IO readings are valid if any data is available, even if unchanged ↵Charles Duffy1-2/+1
since last tick Emit "0" rather than "-" if no change in IO values are seen for a process since last tick, so long as accounting has registered content at all.
2015-06-09cgtop: more sensible flushing behavior w/ non-TTY outputCharles Duffy1-2/+8
- Explicitly flush stdout before sleep between iterations - Only clear user keystrokes when output is to TTY - Add a newline between output batches when output is not to TTY
2015-06-09cgtop: allow user to force looping behavior even in non-TTY modeCharles Duffy1-3/+3
2015-06-09cgtop: raw output option (disable conversion to human-readable units)Charles Duffy1-13/+21
2015-04-11shared: add terminal-util.[ch]Ronny Chevalier1-0/+1
2015-03-11cgtop: fix assert when not on ttyUmut Tezduyar Lindskog1-1/+1
systemd-cgtop --dept=1 -b -n 10 -d 0.1 | cat Assertion 'new_length >= 3' failed at src/shared/util.c:3 \ 595, function ellipsize_mem(). Aborting. Aborted (core dumped) (David: add comment)
2014-11-28treewide: no need to negate errno for log_*_errno()Michal Schmidt1-2/+2
It corrrectly handles both positive and negative errno values.
2014-11-28treewide: auto-convert the simple cases to log_*_errno()Michal Schmidt1-2/+2
As a followup to 086891e5c1 "log: add an "error" parameter to all low-level logging calls and intrdouce log_error_errno() as log calls that take error numbers", use sed to convert the simple cases to use the new macros: find . -name '*.[ch]' | xargs sed -r -i -e \ 's/log_(debug|info|notice|warning|error|emergency)\("(.*)%s"(.*), strerror\(-([a-zA-Z_]+)\)\);/log_\1_errno(-\4, "\2%m"\3);/' Multi-line log_*() invocations are not covered. And we also should add log_unit_*_errno().
2014-10-23install, cgtop: adjust hashmap_move_one() callers for -ENOMEM possibilityMichal Schmidt1-1/+3
That hashmap_move_one() currently cannot fail with -ENOMEM is an implementation detail, which is not possible to guarantee in general. Hashmap implementations based on anything else than chaining of individual entries may have to allocate. hashmap_move_one will not fail with -ENOMEM if a proper reservation has been made beforehand. Use reservations in install.c. In cgtop.c simply propagate the error instead of asserting.
2014-09-15hashmap: introduce hash_ops to make struct Hashmap smallerMichal Schmidt1-2/+2
It is redundant to store 'hash' and 'compare' function pointers in struct Hashmap separately. The functions always comprise a pair. Store a single pointer to struct hash_ops instead. systemd keeps hundreds of hashmaps, so this saves a little bit of memory.
2014-08-03Unify parse_argv styleZbigniew Jędrzejewski-Szmek1-9/+6
getopt is usually good at printing out a nice error message when commandline options are invalid. It distinguishes between an unknown option and a known option with a missing arg. It is better to let it do its job and not use opterr=0 unless we actually want to suppress messages. So remove opterr=0 in the few places where it wasn't really useful. When an error in options is encountered, we should not print a lengthy help() and overwhelm the user, when we know precisely what is wrong with the commandline. In addition, since help() prints to stdout, it should not be used except when requested with -h or --help. Also, simplify things here and there.
2014-02-19make gcc shut upLennart Poettering1-1/+1
If -flto is used then gcc will generate a lot more warnings than before, among them a number of use-without-initialization warnings. Most of them without are false positives, but let's make them go away, because it doesn't really matter.
2013-12-25build-sys: minor fixes found with cppcheckLennart Poettering1-1/+1
2013-11-06clients: unify how we invoke getopt_long()Lennart Poettering1-10/+7
Among other things this makes sure we always expose a --version command and show it in the help texts.
2013-10-13Never call qsort on potentially NULL arraysZbigniew Jędrzejewski-Szmek1-1/+1
This extends 62678ded 'efi: never call qsort on potentially NULL arrays' to all other places where qsort is used and it is not obvious that the count is non-zero.
2013-09-04cgtop: fixup the online helpBrandon Philips1-2/+2
The online help shows the keys as uppercase but the code and manpage say lower case. Make the online help follow reality.
2013-06-06cgroup: the "tasks" attribute is obsolete, cgroup.procs is the new replacementLennart Poettering1-1/+1
2013-04-08cgtop: print absolute CPU times with format_timespanLennart Poettering1-14/+14
2013-04-04util: make time formatting a bit smarterLennart Poettering1-2/+2
Instead of outputting "5h 55s 50ms 3us" we'll now output "5h 55.050003s". Also, while outputting the accuracy is configurable. Basically we now try use "dot notation" for all time values > 1min. For >= 1s we use 's' as unit, otherwise for >= 1ms we use 'ms' as unit, and finally 'us'. This should give reasonably values in most cases.
2013-04-03util: rename parse_usec() to parse_sec() sinds the default unit is secondsLennart Poettering1-1/+1
Internally we store all time values in usec_t, however parse_usec() actually was used mostly to parse values in seconds (unless explicit units were specified to define a different unit). Hence, be clear about this and name the function about what we pass into it, not what we get out of it.
2013-04-02cgtop: add % as key to toggle time/percentageZbigniew Jędrzejewski-Szmek1-1/+6
2013-04-02cgtop: optionally show CPU usage as time and become stdout sensitiveUmut Tezduyar1-37/+92
2013-03-29cgtop --help: default depth is 3 not 2Maksim Melnikau1-2/+2
use default depth from variable for --help
2013-02-14honor SELinux labels, when creating and writing config filesHarald Hoyer1-0/+1
Also split out some fileio functions to fileio.c and provide a SELinux aware pendant in fileio-label.c see https://bugzilla.redhat.com/show_bug.cgi?id=881577
2012-10-19util: unify line caching and column cachingLennart Poettering1-4/+4
2012-10-19util: simplify column caching logicLennart Poettering1-1/+3
2012-09-21cgtop: missing '-'Václav Pavlín1-1/+1
Return codes in systemd are negated and if (r < 0) if (r == ENOENT) was never true.
2012-08-06continue work with error messages, log_oom()Shawn Landden1-1/+6
Adds messages for formally silent errors: new "Failed on cmdline argument %s: %s". Removes some specific error messages for -ENOMEM in mount-setup.c. A few specific ones have been left in other binaries.
2012-07-26cgtop: add --version optionZbigniew Jędrzejewski-Szmek1-7/+19
2012-07-26cgtop: use full terminal widthZbigniew Jędrzejewski-Szmek1-10/+20
2012-07-26Add a 'b' option to cgtop, equivalent to the same option in topDavid Strauss1-7/+22
[zj: use static]
2012-07-26Add an 'n' option to cgtop (equivalent to top)David Strauss1-5/+20
2012-07-26log.h: new log_oom() -> int -ENOMEM, use itShawn Landden1-2/+1
also a number of minor fixups and bug fixes: spelling, oom errors that didn't print errors, not properly forwarding error codes, few more consistency issues, et cetera