diff -up man-pages-3.53/man5/proc.5.orig man-pages-3.53/man5/proc.5 --- man-pages-3.53/man5/proc.5.orig 2013-07-31 08:45:56.000000000 +0200 +++ man-pages-3.53/man5/proc.5 2013-08-02 13:00:55.062278000 +0200 @@ -59,7 +59,7 @@ .\" to see what information could be imported from that file .\" into this file. .\" -.TH PROC 5 2013-06-27 "Linux" "Linux Programmer's Manual" +.TH PROC 5 2013-08-01 "Linux" "Linux Programmer's Manual" .SH NAME proc \- process information pseudo-file system .SH DESCRIPTION @@ -350,9 +350,88 @@ file access mode and file status flags ( .BR open (2)). The files in this directory are readable only by the owner of the process. -.\" FIXME document /proc/[pid]/io -.\" .TP -.\" .IR /proc/[pid]/io " (since kernel 2.6.20)" +.TP +.IR /proc/[pid]/io " (since kernel 2.6.20)" +.\" commit 7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2 +This file contains I/O statistics for the process, for example: +.in +4n +.nf + +.RB "#" " cat /proc/3828/io" +rchar: 323934931 +wchar: 323929600 +syscr: 632687 +syscw: 632675 +read_bytes: 0 +write_bytes: 323932160 +cancelled_write_bytes: 0 +.fi +.in + +The fields are as follows: +.RS +.TP +.IR rchar ": characters read" +The number of bytes which this task has caused to be read from storage. +This is simply the sum of bytes which this process passed to +.BR read (2) +and similar system calls. +It includes things such as terminal I/O and +is unaffected by whether or not actual +physical disk I/O was required (the read might have been satisfied from +pagecache). +.TP +.IR wchar ": characters written" +The number of bytes which this task has caused, or shall cause to be written +to disk. +Similar caveats apply here as with +.IR rchar . +.TP +.IR syscr ": read syscalls" +Attempt to count the number of read I/O operations\(emthat is, +system calls such as +.BR read (2) +and +.BR pread (2). +.TP +.IR syscw ": write syscalls" +Attempt to count the number of write I/O operations\(emthat is, +system calls such as +.BR write (2) +and +.BR pwrite (2). +.TP +.IR read_bytes ": bytes read" +Attempt to count the number of bytes which this process really did cause to +be fetched from the storage layer. +This is accurate for block-backed filesystems. +.TP +.IR write_bytes ": bytes written" +Attempt to count the number of bytes which this process caused to be sent to +the storage layer. +.TP +.IR cancelled_write_bytes : +The big inaccuracy here is truncate. +If a process writes 1MB to a file and then deletes the file, +it will in fact perform no writeout. +But it will have been accounted as having caused 1MB of write. +In other words: this field represents the number of bytes which this process +caused to not happen, by truncating pagecache. +A task can cause "negative" I/O too. +If this task truncates some dirty pagecache, +some I/O which another task has been accounted for +(in its +.IR write_bytes ) +will not be happening. +.RE +.IP +.IR Note : +In the current implementation, things are a bit racy on 32-bit systems: +if process A reads process B's +.I /proc/[pid]/io +while process B is updating one of these 64-bit counters, +process A could see an intermediate result. +.RE .TP .IR /proc/[pid]/limits " (since kernel 2.6.24)" This file displays the soft limit, hard limit, and units of measurement