public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 2/3] add CSA accounting to taskstats
@ 2006-07-31 19:21 Jay Lan
  2006-07-31 20:39 ` Shailabh Nagar
  2006-08-16 10:52 ` Pavel Machek
  0 siblings, 2 replies; 7+ messages in thread
From: Jay Lan @ 2006-07-31 19:21 UTC (permalink / raw)
  To: Andrew Morton
  Cc: lkml, Shailabh Nagar, Balbir Singh, Jes Sorensen,
	Chris Sturtivant, Tony Ernst

[-- Attachment #1: Type: text/plain, Size: 148 bytes --]

This patch add CSA accounting fields to the taskstats struct
and a kernel/csa.c to fill the data on exit.


Signed-off-by:  Jay Lan <jlan@sgi.com>


[-- Attachment #2: taskstats-csa.patch --]
[-- Type: text/plain, Size: 6597 bytes --]

Index: linux/include/linux/taskstats.h
===================================================================
--- linux.orig/include/linux/taskstats.h	2006-07-31 11:42:10.000000000 -0700
+++ linux/include/linux/taskstats.h	2006-07-31 11:50:00.412433042 -0700
@@ -107,6 +107,21 @@ struct taskstats {
 	__u64	ac_utime;		/* User CPU time [usec] */
 	__u64	ac_stime;		/* SYstem CPU time [usec] */
 	/* Basic Accounting Fields end */
+
+ 	/* CSA accounting fields start */
+ 	__u16	csa_revision;		/* CSA Revision */
+ 	__u16	csa_pad[3];		/* Unused */
+ 	__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	ac_minflt;		/* Minor Page Fault */
+ 	__u64	ac_majflt;		/* Major Page Fault */
+ 	__u64	ac_chr;			/* bytes read */
+ 	__u64	ac_chw;			/* bytes written */
+ 	__u64	ac_scr;			/* read syscalls */
+ 	__u64	ac_scw;			/* write syscalls */
+ 	/* CSA accounting fields end */
 };
 
 
Index: linux/init/Kconfig
===================================================================
--- linux.orig/init/Kconfig	2006-07-31 11:38:21.000000000 -0700
+++ linux/init/Kconfig	2006-07-31 11:47:23.214410140 -0700
@@ -182,6 +182,31 @@ config TASK_DELAY_ACCT
 
 	  Say N if unsure.
 
+config CSA_ACCT
+	bool "Enable CSA Job Accounting (EXPERIMENTAL)"
+	depends on TASKSTATS
+	help
+	  Comprehensive System Accounting (CSA) provides job level
+	  accounting of resource usage.  The accounting records are
+	  written by the kernel into a file.  CSA user level scripts
+	  and commands process the binary accounting records and
+	  combine them by job identifier within system boot uptime
+	  periods.  These accounting records are then used to produce
+	  reports and charge fees to users.
+
+	  Say Y here if you want job level accounting to be compiled
+	  into the kernel.  Say M here if you want the writing of
+	  accounting records portion of this feature to be a loadable
+	  module.  Say N here if you do not want job level accounting
+	  (the default).
+
+	  The CSA commands and scripts package needs to be installed
+	  to process the CSA accounting records.  See
+	  http://oss.sgi.com/projects/csa for further information
+	  about CSA and download instructions for the CSA commands
+	  package and documentation.
+
+
 config SYSCTL
 	bool "Sysctl support" if EMBEDDED
 	default y
Index: linux/kernel/Makefile
===================================================================
--- linux.orig/kernel/Makefile	2006-07-31 11:38:21.000000000 -0700
+++ linux/kernel/Makefile	2006-07-31 11:47:23.218410191 -0700
@@ -50,6 +50,7 @@ obj-$(CONFIG_RCU_TORTURE_TEST) += rcutor
 obj-$(CONFIG_RELAY) += relay.o
 obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
 obj-$(CONFIG_TASKSTATS) += taskstats.o
+obj-$(CONFIG_CSA_ACCT) += csa.o
 
 ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER),y)
 # According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
Index: linux/kernel/csa.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ linux/kernel/csa.c	2006-07-31 11:47:23.218410191 -0700
@@ -0,0 +1,46 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
+ */
+
+
+/*
+ *  CSA (Comprehensive System Accounting)
+ *  Job Accounting for Linux
+ *
+ *  This header file contains the definitions needed for job
+ *  accounting. The kernel CSA accounting module code and all
+ *  user-level programs that try to write or process the binary job
+ *  accounting data must include this file.
+ *
+ *  This kernel header file and the csa.h in the csa userland source
+ *  rpm share same data struct declaration and #define's. Do not modify
+ *  one without modify the other one as well. The compatibility between
+ *  userland and the kernel is ensured by using the 'ah_revision' field
+ *  of struct achead.
+ *
+ */
+
+#include <linux/taskstats.h>
+#include <linux/csa_kern.h>
+#include <linux/sched.h>
+
+void csa_add_tsk(struct taskstats *stats, struct task_struct *p)
+{
+	stats->csa_revision = REV_CSA;
+	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->ac_minflt = p->min_flt;
+	stats->ac_majflt = p->maj_flt;
+	stats->ac_chr	= p->rchar;
+	stats->ac_chw	= p->wchar;
+	stats->ac_scr	= p->syscr;
+	stats->ac_scw	= p->syscw;
+}
Index: linux/kernel/taskstats.c
===================================================================
--- linux.orig/kernel/taskstats.c	2006-07-31 11:44:54.000000000 -0700
+++ linux/kernel/taskstats.c	2006-07-31 11:47:23.218410191 -0700
@@ -21,6 +21,7 @@
 #include <linux/taskstats_kern.h>
 #include <linux/acct.h>
 #include <linux/delayacct.h>
+#include <linux/csa_kern.h>
 #include <linux/cpumask.h>
 #include <linux/percpu.h>
 #include <net/genetlink.h>
@@ -252,6 +253,9 @@ static int fill_pid(pid_t pid, struct ta
 	/* fill in basic acct fields */
 	bacct_add_tsk(stats, tsk);
 
+	/* fill in csa fields */
+	csa_add_tsk(stats, tsk);
+
 	/* Define err: label here if needed */
 	put_task_struct(tsk);
 	return rc;
Index: linux/include/linux/csa_kern.h
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ linux/include/linux/csa_kern.h	2006-07-31 11:47:23.218410191 -0700
@@ -0,0 +1,31 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
+ */
+
+#ifndef _CSA_KERN_H
+#define _CSA_KERN_H
+
+#ifdef CONFIG_CSA_ACCT
+extern void csa_add_tsk(struct taskstats *, struct task_struct *);
+#else
+#define csa_add_tsk(x)		do { } while (0)
+#endif
+
+/*
+ * Record revision levels.
+ *
+ * These are incremented to indicate that a record's format has changed since
+ * a previous release.
+ *
+ * History:     05000   The first rev in Linux
+ *              06000   Major rework to clean up unused fields and features.
+ *                      No binary compatibility with earlier rev.
+ *		07000	Convert to taskstats interface
+ */
+#define REV_CSA		07000	/* Kernel: CSA base record */
+
+#endif	/* _CSA_KERN_H */


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/3] add CSA accounting to taskstats
  2006-07-31 19:21 [patch 2/3] add CSA accounting to taskstats Jay Lan
@ 2006-07-31 20:39 ` Shailabh Nagar
  2006-07-31 22:03   ` Jay Lan
  2006-07-31 22:13   ` Jay Lan
  2006-08-16 10:52 ` Pavel Machek
  1 sibling, 2 replies; 7+ messages in thread
From: Shailabh Nagar @ 2006-07-31 20:39 UTC (permalink / raw)
  To: Jay Lan
  Cc: Andrew Morton, lkml, Balbir Singh, Jes Sorensen, Chris Sturtivant,
	Tony Ernst

