[PATCH]: adding counters to count bytes read/written

From: Manik Raina (manik@cisco.com)
Date: Mon May 20 2002 - 04:39:36 EST


Hi Linus,

        This patch adds 2 counters to the task_struct for
        counting how many bytes were read/written using
        the read()/write() system calls.

        These counters may be useful in determining how
        many IO requests are made by each process.

diff -u -r ../temp/linux-2.5.12/fs/proc/array.c ./fs/proc/array.c
--- ../temp/linux-2.5.12/fs/proc/array.c Wed May 1 05:38:45 2002
+++ ./fs/proc/array.c Mon May 20 09:18:16 2002
@@ -346,7 +346,7 @@
         read_unlock(&tasklist_lock);
         res = sprintf(buffer,"%d (%s) %c %d %d %d %d %d %lu %lu \
 %lu %lu %lu %lu %lu %ld %ld %ld %ld %ld %ld %lu %lu %ld %lu %lu %lu %lu %lu \
-%lu %lu %lu %lu %lu %lu %lu %lu %d %d\n",
+%lu %lu %lu %lu %lu %lu %lu %lu %d %d %d %d\n",
                 task->pid,
                 task->comm,
                 state,
@@ -388,8 +388,10 @@
                 wchan,
                 task->nswap,
                 task->cnswap,
- task->exit_signal,
- task->thread_info->cpu);
+ task->exit_signal,
+ task->thread_info->cpu,
+ task->bytes_read,
+ task->bytes_written);
         if(mm)
                 mmput(mm);
         return res;
diff -u -r ../temp/linux-2.5.12/fs/read_write.c ./fs/read_write.c
--- ../temp/linux-2.5.12/fs/read_write.c Wed May 1 05:38:59 2002
+++ ./fs/read_write.c Mon May 20 09:48:30 2002
@@ -180,8 +180,10 @@
                                         ret = read(file, buf, count, &file->f_pos);
                         }
                 }
- if (ret > 0)
+ if (ret > 0) {
                         dnotify_parent(file->f_dentry, DN_ACCESS);
+ current->bytes_read += ret;
+ }
                 fput(file);
         }
         return ret;
@@ -206,8 +208,10 @@
                                         ret = write(file, buf, count, &file->f_pos);
                         }
                 }
- if (ret > 0)
+ if (ret > 0) {
                         dnotify_parent(file->f_dentry, DN_MODIFY);
+ current->bytes_written += ret;
+ }
                 fput(file);
         }
         return ret;
diff -u -r ../temp/linux-2.5.12/include/linux/sched.h ./include/linux/sched.h
--- ../temp/linux-2.5.12/include/linux/sched.h Wed May 1 05:38:47 2002
+++ ./include/linux/sched.h Mon May 20 09:25:32 2002
@@ -315,6 +315,7 @@
         int link_count, total_link_count;
         struct tty_struct *tty; /* NULL if no tty */
         unsigned int locks; /* How many file locks are being held */
+ unsigned int bytes_written, bytes_read;
 /* ipc stuff */
         struct sysv_sem sysvsem;
 /* CPU-specific state of this task */

-
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/



This archive was generated by hypermail 2b29 : Thu May 23 2002 - 22:00:18 EST