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

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

17 голосов | спросил Alex J 8 J000000Wednesday09 2009, 06:29:10

4 ответа


15

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

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

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

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

ответил MarkR 8 J000000Wednesday09 2009, 11:17:53
3

время iowait - это время, затрачиваемое процессом в планировщике ввода-вывода ядра. Насколько я знаю, это не имеет ничего общего с сетевым вводом-выводом, поскольку обычные соединения сокетов идут. Тем не менее, это будет включать время ожидания сетевых файловых систем, таких как NFS.

ответил Kamil Kisiel 8 J000000Wednesday09 2009, 09:30:39
1

Это так.

Кстати, один из серверов, которыми я управляю, демонстрирует высокий уровень 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]
ответил haxxor 10 WedEurope/Moscow2014-12-10T12:01:52+03:00Europe/Moscow12bEurope/MoscowWed, 10 Dec 2014 12:01:52 +0300 2014, 12:01:52
1

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,
};

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

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

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

ответил c4f4t0r 10 WedEurope/Moscow2014-12-10T13:35:19+03:00Europe/Moscow12bEurope/MoscowWed, 10 Dec 2014 13:35:19 +0300 2014, 13:35:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132