Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9acc1853 authored by Jay Lan's avatar Jay Lan Committed by Linus Torvalds
Browse files

[PATCH] csa: Extended system accounting over taskstats



Add extended system accounting handling over taskstats interface.  A
CONFIG_TASK_XACCT flag is created to enable the extended accounting code.

Signed-off-by: default avatarJay 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: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent f3cef7a9
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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 */
};


+9 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
@@ -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

+4 −0
Original line number Diff line number Diff line
@@ -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>
@@ -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;
+19 −0
Original line number Diff line number Diff line
@@ -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