iowait รวมเวลาที่รอสายเครือข่ายหรือไม่


19

proc(5)manpage อธิบาย iowait ว่า "เวลาที่รอคอยสำหรับ IO เสร็จสมบูรณ์" นี่เป็นคำอธิบายส่วนใหญ่ในคำถามก่อนหน้านี้ คำถามของฉันคือ: ในขณะที่รอการบล็อก IO สิ่งนี้รวมถึงการรอการบล็อกเครือข่าย IO หรือเฉพาะ IO ท้องถิ่นหรือไม่

คำตอบ:


20

มันหมายถึงการรอ "File I / O" ซึ่งก็คือการเรียกการอ่าน / เขียนใด ๆ บนไฟล์ที่อยู่ในระบบไฟล์ที่เมาท์ แต่ก็อาจนับเวลาที่รอการแลกเปลี่ยนหรือหน้าโหลดโหลดเข้าสู่หน่วยความจำเช่นไลบรารี ในหน่วยความจำหรือหน้าไฟล์ mmap () 'd ที่ไม่ได้อยู่ในหน่วยความจำ

ไม่นับเวลาที่รอวัตถุ IPC เช่นซ็อกเก็ตท่อ ttys เลือก () โพล () โพล () นอน () หยุดชั่วคราว) () เป็นต้น

โดยทั่วไปแล้วถึงเวลาที่เธรดใช้เพื่อรอดิสก์ซิงโครนัส - ในช่วงเวลานี้มันสามารถเรียกใช้ในทางทฤษฎี แต่ไม่สามารถทำได้เนื่องจากข้อมูลบางอย่างที่ต้องการยังไม่มีอยู่ในขณะนี้ กระบวนการดังกล่าวมักจะปรากฏในสถานะ "D" และมีส่วนร่วมในการโหลดเฉลี่ยของกล่อง

ฉันคิดว่าสิ่งนี้อาจรวมถึงไฟล์ IO บนระบบไฟล์ของเครือข่าย


ในฐานะที่เป็น nfs IO เป็นไฟล์ I / O เช่นกันฉันเดาว่าคุณพูดถูก ;-) #
4254

สิ่งที่เกี่ยวกับอินเตอร์เฟซย้อนกลับ? linux ปฏิบัติต่ออินเตอร์เฟสประเภทนี้อย่างไร?
Jalal Mostafa

3

เวลา iowait คือระยะเวลาที่กระบวนการใช้ในเคอร์เนล I / O scheduler เท่าที่ฉันรู้มันไม่มีอะไรเกี่ยวข้องกับเครือข่าย I / O ตราบเท่าที่การเชื่อมต่อซ็อกเก็ตปกติไป อย่างไรก็ตามจะรวมเวลาที่ใช้รอระบบไฟล์เครือข่ายเช่น NFS


2

มันทำ

บังเอิญหนึ่งในเซิร์ฟเวอร์ที่ฉันจัดการกำลังประสบกับ iowait สูงซึ่งเกิดจากการเมานต์ NFS ที่ไม่ดี

top - 06:19:03 up 14 days, 10:15,  3 users,  load average: 9.67, 11.83, 12.31
Tasks: 135 total,   1 running, 134 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.2%sy,  0.0%ni,  0.0%id, 99.7%wa,  0.0%hi,  0.0%si,  0.0%st

top - 06:22:55 up 14 days, 10:19,  3 users,  load average: 10.58, 11.13, 11.89
Tasks: 137 total,   1 running, 136 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.2%sy,  0.0%ni,  0.0%id, 99.8%wa,  0.0%hi,  0.0%si,  0.0%st

และดูกระบวนการในDรัฐ

root     27011  0.0  0.0      0     0 ?        S    03:12   0:00 [nfsd4]
root     27012  0.0  0.0      0     0 ?        S    03:12   0:00 [nfsd4_callbacks]
root     27013  0.0  0.0      0     0 ?        D    03:12   0:01 [nfsd]
root     27014  0.0  0.0      0     0 ?        D    03:12   0:01 [nfsd]
root     27015  0.0  0.0      0     0 ?        D    03:12   0:01 [nfsd]
root     27016  0.0  0.0      0     0 ?        D    03:12   0:01 [nfsd]

2

iowait รวมถึงการโทรผ่านเครือข่าย ฉันพูดแบบนี้เพราะ NFS ได้รับการจัดการเป็นจำนวนมากระบบไฟล์ท้องถิ่นของ linux จากมุมมองของเคอร์เนล:

$ vim linux-2.6.38.2/fs/nfs/file.c 

const struct file_operations nfs_file_operations = {
        .llseek         = nfs_file_llseek,
        .read           = do_sync_read,
        .write          = do_sync_write,
        .aio_read       = nfs_file_read,
        .aio_write      = nfs_file_write,
        .mmap           = nfs_file_mmap,
        .open           = nfs_file_open,
        .flush          = nfs_file_flush,
        .release        = nfs_file_release,
        .fsync          = nfs_file_fsync,
        .lock           = nfs_lock,
        .flock          = nfs_flock,
        .splice_read    = nfs_file_splice_read,
        .splice_write   = nfs_file_splice_write,
        .check_flags    = nfs_check_flags,
        .setlease       = nfs_setlease,
};

เมื่อกระบวนการเรียกใช้ write on file descriptor 5 สิ่งนี้จะเกิดขึ้น:

files->fd_array[5]->f_op->write(argv.......)

ดังนั้นกระบวนการจึงไม่ทราบว่าระบบไฟล์ชนิดใดกำลังใช้งาน (vfs magic) และ iowait นั้นเหมือนกันกับระบบไฟล์โลคอล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.