[PATCH v2 1/2] proc_pid_io.5: stats include children

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This file is like getrusage(2) RUSAGE_SELF + RUSAGE_CHILDREN,
the current wording implies it's like just RUSAGE_SELF.

Compare:
  #include <fcntl.h>
  #include <signal.h>
  #include <string.h>
  #include <sys/wait.h>
  #include <unistd.h>

  void copy() {
    char buf[1024];
    int fd = open("/proc/self/io", 0);
    write(1, buf, read(fd, buf, sizeof(buf)));
    close(fd);
  }

  int main() {
    copy();
    copy();
    if (!fork()) {
    zero:;
      int fd = open("/dev/zero", 0);
      char buf[64 * 1024] = {};
      write(1, buf, 10000);
      for (int i = 0; i < 1000; ++i)
        read(fd, buf, sizeof(buf));
      _exit(0);
    }
    sleep(1);
    copy();
    wait(NULL);
    copy();
    signal(SIGCHLD, SIG_IGN);
    if (!fork())
      goto zero;
    sleep(1);
    copy();
    wait(NULL);
    copy();
  }
yielding
  rchar: 3980
  wchar: 0
  syscr: 9
  syscw: 0
  read_bytes: 2968
  write_bytes: 0
  cancelled_write_bytes: 0

  rchar: 4076
  wchar: 96
  syscr: 10
  syscw: 1
  read_bytes: 2968
  write_bytes: 96
  cancelled_write_bytes: 0

  rchar: 4175
  wchar: 195
  syscr: 11
  syscw: 2
  read_bytes: 2968
  write_bytes: 195
  cancelled_write_bytes: 0

  rchar: 65540276
  wchar: 10296
  syscr: 1012
  syscw: 4
  read_bytes: 2968
  write_bytes: 10296
  cancelled_write_bytes: 0

  rchar: 65540387
  wchar: 10407
  syscr: 1013
  syscw: 5
  read_bytes: 2968
  write_bytes: 10407
  cancelled_write_bytes: 0

  rchar: 65540498
  wchar: 10518
  syscr: 1014
  syscw: 6
  read_bytes: 2968
  write_bytes: 10518
  cancelled_write_bytes: 0

Just s/process/& and its waited-for children/ but re-broken per review.

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@xxxxxxxxxxxxxxxxxx>
---
 man5/proc_pid_io.5 | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/man5/proc_pid_io.5 b/man5/proc_pid_io.5
index d6eaebf5d..dc75a91de 100644
--- a/man5/proc_pid_io.5
+++ b/man5/proc_pid_io.5
@@ -11,7 +11,9 @@ .SH DESCRIPTION
 .TP
 .IR /proc/ pid /io " (since Linux 2.6.20)"
 .\" commit 7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2
-This file contains I/O statistics for the process, for example:
+This file contains I/O statistics
+for the process and its waited-for children,
+for example:
 .IP
 .in +4n
 .EX
@@ -30,7 +32,9 @@ .SH DESCRIPTION
 .RS
 .TP
 .IR rchar ": characters read"
-The number of bytes which this task has caused to be read from storage.
+The number of bytes
+which this task and its waited-for children
+have 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.
@@ -40,8 +44,9 @@ .SH DESCRIPTION
 pagecache).
 .TP
 .IR wchar ": characters written"
-The number of bytes which this task has caused, or shall cause to be written
-to disk.
+The number of bytes
+which this task and its waited-for children
+have caused, or shall cause to be written to disk.
 Similar caveats apply here as with
 .IR rchar .
 .TP
@@ -60,20 +65,24 @@ .SH DESCRIPTION
 .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.
+Attempt to count the number of bytes
+which this process and its waited-for children
+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.
+Attempt to count the number of bytes
+which this process and its waited-for children
+caused to be sent to the storage layer.
 .TP
 .IR cancelled_write_bytes :
 The big inaccuracy here is truncate.
 If a process writes 1 MB to a file and then deletes the file,
 it will in fact perform no writeout.
 But it will have been accounted as having caused 1 MB of write.
-In other words: this field represents the number of bytes which this process
+In other words:
+this field represents the number of bytes
+which this process and its waited-for children
 caused to not happen, by truncating pagecache.
 A task can cause "negative" I/O too.
 If this task truncates some dirty pagecache,
-- 
2.39.2

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux