From: Levent Serinol <lserinol@gmail.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>,
jlan@engr.sgi.com
Subject: Re: [PATCH] per process I/O statistics for userspace
Date: Wed, 14 Sep 2005 23:17:07 +0300 [thread overview]
Message-ID: <2c1942a705091413171e63bf55@mail.gmail.com> (raw)
In-Reply-To: <20050914092338.GA2260@elf.ucw.cz>
Hi,
You're right. Also, this information differs from other ones. So,
putting it into another file makes sense.
Here is the better one which puts statistics in a file called iostat.
================================================================
--- linux-2.6.13/fs/proc/array.c.org 2005-08-29 02:41:01.000000000 +0300
+++ linux-2.6.13/fs/proc/array.c 2005-09-14 22:05:16.000000000 +0300
@@ -482,3 +482,8 @@ int proc_pid_statm(struct task_struct *t
return sprintf(buffer,"%d %d %d %d %d %d %d\n",
size, resident, shared, text, lib, data, 0);
}
+
+int proc_pid_iostat(struct task_struct *task, char *buffer)
+{
+ return sprintf(buffer,"%llu %llu\n",task->rchar,task->wchar);
+}
--- linux-2.6.13/fs/proc/base.c.org 2005-08-29 02:41:01.000000000 +0300
+++ linux-2.6.13/fs/proc/base.c 2005-09-14 22:04:03.000000000 +0300
@@ -86,6 +86,7 @@ enum pid_directory_inos {
PROC_TGID_FD_DIR,
PROC_TGID_OOM_SCORE,
PROC_TGID_OOM_ADJUST,
+ PROC_TGID_IOSTAT,
PROC_TID_INO,
PROC_TID_STATUS,
PROC_TID_MEM,
@@ -123,6 +124,7 @@ enum pid_directory_inos {
PROC_TID_FD_DIR = 0x8000, /* 0x8000-0xffff */
PROC_TID_OOM_SCORE,
PROC_TID_OOM_ADJUST,
+ PROC_TID_IOSTAT,
};
struct pid_entry {
@@ -169,6 +171,7 @@ static struct pid_entry tgid_base_stuff[
#ifdef CONFIG_AUDITSYSCALL
E(PROC_TGID_LOGINUID, "loginuid", S_IFREG|S_IWUSR|S_IRUGO),
#endif
+ E(PROC_TGID_IOSTAT, "iostat", S_IFREG|S_IRUGO),
{0,0,NULL,0}
};
static struct pid_entry tid_base_stuff[] = {
@@ -205,6 +208,7 @@ static struct pid_entry tid_base_stuff[]
#ifdef CONFIG_AUDITSYSCALL
E(PROC_TID_LOGINUID, "loginuid", S_IFREG|S_IWUSR|S_IRUGO),
#endif
+ E(PROC_TID_IOSTAT, "iostat", S_IFREG|S_IRUGO),
{0,0,NULL,0}
};
@@ -1596,6 +1600,11 @@ static struct dentry *proc_pident_lookup
inode->i_fop = &proc_loginuid_operations;
break;
#endif
+ case PROC_TID_IOSTAT:
+ case PROC_TGID_IOSTAT:
+ inode->i_fop = &proc_info_file_operations;
+ ei->op.proc_read = proc_pid_iostat;
+ break;
default:
printk("procfs: impossible type (%d)",p->type);
iput(inode);
--- linux-2.6.13/fs/proc/internal.h.org 2005-09-14 22:07:07.000000000 +0300
+++ linux-2.6.13/fs/proc/internal.h 2005-09-14 22:06:41.000000000 +0300
@@ -36,6 +36,7 @@ extern int proc_tid_stat(struct task_str
extern int proc_tgid_stat(struct task_struct *, char *);
extern int proc_pid_status(struct task_struct *, char *);
extern int proc_pid_statm(struct task_struct *, char *);
+extern int proc_pid_iostat(struct task_struct *, char *);
static inline struct task_struct *proc_task(struct inode *inode)
{
=================================================================
On 9/14/05, Pavel Machek <pavel@ucw.cz> wrote:
> Hi!
>
> > with following patch, userspace processes/utilities will be able to
> > access per process I/O statistics. for example, top like utilites can
> > use this information.
>
> Nice, but should not this perhaps go into the other file? Adding more
> integers into long line does not seem nice...
> Pavel
>
> >
> > --- linux-2.6.13/fs/proc/array.c.org 2005-08-29 02:41:01.000000000 +0300
> > +++ linux-2.6.13/fs/proc/array.c 2005-09-12 10:22:55.000000000 +0300
> > @@ -408,7 +408,7 @@ static int do_task_stat(struct task_stru
> >
> > res = sprintf(buffer,"%d (%s) %c %d %d %d %d %d %lu %lu \
> > %lu %lu %lu %lu %lu %ld %ld %ld %ld %d %ld %llu %lu %ld %lu %lu %lu %lu %lu \
> > -%lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu\n",
> > +%lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu %llu %llu\n",
> > task->pid,
> > tcomm,
> > state,
> > @@ -453,7 +453,9 @@ static int do_task_stat(struct task_stru
> > task->exit_signal,
> > task_cpu(task),
> > task->rt_priority,
> > - task->policy);
> > + task->policy,
> > + task->rchar,
> > + task->wchar);
> > if(mm)
> > mmput(mm);
> > return res;
> > --
> > Signed-off-by: Levent Serinol <lserinol@gmail.com>
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
>
> --
> if you have sharp zaurus hardware you don't need... you know my address
>
--
Stay out of the road, if you want to grow old.
~ Pink Floyd ~.
next prev parent reply other threads:[~2005-09-14 20:17 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-12 12:27 [PATCH] per process I/O statistics for userspace Levent Serinol
2005-09-14 9:23 ` Pavel Machek
2005-09-14 20:17 ` Levent Serinol [this message]
2005-09-14 20:24 ` Andrew Morton
2005-09-14 21:06 ` Jay Lan
2005-09-17 17:36 ` Levent Serinol
2005-09-17 20:58 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2c1942a705091413171e63bf55@mail.gmail.com \
--to=lserinol@gmail.com \
--cc=akpm@osdl.org \
--cc=jlan@engr.sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox