Blame view
include/linux/taskstats.h
6.83 KB
c757249af [PATCH] per-task-... |
1 2 3 4 |
/* taskstats.h - exporting per-task statistics * * Copyright (C) Shailabh Nagar, IBM Corp. 2006 * (C) Balbir Singh, IBM Corp. 2006 |
f3cef7a99 [PATCH] csa: basi... |
5 |
* (C) Jay Lan, SGI, 2006 |
c757249af [PATCH] per-task-... |
6 7 8 9 10 11 12 13 14 15 16 17 |
* * This program is free software; you can redistribute it and/or modify it * under the terms of version 2.1 of the GNU Lesser General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it would be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _LINUX_TASKSTATS_H #define _LINUX_TASKSTATS_H |
448314fc9 headers_check fix... |
18 |
#include <linux/types.h> |
c757249af [PATCH] per-task-... |
19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* Format for per-task data returned to userland when * - a task exits * - listener requests stats for a task * * The struct is versioned. Newer versions should only add fields to * the bottom of the struct to maintain backward compatibility. * * * To add new fields * a) bump up TASKSTATS_VERSION * b) add comment indicating new version number at end of struct * c) add new fields after version comment; maintain 64-bit alignment */ |
f3cef7a99 [PATCH] csa: basi... |
32 |
|
4be2c95d1 taskstats: pad ta... |
33 |
#define TASKSTATS_VERSION 8 |
db5fed26b [PATCH] csa accou... |
34 |
#define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN |
f3cef7a99 [PATCH] csa: basi... |
35 |
* in linux/sched.h */ |
c757249af [PATCH] per-task-... |
36 37 |
struct taskstats { |
db5fed26b [PATCH] csa accou... |
38 39 40 41 |
/* The version number of this struct. This field is always set to * TAKSTATS_VERSION, which is defined in <linux/taskstats.h>. * Each time the struct is changed, the value should be incremented. */ |
6f44993fe [PATCH] per-task-... |
42 |
__u16 version; |
db5fed26b [PATCH] csa accou... |
43 44 45 46 47 |
__u32 ac_exitcode; /* Exit status */ /* The accounting flags of a task as defined in <linux/acct.h> * Defined values are AFORK, ASU, ACOMPAT, ACORE, and AXSIG. */ |
f3cef7a99 [PATCH] csa: basi... |
48 49 |
__u8 ac_flag; /* Record flags */ __u8 ac_nice; /* task_nice */ |
6f44993fe [PATCH] per-task-... |
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/* Delay accounting fields start * * All values, until comment "Delay accounting fields end" are * available only if delay accounting is enabled, even though the last * few fields are not delays * * xxx_count is the number of delay values recorded * xxx_delay_total is the corresponding cumulative delay in nanoseconds * * xxx_delay_total wraps around to zero on overflow * xxx_count incremented regardless of overflow */ /* Delay waiting for cpu, while runnable * count, delay_total NOT updated atomically */ |
7e40f2ab0 Taskstats fix the... |
67 |
__u64 cpu_count __attribute__((aligned(8))); |
6f44993fe [PATCH] per-task-... |
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
__u64 cpu_delay_total; /* Following four fields atomically updated using task->delays->lock */ /* Delay waiting for synchronous block I/O to complete * does not account for delays in I/O submission */ __u64 blkio_count; __u64 blkio_delay_total; /* Delay waiting for page fault I/O (swap in only) */ __u64 swapin_count; __u64 swapin_delay_total; /* cpu "wall-clock" running time * On some architectures, value will adjust for cpu time stolen * from the kernel in involuntary waits due to virtualization. * Value is cumulative, in nanoseconds, without a corresponding count |
f494f8fcb add-scaled-time-t... |
86 |
* and wraps around to zero silently on overflow |
6f44993fe [PATCH] per-task-... |
87 88 89 90 91 92 93 94 95 96 97 98 |
*/ __u64 cpu_run_real_total; /* cpu "virtual" running time * Uses time intervals seen by the kernel i.e. no adjustment * for kernel's involuntary waits due to virtualization. * Value is cumulative, in nanoseconds, without a corresponding count * and wraps around to zero silently on overflow */ __u64 cpu_run_virtual_total; /* Delay accounting fields end */ /* version 1 ends here */ |
f3cef7a99 [PATCH] csa: basi... |
99 100 101 |
/* Basic Accounting Fields start */ char ac_comm[TS_COMM_LEN]; /* Command name */ |
7e40f2ab0 Taskstats fix the... |
102 103 |
__u8 ac_sched __attribute__((aligned(8))); /* Scheduling discipline */ |
f3cef7a99 [PATCH] csa: basi... |
104 |
__u8 ac_pad[3]; |
7e40f2ab0 Taskstats fix the... |
105 106 |
__u32 ac_uid __attribute__((aligned(8))); /* User ID */ |
f3cef7a99 [PATCH] csa: basi... |
107 108 109 110 |
__u32 ac_gid; /* Group ID */ __u32 ac_pid; /* Process ID */ __u32 ac_ppid; /* Parent process ID */ __u32 ac_btime; /* Begin time [sec since 1970] */ |
7e40f2ab0 Taskstats fix the... |
111 112 |
__u64 ac_etime __attribute__((aligned(8))); /* Elapsed time [usec] */ |
f3cef7a99 [PATCH] csa: basi... |
113 114 |
__u64 ac_utime; /* User CPU time [usec] */ __u64 ac_stime; /* SYstem CPU time [usec] */ |
db5fed26b [PATCH] csa accou... |
115 116 |
__u64 ac_minflt; /* Minor Page Fault Count */ __u64 ac_majflt; /* Major Page Fault Count */ |
f3cef7a99 [PATCH] csa: basi... |
117 |
/* Basic Accounting Fields end */ |
9acc18535 [PATCH] csa: Exte... |
118 |
|
f2f1f8a3b [PATCH] cleanup t... |
119 |
/* Extended accounting fields start */ |
db5fed26b [PATCH] csa accou... |
120 121 122 123 124 125 |
/* Accumulated RSS usage in duration of a task, in MBytes-usecs. * The current rss usage is added to this counter every time * a tick is charged to a task's system time. So, at the end we * will have memory usage multiplied by system time. Thus an * average usage per system time unit can be calculated. */ |
f2f1f8a3b [PATCH] cleanup t... |
126 |
__u64 coremem; /* accumulated RSS usage in MB-usec */ |
db5fed26b [PATCH] csa accou... |
127 128 129 |
/* Accumulated virtual memory usage in duration of a task. * Same as acct_rss_mem1 above except that we keep track of VM usage. */ |
f2f1f8a3b [PATCH] cleanup t... |
130 |
__u64 virtmem; /* accumulated VM usage in MB-usec */ |
db5fed26b [PATCH] csa accou... |
131 132 133 134 |
/* High watermark of RSS and virtual memory usage in duration of * a task, in KBytes. */ |
f2f1f8a3b [PATCH] cleanup t... |
135 136 |
__u64 hiwater_rss; /* High-watermark of RSS usage, in KB */ __u64 hiwater_vm; /* High-water VM usage, in KB */ |
db5fed26b [PATCH] csa accou... |
137 138 |
/* The following four fields are I/O statistics of a task. */ |
f2f1f8a3b [PATCH] cleanup t... |
139 140 141 142 143 |
__u64 read_char; /* bytes read */ __u64 write_char; /* bytes written */ __u64 read_syscalls; /* read syscalls */ __u64 write_syscalls; /* write syscalls */ /* Extended accounting fields end */ |
4a7864ca6 [PATCH] io-accoun... |
144 145 146 147 148 149 |
#define TASKSTATS_HAS_IO_ACCOUNTING /* Per-task storage I/O accounting starts */ __u64 read_bytes; /* bytes of read I/O */ __u64 write_bytes; /* bytes of write I/O */ __u64 cancelled_write_bytes; /* bytes of cancelled write I/O */ |
b663a79c1 taskstats: add co... |
150 151 152 |
__u64 nvcsw; /* voluntary_ctxt_switches */ __u64 nivcsw; /* nonvoluntary_ctxt_switches */ |
f494f8fcb add-scaled-time-t... |
153 154 155 156 157 |
/* time accounting for SMT machines */ __u64 ac_utimescaled; /* utime scaled on frequency etc */ __u64 ac_stimescaled; /* stime scaled on frequency etc */ __u64 cpu_scaled_run_real_total; /* scaled cpu_run_real_total */ |
016ae219b per-task-delay-ac... |
158 159 160 161 |
/* Delay waiting for memory reclaim */ __u64 freepages_count; __u64 freepages_delay_total; |
c757249af [PATCH] per-task-... |
162 |
}; |
c757249af [PATCH] per-task-... |
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
/* * Commands sent from userspace * Not versioned. New commands should only be inserted at the enum's end * prior to __TASKSTATS_CMD_MAX */ enum { TASKSTATS_CMD_UNSPEC = 0, /* Reserved */ TASKSTATS_CMD_GET, /* user->kernel request/get-response */ TASKSTATS_CMD_NEW, /* kernel->user event */ __TASKSTATS_CMD_MAX, }; #define TASKSTATS_CMD_MAX (__TASKSTATS_CMD_MAX - 1) enum { TASKSTATS_TYPE_UNSPEC = 0, /* Reserved */ TASKSTATS_TYPE_PID, /* Process id */ TASKSTATS_TYPE_TGID, /* Thread group id */ TASKSTATS_TYPE_STATS, /* taskstats structure */ TASKSTATS_TYPE_AGGR_PID, /* contains pid + stats */ TASKSTATS_TYPE_AGGR_TGID, /* contains tgid + stats */ |
4be2c95d1 taskstats: pad ta... |
185 |
TASKSTATS_TYPE_NULL, /* contains nothing */ |
c757249af [PATCH] per-task-... |
186 187 188 189 190 191 192 193 194 |
__TASKSTATS_TYPE_MAX, }; #define TASKSTATS_TYPE_MAX (__TASKSTATS_TYPE_MAX - 1) enum { TASKSTATS_CMD_ATTR_UNSPEC = 0, TASKSTATS_CMD_ATTR_PID, TASKSTATS_CMD_ATTR_TGID, |
f9fd8914c [PATCH] per-task ... |
195 196 |
TASKSTATS_CMD_ATTR_REGISTER_CPUMASK, TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK, |
c757249af [PATCH] per-task-... |
197 198 199 200 201 202 203 204 205 206 207 |
__TASKSTATS_CMD_ATTR_MAX, }; #define TASKSTATS_CMD_ATTR_MAX (__TASKSTATS_CMD_ATTR_MAX - 1) /* NETLINK_GENERIC related info */ #define TASKSTATS_GENL_NAME "TASKSTATS" #define TASKSTATS_GENL_VERSION 0x1 #endif /* _LINUX_TASKSTATS_H */ |