summaryrefslogtreecommitdiffstats
path: root/man/man5/proc_pid_io.5
diff options
context:
space:
mode:
Diffstat (limited to 'man/man5/proc_pid_io.5')
-rw-r--r--man/man5/proc_pid_io.5100
1 files changed, 100 insertions, 0 deletions
diff --git a/man/man5/proc_pid_io.5 b/man/man5/proc_pid_io.5
new file mode 100644
index 000000000..a208e748f
--- /dev/null
+++ b/man/man5/proc_pid_io.5
@@ -0,0 +1,100 @@
+.\" Copyright (C) 1994, 1995, Daniel Quinlan <quinlan@yggdrasil.com>
+.\" Copyright (C) 2002-2008, 2017, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Copyright (C) 2023, Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: GPL-3.0-or-later
+.\"
+.TH proc_pid_io 5 (date) "Linux man-pages (unreleased)"
+.SH NAME
+/proc/pid/io \- I/O statistics
+.SH DESCRIPTION
+.TP
+.IR /proc/ pid /io " (since Linux 2.6.20)"
+.\" commit 7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2
+This file contains I/O statistics
+for the process and its waited-for children,
+for example:
+.IP
+.in +4n
+.EX
+.RB "#" " cat /proc/3828/io"
+rchar: 323934931
+wchar: 323929600
+syscr: 632687
+syscw: 632675
+read_bytes: 0
+write_bytes: 323932160
+cancelled_write_bytes: 0
+.EE
+.in
+.IP
+The fields are as follows:
+.RS
+.TP
+.IR rchar ": characters read"
+The number of bytes
+returned by successful
+.BR read (2)
+and similar system calls.
+.TP
+.IR wchar ": characters written"
+The number of bytes
+returned by successful
+.BR write (2)
+and similar system calls.
+.TP
+.IR syscr ": read syscalls"
+The number of "file read" system calls\[em]those from the
+.BR read (2)
+family,
+.BR sendfile (2),
+.BR copy_file_range (2),
+and
+.BR ioctl (2)
+.BR BTRFS_IOC_ENCODED_READ [ _32 ]
+(including when invoked by the kernel as part of other syscalls).
+.TP
+.IR syscw ": write syscalls"
+The number of "file write" system calls\[em]those from the
+.BR write (2)
+family,
+.BR sendfile (2),
+.BR copy_file_range (2),
+and
+.BR ioctl (2)
+.BR BTRFS_IOC_ENCODED_WRITE [ _32 ]
+(including when invoked by the kernel as part of other syscalls).
+.TP
+.IR read_bytes ": bytes read"
+The number of bytes really fetched from the storage layer.
+This is accurate for block-backed filesystems.
+.TP
+.IR write_bytes ": bytes written"
+The number of bytes really sent to the storage layer.
+.TP
+.IR cancelled_write_bytes :
+The above statistics fail to account for truncation:
+if a process writes 1 MB to a regular file and then removes it,
+said 1 MB will not be written, but
+.I will
+have nevertheless been accounted as a 1 MB write.
+This field represents the number of bytes "saved" from I/O writeback.
+This can yield to having done negative I/O
+if caches dirtied by another process are truncated.
+.I cancelled_write_bytes
+applies to I/O already accounted-for in
+.IR write_bytes .
+.RE
+.IP
+Permission to access this file is governed by
+.BR ptrace (2)
+access mode
+.BR PTRACE_MODE_READ_FSCREDS .
+.SH CAVEATS
+These counters are not atomic:
+on systems where 64-bit integer operations may tear,
+a counter could be updated simultaneously with a read,
+yielding an incorrect intermediate value.
+.SH SEE ALSO
+.BR getrusage (2),
+.BR proc (5)