Включено ли в iowait время ожидания сетевых вызовов?


19

Руководство proc(5)описывает iowait как «время ожидания завершения ввода-вывода». Это было в основном объяснено в предыдущем вопросе. Мой вопрос: во время ожидания блокирующего ввода-вывода, это включает ожидание блокирующего сетевого ввода-вывода или только локальный ввод-вывод?

Ответы:


20

Это означает ожидание «Файлового ввода-вывода», то есть любой вызов чтения / записи для файла, который находится в смонтированной файловой системе, но также, вероятно, считает время ожидания загрузки или загрузки страниц в память, например, библиотеки не в памяти или на страницах файлов mmap (), которых нет в памяти.

Он НЕ считает время, потраченное на ожидание объектов IPC, таких как сокеты, каналы, ttys, select (), poll (), sleep (), pause () и т. Д.

По сути, это время, которое поток тратит на ожидание синхронного дискового ввода-вывода - в течение этого времени он теоретически может работать, но не может, потому что некоторые необходимые ему данные еще не существуют. Такие процессы обычно проявляются в состоянии «D» и влияют на среднюю нагрузку коробки.

Смущает, я думаю, что это, вероятно, включает файловый ввод-вывод в сетевых файловых системах.


Поскольку nfs IO тоже File I / O, я думаю, вы правы ;-)
wzzrd

А как насчет петлевых интерфейсов? Как Linux работает с такими интерфейсами?
Джалал Мостафа,

3

время iowait - это время, которое процесс проводит в планировщике ввода-вывода ядра. Насколько я знаю, это не имеет никакого отношения к сетевому вводу / выводу, если использовать обычные сокетные соединения. Однако это будет включать время, затраченное на ожидание сетевых файловых систем, таких как 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

Айоваит включает в себя сетевые звонки. Я говорю это, потому что 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,
};

Когда процессы вызывают запись в дескриптор файла 5, произойдет нечто подобное:

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

Таким образом, процессы не знают, какую файловую систему используют (магия vfs), и iowait такой же, как и в локальной файловой системе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.