summaryrefslogtreecommitdiff
path: root/src/cgtop/cgtop.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-08-28 19:31:07 +0200
committerLennart Poettering <lennart@poettering.net>2015-08-31 13:20:44 +0200
commit41ba8b6e69ad79b6c8e603ac970720665c88a363 (patch)
treedcc740412572489258861b96caf62de92eb647a1 /src/cgtop/cgtop.c
parentcb88a0a4ae7e9a03edb8772b6e0d8d2fc79c9f6b (diff)
cgtop: ignore kernel threads when counting tasks
However, allow them to be counted in by specifying -k
Diffstat (limited to 'src/cgtop/cgtop.c')
-rw-r--r--src/cgtop/cgtop.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
index 9e771d821b..720af66fd2 100644
--- a/src/cgtop/cgtop.c
+++ b/src/cgtop/cgtop.c
@@ -30,6 +30,7 @@
#include "path-util.h"
#include "terminal-util.h"
+#include "process-util.h"
#include "util.h"
#include "hashmap.h"
#include "cgroup-util.h"
@@ -64,6 +65,7 @@ static unsigned arg_iterations = (unsigned) -1;
static bool arg_batch = false;
static bool arg_raw = false;
static usec_t arg_delay = 1*USEC_PER_SEC;
+static bool arg_kernel_threads = false;
static enum {
ORDER_PATH,
@@ -154,8 +156,13 @@ static int process(const char *controller, const char *path, Hashmap *a, Hashmap
return r;
g->n_tasks = 0;
- while (cg_read_pid(f, &pid) > 0)
+ while (cg_read_pid(f, &pid) > 0) {
+
+ if (!arg_kernel_threads && is_kernel_thread(pid) > 0)
+ continue;
+
g->n_tasks++;
+ }
if (g->n_tasks > 0)
g->n_tasks_valid = true;
@@ -565,6 +572,7 @@ static void help(void) {
" -r --raw Provide raw (not human-readable) numbers\n"
" --cpu=percentage Show CPU usage as percentage (default)\n"
" --cpu=time Show CPU usage as time\n"
+ " -k Include kernel threads in task count\n"
" -d --delay=DELAY Delay between updates\n"
" -n --iterations=N Run for N iterations before exiting\n"
" -b --batch Run in batch mode, accepting no input\n"
@@ -600,7 +608,7 @@ static int parse_argv(int argc, char *argv[]) {
assert(argc >= 1);
assert(argv);
- while ((c = getopt_long(argc, argv, "hptcmin:brd:", options, NULL)) >= 0)
+ while ((c = getopt_long(argc, argv, "hptcmin:brd:k", options, NULL)) >= 0)
switch (c) {
@@ -700,6 +708,10 @@ static int parse_argv(int argc, char *argv[]) {
}
break;
+ case 'k':
+ arg_kernel_threads = true;
+ break;
+
case '?':
return -EINVAL;