Skip to content

Commit

Permalink
[PATCH] csa: Extended system accounting over taskstats
Browse files Browse the repository at this point in the history
Add extended system accounting handling over taskstats interface.  A
CONFIG_TASK_XACCT flag is created to enable the extended accounting code.

Signed-off-by: Jay Lan <jlan@sgi.com>
Cc: Shailabh Nagar <nagar@watson.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Jes Sorensen <jes@sgi.com>
Cc: Chris Sturtivant <csturtiv@sgi.com>
Cc: Tony Ernst <tee@sgi.com>
Cc: Guillaume Thouvenin <guillaume.thouvenin@bull.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Jay Lan authored and Linus Torvalds committed Oct 1, 2006
1 parent f3cef7a commit 9acc185
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 0 deletions.
11 changes: 11 additions & 0 deletions include/linux/taskstats.h
Expand Up @@ -107,6 +107,17 @@ struct taskstats {
__u64 ac_minflt; /* Minor Page Fault */
__u64 ac_majflt; /* Major Page Fault */
/* Basic Accounting Fields end */

/* Extended accounting fields start */
__u64 acct_rss_mem1; /* accumulated rss usage */
__u64 acct_vm_mem1; /* accumulated virtual memory usage */
__u64 hiwater_rss; /* High-watermark of RSS usage */
__u64 hiwater_vm; /* High-water virtual memory usage */
__u64 read_char; /* bytes read */
__u64 write_char; /* bytes written */
__u64 read_syscalls; /* read syscalls */
__u64 write_syscalls; /* write syscalls */
/* Extended accounting fields end */
};


Expand Down
9 changes: 9 additions & 0 deletions include/linux/tsacct_kern.h
Expand Up @@ -16,4 +16,13 @@ static inline void bacct_add_tsk(struct taskstats *stats, struct task_struct *ts
{}
#endif /* CONFIG_TASKSTATS */

#ifdef CONFIG_TASK_XACCT
extern void xacct_add_tsk(struct taskstats *stats, struct task_struct *p);
#else
static inline void xacct_add_tsk(struct taskstats *stats, struct task_struct *p)
{}
#endif /* CONFIG_TASK_XACCT */

#endif


9 changes: 9 additions & 0 deletions init/Kconfig
Expand Up @@ -257,6 +257,15 @@ config CC_OPTIMIZE_FOR_SIZE

If unsure, say N.

config TASK_XACCT
bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
depends on TASKSTATS
help
Collect extended task accounting data and send the data
to userland for processing over the taskstats interface.

Say N if unsure.

config SYSCTL
bool

Expand Down
4 changes: 4 additions & 0 deletions kernel/taskstats.c
Expand Up @@ -20,6 +20,7 @@
#include <linux/taskstats_kern.h>
#include <linux/tsacct_kern.h>
#include <linux/delayacct.h>
#include <linux/tsacct_kern.h>
#include <linux/cpumask.h>
#include <linux/percpu.h>
#include <net/genetlink.h>
Expand Down Expand Up @@ -204,6 +205,9 @@ static int fill_pid(pid_t pid, struct task_struct *pidtsk,
stats->version = TASKSTATS_VERSION;
bacct_add_tsk(stats, tsk);

/* fill in extended acct fields */
xacct_add_tsk(stats, tsk);

/* Define err: label here if needed */
put_task_struct(tsk);
return rc;
Expand Down
19 changes: 19 additions & 0 deletions kernel/tsacct.c
Expand Up @@ -70,3 +70,22 @@ void bacct_add_tsk(struct taskstats *stats, struct task_struct *tsk)
strncpy(stats->ac_comm, tsk->comm, sizeof(stats->ac_comm));
}


#ifdef CONFIG_TASK_XACCT
/*
* fill in extended accounting fields
*/
void xacct_add_tsk(struct taskstats *stats, struct task_struct *p)
{
stats->acct_rss_mem1 = p->acct_rss_mem1;
stats->acct_vm_mem1 = p->acct_vm_mem1;
if (p->mm) {
stats->hiwater_rss = p->mm->hiwater_rss;
stats->hiwater_vm = p->mm->hiwater_vm;
}
stats->read_char = p->rchar;
stats->write_char = p->wchar;
stats->read_syscalls = p->syscr;
stats->write_syscalls = p->syscw;
}
#endif

0 comments on commit 9acc185

Please sign in to comment.