Я освобождаю жесткий диск на некоторых ОС Linux 4.x с помощью этой команды:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
И я открыл другой tty и начал sudo htop
и заметил это:
PID USER PRI NI CPU% RES SHR IO_RBYTES IO_WBYTES S TIME+ Command
4598 root 20 0 15.5 1820 1596 4096 17223823 D 1:14.11 pv -pterb /dev/zero
Значение для IO_WBYTES
кажется вполне нормальным, но IO_RBYTES
остается на уровне 4 КиБ и никогда не меняется.
Я запустил несколько других программ, например
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
и был удивлен, увидев, что ни один из них не генерирует много IO_RBYTES
или IO_WBYTES
.
Я думаю, что это не относится к какой-либо программе, но почему бы не считывать /dev/zero
и записывать, чтобы /dev/{zero,null}
считаться байтами ввода / вывода?
/dev/null
не в конечном итоге интерфейс с таким оборудованием и не забивает шины ввода-вывода. Взятый до крайности; чтение / запись в / из памяти также ввод / вывод? Конечно, нет четкого разграничения для этих вещей, и все зависит от того, какую перспективу вы принимаете в этих вещах, и насколько полезной эта перспектива оказывается для вас.
/dev/{null,zero}
(которое обычно не является узким местом). Это только моя точка зрения, хотя :)
read(2)
и write(2)
считается I / O, что очень разумно в своем собственном смысле.