Tôi đang dọn sạch ổ cứng trên một số HĐH Linux 4.x bằng lệnh này:
sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
Và tôi đã mở một tty khác và bắt đầu sudo htop
và nhận thấy điều này:
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
Giá trị cho IO_WBYTES
có vẻ khá bình thường, nhưng IO_RBYTES
vẫn ở mức 4 KiB và không bao giờ thay đổi.
Tôi đã chạy một vài chương trình khác, ví dụ
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
và đã rất ngạc nhiên khi thấy không ai trong số họ tạo ra nhiều IO_RBYTES
hay IO_WBYTES
.
Tôi nghĩ rằng điều này không cụ thể cho bất kỳ chương trình nào, nhưng tại sao không đọc /dev/zero
và ghi để /dev/{zero,null}
tính là byte I / O?
/dev/null
cuối cùng không can thiệp vào phần cứng như vậy và không làm tắc nghẽn xe buýt I / O. Thực hiện đến cùng cực; đọc / ghi vào / từ bộ nhớ cũng là I / O? Tất nhiên, không có sự phân định khó khăn cho những điều này, và tất cả phụ thuộc vào quan điểm của bạn trong những điều này, và quan điểm đó hữu ích như thế nào đối với bạn.
/dev/{null,zero}
(thường không phải là nút cổ chai). Đó chỉ là quan điểm của tôi thôi :)
read(2)
và write(2)
được tính là I / O, điều này rất hợp lý theo nghĩa riêng của nó.