ฉันกำลังล้างฮาร์ดไดรฟ์ในระบบปฏิบัติการ 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 KiB และไม่เคยเปลี่ยนแปลง
ฉันรันโปรแกรมอื่นสองสามตัวอย่างเช่น
dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
และรู้สึกประหลาดใจที่จะเห็นไม่มีของพวกเขาสร้างจำนวนมากหรือIO_RBYTES
IO_WBYTES
ฉันคิดว่านี่ไม่เฉพาะเจาะจงกับโปรแกรมใด ๆ แต่ทำไมไม่อ่าน/dev/zero
และเขียนให้/dev/{zero,null}
นับเป็น I / O ไบต์
/dev/null
ไม่ต้องเชื่อมต่อกับฮาร์ดแวร์ดังกล่าวและไม่อุดตันรถเมล์ I / O นำไปมาก จะอ่าน / เขียนไปยัง / จากหน่วยความจำด้วย I / O หรือไม่ แน่นอนว่าไม่มีการวิเคราะห์อย่างหนักสำหรับสิ่งเหล่านี้และทุกอย่างขึ้นอยู่กับมุมมองที่คุณใช้ในสิ่งเหล่านี้และมุมมองที่เป็นประโยชน์ต่อคุณ
/dev/{null,zero}
(ซึ่งโดยปกติจะไม่ใช่คอขวด) นั่นเป็นเพียงมุมมองของฉัน :)
read(2)
และwrite(2)
นับเป็น I / O ซึ่งสมเหตุสมผลมากในแง่ของตัวเอง