proc_pid_io(5) File Formats Manual proc_pid_io(5)

/proc/pid/io - I/O statistics

/proc/pid/io (since Linux 2.6.20)
This file contains I/O statistics for the process and its waited-for children, for example:

# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0

The fields are as follows:
The number of bytes returned by successful read(2) and similar system calls.
The number of bytes returned by successful write(2) and similar system calls.
The number of "file read" system calls—those from the read(2) family, sendfile(2), copy_file_range(2), and ioctl(2) BTRFS_IOC_ENCODED_READ[_32] (including when invoked by the kernel as part of other syscalls).
The number of "file write" system calls—those from the write(2) family, sendfile(2), copy_file_range(2), and ioctl(2) BTRFS_IOC_ENCODED_WRITE[_32] (including when invoked by the kernel as part of other syscalls).
The number of bytes really fetched from the storage layer. This is accurate for block-backed filesystems.
The number of bytes really sent to the storage layer.
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 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. cancelled_write_bytes applies to I/O already accounted-for in write_bytes.
Permission to access this file is governed by ptrace(2) access mode PTRACE_MODE_READ_FSCREDS.

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.

getrusage(2), proc(5)

2024-03-18 Linux man-pages 6.7