All of lore.kernel.org
 help / color / mirror / Atom feed
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 ~.

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.