Jay Lan wrote:
> This patch add CSA accounting fields to the taskstats struct
> and a kernel/csa.c to fill the data on exit.
> 
> 
> Signed-off-by:  Jay Lan <jlan@sgi.com>
> 
> 
> ------------------------------------------------------------------------
> 
> Index: linux/include/linux/taskstats.h
> ===================================================================
> --- linux.orig/include/linux/taskstats.h	2006-07-31 11:42:10.000000000 -0700
> +++ linux/include/linux/taskstats.h	2006-07-31 11:50:00.412433042 -0700
> @@ -107,6 +107,21 @@ struct taskstats {
>  	__u64	ac_utime;		/* User CPU time [usec] */
>  	__u64	ac_stime;		/* SYstem CPU time [usec] */
>  	/* Basic Accounting Fields end */
> +
> + 	/* CSA accounting fields start */
> + 	__u16	csa_revision;		/* CSA Revision */

May be helpful to add a note here that every time csa_revision is changed,
TASKSTATS_VERSION also needs to be bumped up.

> + 	__u16	csa_pad[3];		/* Unused */


> + 	__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	ac_minflt;		/* Minor Page Fault */
> + 	__u64	ac_majflt;		/* Major Page Fault */

Can the number of prefixes be reduced ? In the space of a few fields, we have
ac_*, csa_*, acct_* and plain (for hiwater_rss/vm)


> + 	__u64	ac_chr;			/* bytes read */
> + 	__u64	ac_chw;			/* bytes written */
> + 	__u64	ac_scr;			/* read syscalls */
> + 	__u64	ac_scw;			/* write syscalls */

read_char,
write_char,
read_syscalls,
write_syscalls,

perhaps (esp. if you're dropping the ac_ prefix) ?

> + 	/* CSA accounting fields end */
>  };


>  
>  
> Index: linux/init/Kconfig
> ===================================================================
> --- linux.orig/init/Kconfig	2006-07-31 11:38:21.000000000 -0700
> +++ linux/init/Kconfig	2006-07-31 11:47:23.214410140 -0700
> @@ -182,6 +182,31 @@ config TASK_DELAY_ACCT
>  
>  	  Say N if unsure.
>  
> +config CSA_ACCT
> +	bool "Enable CSA Job Accounting (EXPERIMENTAL)"
> +	depends on TASKSTATS
> +	help
> +	  Comprehensive System Accounting (CSA) provides job level
> +	  accounting of resource usage.  The accounting records are
> +	  written by the kernel into a file.  CSA user level scripts
> +	  and commands process the binary accounting records and
> +	  combine them by job identifier within system boot uptime
> +	  periods.  These accounting records are then used to produce
> +	  reports and charge fees to users.
> +
> +	  Say Y here if you want job level accounting to be compiled
> +	  into the kernel.  Say M here if you want the writing of
> +	  accounting records portion of this feature to be a loadable
> +	  module.  Say N here if you do not want job level accounting
> +	  (the default).

The description above is tied to jobs which don't exist in the kernel.
There's no dependency of CSA on kernel-visible jobs anymore, right ?
Perhaps the blurb can clarify that jobs are defined in user space.

> +
> +	  The CSA commands and scripts package needs to be installed
> +	  to process the CSA accounting records.  See
> +	  http://oss.sgi.com/projects/csa for further information
> +	  about CSA and download instructions for the CSA commands
> +	  package and documentation.
> +
> +
>  config SYSCTL
>  	bool "Sysctl support" if EMBEDDED
>  	default y
> Index: linux/kernel/Makefile
> ===================================================================
> --- linux.orig/kernel/Makefile	2006-07-31 11:38:21.000000000 -0700
> +++ linux/kernel/Makefile	2006-07-31 11:47:23.218410191 -0700
> @@ -50,6 +50,7 @@ obj-$(CONFIG_RCU_TORTURE_TEST) += rcutor
>  obj-$(CONFIG_RELAY) += relay.o
>  obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
>  obj-$(CONFIG_TASKSTATS) += taskstats.o
> +obj-$(CONFIG_CSA_ACCT) += csa.o
>  
>  ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER),y)
>  # According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
> Index: linux/kernel/csa.c
> ===================================================================
> --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> +++ linux/kernel/csa.c	2006-07-31 11:47:23.218410191 -0700
> @@ -0,0 +1,46 @@
> +/*
> + * This file is subject to the terms and conditions of the GNU General Public
> + * License.  See the file "COPYING" in the main directory of this archive
> + * for more details.
> + *
> + * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
> + */
> +
> +
> +/*
> + *  CSA (Comprehensive System Accounting)
> + *  Job Accounting for Linux
> + *
> + *  This header file contains the definitions needed for job
> + *  accounting. The kernel CSA accounting module code and all
> + *  user-level programs that try to write or process the binary job
> + *  accounting data must include this file.

Again, job dependency might need some clarification.

> + *
> + *  This kernel header file and the csa.h in the csa userland source
> + *  rpm share same data struct declaration and #define's. Do not modify
> + *  one without modify the other one as well. The compatibility between
> + *  userland and the kernel is ensured by using the 'ah_revision' field
> + *  of struct achead.

Leftover from older documentation ?

> + *
> + */
> +
> +#include <linux/taskstats.h>
> +#include <linux/csa_kern.h>
> +#include <linux/sched.h>
> +
> +void csa_add_tsk(struct taskstats *stats, struct task_struct *p)
> +{
> +	stats->csa_revision = REV_CSA;
> +	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->ac_minflt = p->min_flt;
> +	stats->ac_majflt = p->maj_flt;
> +	stats->ac_chr	= p->rchar;
> +	stats->ac_chw	= p->wchar;
> +	stats->ac_scr	= p->syscr;
> +	stats->ac_scw	= p->syscw;
> +}
> Index: linux/kernel/taskstats.c
> ===================================================================
> --- linux.orig/kernel/taskstats.c	2006-07-31 11:44:54.000000000 -0700
> +++ linux/kernel/taskstats.c	2006-07-31 11:47:23.218410191 -0700
> @@ -21,6 +21,7 @@
>  #include <linux/taskstats_kern.h>
>  #include <linux/acct.h>
>  #include <linux/delayacct.h>
> +#include <linux/csa_kern.h>
>  #include <linux/cpumask.h>
>  #include <linux/percpu.h>
>  #include <net/genetlink.h>
> @@ -252,6 +253,9 @@ static int fill_pid(pid_t pid, struct ta
>  	/* fill in basic acct fields */
>  	bacct_add_tsk(stats, tsk);
>  
> +	/* fill in csa fields */
> +	csa_add_tsk(stats, tsk);
> +
>  	/* Define err: label here if needed */
>  	put_task_struct(tsk);
>  	return rc;
> Index: linux/include/linux/csa_kern.h
> ===================================================================
> --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> +++ linux/include/linux/csa_kern.h	2006-07-31 11:47:23.218410191 -0700
> @@ -0,0 +1,31 @@
> +/*
> + * This file is subject to the terms and conditions of the GNU General Public
> + * License.  See the file "COPYING" in the main directory of this archive
> + * for more details.
> + *
> + * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
> + */
> +
> +#ifndef _CSA_KERN_H
> +#define _CSA_KERN_H
> +
> +#ifdef CONFIG_CSA_ACCT
> +extern void csa_add_tsk(struct taskstats *, struct task_struct *);
> +#else
> +#define csa_add_tsk(x)		do { } while (0)

This won't compile right...number of args differ.

> +#endif
> +
> +/*
> + * Record revision levels.
> + *
> + * These are incremented to indicate that a record's format has changed since
> + * a previous release.
> + *
> + * History:     05000   The first rev in Linux
> + *              06000   Major rework to clean up unused fields and features.
> + *                      No binary compatibility with earlier rev.
> + *		07000	Convert to taskstats interface
> + */
> +#define REV_CSA		07000	/* Kernel: CSA base record */
> +
> +#endif	/* _CSA_KERN_H */
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/3] add CSA accounting to taskstats
  2006-07-31 20:39 ` Shailabh Nagar
@ 2006-07-31 22:03   ` Jay Lan
  2006-08-01  0:33     ` Jay Lan
  2006-07-31 22:13   ` Jay Lan
  1 sibling, 1 reply; 7+ messages in thread
From: Jay Lan @ 2006-07-31 22:03 UTC (permalink / raw)
  To: Shailabh Nagar
  Cc: Andrew Morton, lkml, Balbir Singh, Jes Sorensen, Chris Sturtivant,
	Tony Ernst

Shailabh Nagar wrote:
> Jay Lan wrote:
> 
>>This patch add CSA accounting fields to the taskstats struct
>>and a kernel/csa.c to fill the data on exit.
>>
>>
>>Signed-off-by:  Jay Lan <jlan@sgi.com>
>>
>>
>>------------------------------------------------------------------------
>>
>>Index: linux/include/linux/taskstats.h
>>===================================================================
>>--- linux.orig/include/linux/taskstats.h	2006-07-31 11:42:10.000000000 -0700
>>+++ linux/include/linux/taskstats.h	2006-07-31 11:50:00.412433042 -0700
>>@@ -107,6 +107,21 @@ struct taskstats {
>> 	__u64	ac_utime;		/* User CPU time [usec] */
>> 	__u64	ac_stime;		/* SYstem CPU time [usec] */
>> 	/* Basic Accounting Fields end */
>>+
>>+ 	/* CSA accounting fields start */
>>+ 	__u16	csa_revision;		/* CSA Revision */
> 
> 
> May be helpful to add a note here that every time csa_revision is changed,
> TASKSTATS_VERSION also needs to be bumped up.

Certainly! Thanks!

> 
> 
>>+ 	__u16	csa_pad[3];		/* Unused */
> 
> 
> 
>>+ 	__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	ac_minflt;		/* Minor Page Fault */
>>+ 	__u64	ac_majflt;		/* Major Page Fault */
> 
> 
> Can the number of prefixes be reduced ? In the space of a few fields, we have
> ac_*, csa_*, acct_* and plain (for hiwater_rss/vm)


Will do better in next round. I will see if people like to do away
the pre_ completely. Otherwise, i will keep ac_ for basic and plain
for CSA specific fields.

> 
> 
> 
>>+ 	__u64	ac_chr;			/* bytes read */
>>+ 	__u64	ac_chw;			/* bytes written */
>>+ 	__u64	ac_scr;			/* read syscalls */
>>+ 	__u64	ac_scw;			/* write syscalls */
> 
> 
> read_char,
> write_char,
> read_syscalls,
> write_syscalls,

Mmm, those are from task_struct.

Regards,
  - jay


> 
> perhaps (esp. if you're dropping the ac_ prefix) ?
> 
> 
>>+ 	/* CSA accounting fields end */
>> };
> 
> 
> 
>> 
>> 
>>Index: linux/init/Kconfig
>>===================================================================
>>--- linux.orig/init/Kconfig	2006-07-31 11:38:21.000000000 -0700
>>+++ linux/init/Kconfig	2006-07-31 11:47:23.214410140 -0700
>>@@ -182,6 +182,31 @@ config TASK_DELAY_ACCT
>> 
>> 	  Say N if unsure.
>> 
>>+config CSA_ACCT
>>+	bool "Enable CSA Job Accounting (EXPERIMENTAL)"
>>+	depends on TASKSTATS
>>+	help
>>+	  Comprehensive System Accounting (CSA) provides job level
>>+	  accounting of resource usage.  The accounting records are
>>+	  written by the kernel into a file.  CSA user level scripts
>>+	  and commands process the binary accounting records and
>>+	  combine them by job identifier within system boot uptime
>>+	  periods.  These accounting records are then used to produce
>>+	  reports and charge fees to users.
>>+
>>+	  Say Y here if you want job level accounting to be compiled
>>+	  into the kernel.  Say M here if you want the writing of
>>+	  accounting records portion of this feature to be a loadable
>>+	  module.  Say N here if you do not want job level accounting
>>+	  (the default).
> 
> 
> The description above is tied to jobs which don't exist in the kernel.
> There's no dependency of CSA on kernel-visible jobs anymore, right ?
> Perhaps the blurb can clarify that jobs are defined in user space.
> 
> 
>>+
>>+	  The CSA commands and scripts package needs to be installed
>>+	  to process the CSA accounting records.  See
>>+	  http://oss.sgi.com/projects/csa for further information
>>+	  about CSA and download instructions for the CSA commands
>>+	  package and documentation.
>>+
>>+
>> config SYSCTL
>> 	bool "Sysctl support" if EMBEDDED
>> 	default y
>>Index: linux/kernel/Makefile
>>===================================================================
>>--- linux.orig/kernel/Makefile	2006-07-31 11:38:21.000000000 -0700
>>+++ linux/kernel/Makefile	2006-07-31 11:47:23.218410191 -0700
>>@@ -50,6 +50,7 @@ obj-$(CONFIG_RCU_TORTURE_TEST) += rcutor
>> obj-$(CONFIG_RELAY) += relay.o
>> obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
>> obj-$(CONFIG_TASKSTATS) += taskstats.o
>>+obj-$(CONFIG_CSA_ACCT) += csa.o
>> 
>> ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER),y)
>> # According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
>>Index: linux/kernel/csa.c
>>===================================================================
>>--- /dev/null	1970-01-01 00:00:00.000000000 +0000
>>+++ linux/kernel/csa.c	2006-07-31 11:47:23.218410191 -0700
>>@@ -0,0 +1,46 @@
>>+/*
>>+ * This file is subject to the terms and conditions of the GNU General Public
>>+ * License.  See the file "COPYING" in the main directory of this archive
>>+ * for more details.
>>+ *
>>+ * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
>>+ */
>>+
>>+
>>+/*
>>+ *  CSA (Comprehensive System Accounting)
>>+ *  Job Accounting for Linux
>>+ *
>>+ *  This header file contains the definitions needed for job
>>+ *  accounting. The kernel CSA accounting module code and all
>>+ *  user-level programs that try to write or process the binary job
>>+ *  accounting data must include this file.
> 
> 
> Again, job dependency might need some clarification.
> 
> 
>>+ *
>>+ *  This kernel header file and the csa.h in the csa userland source
>>+ *  rpm share same data struct declaration and #define's. Do not modify
>>+ *  one without modify the other one as well. The compatibility between
>>+ *  userland and the kernel is ensured by using the 'ah_revision' field
>>+ *  of struct achead.
> 
> 
> Leftover from older documentation ?
> 
> 
>>+ *
>>+ */
>>+
>>+#include <linux/taskstats.h>
>>+#include <linux/csa_kern.h>
>>+#include <linux/sched.h>
>>+
>>+void csa_add_tsk(struct taskstats *stats, struct task_struct *p)
>>+{
>>+	stats->csa_revision = REV_CSA;
>>+	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->ac_minflt = p->min_flt;
>>+	stats->ac_majflt = p->maj_flt;
>>+	stats->ac_chr	= p->rchar;
>>+	stats->ac_chw	= p->wchar;
>>+	stats->ac_scr	= p->syscr;
>>+	stats->ac_scw	= p->syscw;
>>+}
>>Index: linux/kernel/taskstats.c
>>===================================================================
>>--- linux.orig/kernel/taskstats.c	2006-07-31 11:44:54.000000000 -0700
>>+++ linux/kernel/taskstats.c	2006-07-31 11:47:23.218410191 -0700
>>@@ -21,6 +21,7 @@
>> #include <linux/taskstats_kern.h>
>> #include <linux/acct.h>
>> #include <linux/delayacct.h>
>>+#include <linux/csa_kern.h>
>> #include <linux/cpumask.h>
>> #include <linux/percpu.h>
>> #include <net/genetlink.h>
>>@@ -252,6 +253,9 @@ static int fill_pid(pid_t pid, struct ta
>> 	/* fill in basic acct fields */
>> 	bacct_add_tsk(stats, tsk);
>> 
>>+	/* fill in csa fields */
>>+	csa_add_tsk(stats, tsk);
>>+
>> 	/* Define err: label here if needed */
>> 	put_task_struct(tsk);
>> 	return rc;
>>Index: linux/include/linux/csa_kern.h
>>===================================================================
>>--- /dev/null	1970-01-01 00:00:00.000000000 +0000
>>+++ linux/include/linux/csa_kern.h	2006-07-31 11:47:23.218410191 -0700
>>@@ -0,0 +1,31 @@
>>+/*
>>+ * This file is subject to the terms and conditions of the GNU General Public
>>+ * License.  See the file "COPYING" in the main directory of this archive
>>+ * for more details.
>>+ *
>>+ * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
>>+ */
>>+
>>+#ifndef _CSA_KERN_H
>>+#define _CSA_KERN_H
>>+
>>+#ifdef CONFIG_CSA_ACCT
>>+extern void csa_add_tsk(struct taskstats *, struct task_struct *);
>>+#else
>>+#define csa_add_tsk(x)		do { } while (0)
> 
> 
> This won't compile right...number of args differ.
> 
> 
>>+#endif
>>+
>>+/*
>>+ * Record revision levels.
>>+ *
>>+ * These are incremented to indicate that a record's format has changed since
>>+ * a previous release.
>>+ *
>>+ * History:     05000   The first rev in Linux
>>+ *              06000   Major rework to clean up unused fields and features.
>>+ *                      No binary compatibility with earlier rev.
>>+ *		07000	Convert to taskstats interface
>>+ */
>>+#define REV_CSA		07000	/* Kernel: CSA base record */
>>+
>>+#endif	/* _CSA_KERN_H */
>>
> 
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/3] add CSA accounting to taskstats
  2006-07-31 20:39 ` Shailabh Nagar
  2006-07-31 22:03   ` Jay Lan
@ 2006-07-31 22:13   ` Jay Lan
  1 sibling, 0 replies; 7+ messages in thread
From: Jay Lan @ 2006-07-31 22:13 UTC (permalink / raw)
  To: Shailabh Nagar
  Cc: Andrew Morton, lkml, Balbir Singh, Jes Sorensen, Chris Sturtivant,
	Tony Ernst

Shailabh Nagar wrote:
> Jay Lan wrote:

Sorry, my last reply was not complete.

> 

<snip>

>> 
>> 
>>Index: linux/init/Kconfig
>>===================================================================
>>--- linux.orig/init/Kconfig	2006-07-31 11:38:21.000000000 -0700
>>+++ linux/init/Kconfig	2006-07-31 11:47:23.214410140 -0700
>>@@ -182,6 +182,31 @@ config TASK_DELAY_ACCT
>> 
>> 	  Say N if unsure.
>> 
>>+config CSA_ACCT
>>+	bool "Enable CSA Job Accounting (EXPERIMENTAL)"
>>+	depends on TASKSTATS
>>+	help
>>+	  Comprehensive System Accounting (CSA) provides job level
>>+	  accounting of resource usage.  The accounting records are
>>+	  written by the kernel into a file.  CSA user level scripts
>>+	  and commands process the binary accounting records and
>>+	  combine them by job identifier within system boot uptime
>>+	  periods.  These accounting records are then used to produce
>>+	  reports and charge fees to users.
>>+
>>+	  Say Y here if you want job level accounting to be compiled
>>+	  into the kernel.  Say M here if you want the writing of
>>+	  accounting records portion of this feature to be a loadable
>>+	  module.  Say N here if you do not want job level accounting
>>+	  (the default).
> 
> 
> The description above is tied to jobs which don't exist in the kernel.
> There's no dependency of CSA on kernel-visible jobs anymore, right ?
> Perhaps the blurb can clarify that jobs are defined in user space.

Will redo this part.

> 
> 
>>+
>>+	  The CSA commands and scripts package needs to be installed
>>+	  to process the CSA accounting records.  See
>>+	  http://oss.sgi.com/projects/csa for further information
>>+	  about CSA and download instructions for the CSA commands
>>+	  package and documentation.
>>+
>>+
>> config SYSCTL
>> 	bool "Sysctl support" if EMBEDDED
>> 	default y
>>Index: linux/kernel/Makefile
>>===================================================================
>>--- linux.orig/kernel/Makefile	2006-07-31 11:38:21.000000000 -0700
>>+++ linux/kernel/Makefile	2006-07-31 11:47:23.218410191 -0700
>>@@ -50,6 +50,7 @@ obj-$(CONFIG_RCU_TORTURE_TEST) += rcutor
>> obj-$(CONFIG_RELAY) += relay.o
>> obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
>> obj-$(CONFIG_TASKSTATS) += taskstats.o
>>+obj-$(CONFIG_CSA_ACCT) += csa.o
>> 
>> ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER),y)
>> # According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
>>Index: linux/kernel/csa.c
>>===================================================================
>>--- /dev/null	1970-01-01 00:00:00.000000000 +0000
>>+++ linux/kernel/csa.c	2006-07-31 11:47:23.218410191 -0700
>>@@ -0,0 +1,46 @@
>>+/*
>>+ * This file is subject to the terms and conditions of the GNU General Public
>>+ * License.  See the file "COPYING" in the main directory of this archive
>>+ * for more details.
>>+ *
>>+ * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
>>+ */
>>+
>>+
>>+/*
>>+ *  CSA (Comprehensive System Accounting)
>>+ *  Job Accounting for Linux
>>+ *
>>+ *  This header file contains the definitions needed for job
>>+ *  accounting. The kernel CSA accounting module code and all
>>+ *  user-level programs that try to write or process the binary job
>>+ *  accounting data must include this file.
> 
> 
> Again, job dependency might need some clarification.
>
> 
>>+ *
>>+ *  This kernel header file and the csa.h in the csa userland source
>>+ *  rpm share same data struct declaration and #define's. Do not modify
>>+ *  one without modify the other one as well. The compatibility between
>>+ *  userland and the kernel is ensured by using the 'ah_revision' field
>>+ *  of struct achead.
> 
> 
> Leftover from older documentation ?

Will redo the above two sections.

> 
> 
>>+ *
>>+ */
>>+
>>+#include <linux/taskstats.h>
>>+#include <linux/csa_kern.h>
>>+#include <linux/sched.h>
>>+
>>+void csa_add_tsk(struct taskstats *stats, struct task_struct *p)
>>+{
>>+	stats->csa_revision = REV_CSA;
>>+	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->ac_minflt = p->min_flt;
>>+	stats->ac_majflt = p->maj_flt;
>>+	stats->ac_chr	= p->rchar;
>>+	stats->ac_chw	= p->wchar;
>>+	stats->ac_scr	= p->syscr;
>>+	stats->ac_scw	= p->syscw;
>>+}
>>Index: linux/kernel/taskstats.c
>>===================================================================
>>--- linux.orig/kernel/taskstats.c	2006-07-31 11:44:54.000000000 -0700
>>+++ linux/kernel/taskstats.c	2006-07-31 11:47:23.218410191 -0700
>>@@ -21,6 +21,7 @@
>> #include <linux/taskstats_kern.h>
>> #include <linux/acct.h>
>> #include <linux/delayacct.h>
>>+#include <linux/csa_kern.h>
>> #include <linux/cpumask.h>
>> #include <linux/percpu.h>
>> #include <net/genetlink.h>
>>@@ -252,6 +253,9 @@ static int fill_pid(pid_t pid, struct ta
>> 	/* fill in basic acct fields */
>> 	bacct_add_tsk(stats, tsk);
>> 
>>+	/* fill in csa fields */
>>+	csa_add_tsk(stats, tsk);
>>+
>> 	/* Define err: label here if needed */
>> 	put_task_struct(tsk);
>> 	return rc;
>>Index: linux/include/linux/csa_kern.h
>>===================================================================
>>--- /dev/null	1970-01-01 00:00:00.000000000 +0000
>>+++ linux/include/linux/csa_kern.h	2006-07-31 11:47:23.218410191 -0700
>>@@ -0,0 +1,31 @@
>>+/*
>>+ * This file is subject to the terms and conditions of the GNU General Public
>>+ * License.  See the file "COPYING" in the main directory of this archive
>>+ * for more details.
>>+ *
>>+ * Copyright (c) 2006 Silicon Graphics, Inc All Rights Reserved.
>>+ */
>>+
>>+#ifndef _CSA_KERN_H
>>+#define _CSA_KERN_H
>>+
>>+#ifdef CONFIG_CSA_ACCT
>>+extern void csa_add_tsk(struct taskstats *, struct task_struct *);
>>+#else
>>+#define csa_add_tsk(x)		do { } while (0)
> 
> 
> This won't compile right...number of args differ.

Sorry i did not catch this one. Thanks!

Regards,
  - jay


> 
> 
>>+#endif
>>+
>>+/*
>>+ * Record revision levels.
>>+ *
>>+ * These are incremented to indicate that a record's format has changed since
>>+ * a previous release.
>>+ *
>>+ * History:     05000   The first rev in Linux
>>+ *              06000   Major rework to clean up unused fields and features.
>>+ *                      No binary compatibility with earlier rev.
>>+ *		07000	Convert to taskstats interface
>>+ */
>>+#define REV_CSA		07000	/* Kernel: CSA base record */
>>+
>>+#endif	/* _CSA_KERN_H */
>>
> 
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/3] add CSA accounting to taskstats
  2006-07-31 22:03   ` Jay Lan
@ 2006-08-01  0:33     ` Jay Lan
  0 siblings, 0 replies; 7+ messages in thread
From: Jay Lan @ 2006-08-01  0:33 UTC (permalink / raw)
  To: Jay Lan
  Cc: Shailabh Nagar, Andrew Morton, lkml, Balbir Singh, Jes Sorensen,
	Chris Sturtivant, Tony Ernst

Jay Lan wrote:
> Shailabh Nagar wrote:
> 

<clip>

>>
>>> +     __u64    ac_chr;            /* bytes read */
>>> +     __u64    ac_chw;            /* bytes written */
>>> +     __u64    ac_scr;            /* read syscalls */
>>> +     __u64    ac_scw;            /* write syscalls */
>>
>>
>>
>> read_char,
>> write_char,
>> read_syscalls,
>> write_syscalls,
> 
> 
> Mmm, those are from task_struct.

Ooops, i was wrong. They were not from task_struct. Will change
to meaningful names as you suggested.

Regards,
- jay

> 
> Regards,
>  - jay
> 
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/3] add CSA accounting to taskstats
  2006-07-31 19:21 [patch 2/3] add CSA accounting to taskstats Jay Lan
  2006-07-31 20:39 ` Shailabh Nagar
@ 2006-08-16 10:52 ` Pavel Machek
  2006-08-16 17:22   ` Jay Lan
  1 sibling, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2006-08-16 10:52 UTC (permalink / raw)
  To: Jay Lan
  Cc: Andrew Morton, lkml, Shailabh Nagar, Balbir Singh, Jes Sorensen,
	Chris Sturtivant, Tony Ernst

Hi!

> Signed-off-by:  Jay Lan <jlan@sgi.com>
> 

> Index: linux/include/linux/taskstats.h
> ===================================================================
> --- linux.orig/include/linux/taskstats.h	2006-07-31 11:42:10.000000000 -0700
> +++ linux/include/linux/taskstats.h	2006-07-31 11:50:00.412433042 -0700
> @@ -107,6 +107,21 @@ struct taskstats {
>  	__u64	ac_utime;		/* User CPU time [usec] */
>  	__u64	ac_stime;		/* SYstem CPU time [usec] */
>  	/* Basic Accounting Fields end */
> +
> + 	/* CSA accounting fields start */
> + 	__u16	csa_revision;		/* CSA Revision */
> + 	__u16	csa_pad[3];		/* Unused */

I guess you have way too many TLAs here...

> +config CSA_ACCT
> +	bool "Enable CSA Job Accounting (EXPERIMENTAL)"
> +	depends on TASKSTATS
> +	help

"Enable Comprehensive System Accounting Job Accounting" . Ouch. So you
do not even know how to use those accronyms correctly.

I guess you should invent some better naming.


> +	  Comprehensive System Accounting (CSA) provides job level
> +	  accounting of resource usage.  The accounting records are
> +	  written by the kernel into a file.  CSA user level scripts
> +	  and commands process the binary accounting records and
> +	  combine them by job identifier within system boot uptime
> +	  periods.  These accounting records are then used to produce
> +	  reports and charge fees to users.
> +
> +	  Say Y here if you want job level accounting to be compiled
> +	  into the kernel.  Say M here if you want the writing of
> +	  accounting records portion of this feature to be a loadable
> +	  module.  Say N here if you do not want job level accounting
> +	  (the default).
> +
> +	  The CSA commands and scripts package needs to be installed
> +	  to process the CSA accounting records.  See
> +	  http://oss.sgi.com/projects/csa for further information
> +	  about CSA and download instructions for the CSA commands
> +	  package and documentation.

...long text and it *still* does not tell me what it is good for.

> +/*
> + * Record revision levels.
> + *
> + * These are incremented to indicate that a record's format has changed since
> + * a previous release.
> + *
> + * History:     05000   The first rev in Linux
> + *              06000   Major rework to clean up unused fields and features.
> + *                      No binary compatibility with earlier rev.
> + *		07000	Convert to taskstats interface
> + */
> +#define REV_CSA		07000	/* Kernel: CSA base record */

We normally drop back compatibility at merge...
									Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/3] add CSA accounting to taskstats
  2006-08-16 10:52 ` Pavel Machek
@ 2006-08-16 17:22   ` Jay Lan
  0 siblings, 0 replies; 7+ messages in thread
From: Jay Lan @ 2006-08-16 17:22 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Andrew Morton, lkml, Shailabh Nagar, Balbir Singh, Jes Sorensen,
	Chris Sturtivant, Tony Ernst

Pavel Machek wrote:
> Hi!

Hi Pavel,

Thanks much for your feedback.

However, the patchset you commented on was replaced by a new
patchset posted on 8/03:
http://marc.theaimsgroup.com/?l=linux-kernel&m=115457888801994&w=2

Thanks,
  - jay

> 
> 
>>Signed-off-by:  Jay Lan <jlan@sgi.com>
>>
> 
>>Index: linux/include/linux/taskstats.h
>>===================================================================
>>--- linux.orig/include/linux/taskstats.h	2006-07-31 11:42:10.000000000 -0700
>>+++ linux/include/linux/taskstats.h	2006-07-31 11:50:00.412433042 -0700
>>@@ -107,6 +107,21 @@ struct taskstats {
>> 	__u64	ac_utime;		/* User CPU time [usec] */
>> 	__u64	ac_stime;		/* SYstem CPU time [usec] */
>> 	/* Basic Accounting Fields end */
>>+
>>+ 	/* CSA accounting fields start */
>>+ 	__u16	csa_revision;		/* CSA Revision */
>>+ 	__u16	csa_pad[3];		/* Unused */
> 
> 
> I guess you have way too many TLAs here...
> 
> 
>>+config CSA_ACCT
>>+	bool "Enable CSA Job Accounting (EXPERIMENTAL)"
>>+	depends on TASKSTATS
>>+	help
> 
> 
> "Enable Comprehensive System Accounting Job Accounting" . Ouch. So you
> do not even know how to use those accronyms correctly.
> 
> I guess you should invent some better naming.
> 
> 
> 
>>+	  Comprehensive System Accounting (CSA) provides job level
>>+	  accounting of resource usage.  The accounting records are
>>+	  written by the kernel into a file.  CSA user level scripts
>>+	  and commands process the binary accounting records and
>>+	  combine them by job identifier within system boot uptime
>>+	  periods.  These accounting records are then used to produce
>>+	  reports and charge fees to users.
>>+
>>+	  Say Y here if you want job level accounting to be compiled
>>+	  into the kernel.  Say M here if you want the writing of
>>+	  accounting records portion of this feature to be a loadable
>>+	  module.  Say N here if you do not want job level accounting
>>+	  (the default).
>>+
>>+	  The CSA commands and scripts package needs to be installed
>>+	  to process the CSA accounting records.  See
>>+	  http://oss.sgi.com/projects/csa for further information
>>+	  about CSA and download instructions for the CSA commands
>>+	  package and documentation.
> 
> 
> ...long text and it *still* does not tell me what it is good for.
> 
> 
>>+/*
>>+ * Record revision levels.
>>+ *
>>+ * These are incremented to indicate that a record's format has changed since
>>+ * a previous release.
>>+ *
>>+ * History:     05000   The first rev in Linux
>>+ *              06000   Major rework to clean up unused fields and features.
>>+ *                      No binary compatibility with earlier rev.
>>+ *		07000	Convert to taskstats interface
>>+ */
>>+#define REV_CSA		07000	/* Kernel: CSA base record */
> 
> 
> We normally drop back compatibility at merge...
> 									Pavel
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-08-16 17:23 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-31 19:21 [patch 2/3] add CSA accounting to taskstats Jay Lan
2006-07-31 20:39 ` Shailabh Nagar
2006-07-31 22:03   ` Jay Lan
2006-08-01  0:33     ` Jay Lan
2006-07-31 22:13   ` Jay Lan
2006-08-16 10:52 ` Pavel Machek
2006-08-16 17:22   ` Jay Lan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox