Iowait include il tempo di attesa per le chiamate di rete?


19

La proc(5)manpage descrive iowait come "tempo di attesa per il completamento di IO". Ciò è stato principalmente spiegato in una domanda precedente. La mia domanda è: in attesa di bloccare l'IO, questo include l'attesa per bloccare l'IO della rete o solo l'IO locale?

Risposte:


20

Significa attendere "File I / O", vale a dire qualsiasi chiamata in lettura / scrittura su un file che si trova nel filesystem montato, ma probabilmente conta anche il tempo in attesa di scambiare o caricare pagine in memoria, ad es. Librerie no in memoria ancora, o pagine di file mmap () 'd che non sono in ram.

NON conta il tempo trascorso in attesa di oggetti IPC come socket, pipe, ttys, select (), poll (), sleep (), pause () ecc.

Fondamentalmente è tempo che un thread passi in attesa di IO-disco sincrono - durante questo periodo è teoricamente in grado di funzionare ma non può perché alcuni dati di cui ha bisogno non sono ancora lì. Tali processi di solito si presentano nello stato "D" e contribuiscono alla media del carico di una scatola.

Confusamente penso che questo probabilmente includa file IO su filesystem di rete.


Dato che nfs IO è anche I / O dei file, immagino tu abbia ragione ;-)
wzzrd

Che dire delle interfacce di loopback? In che modo Linux tratta questo tipo di interfacce?
Jalal Mostafa,

3

il tempo di iowait è la quantità di tempo che un processo impiega nello scheduler I / O del kernel. Per quanto ne so, questo non ha nulla a che fare con l'I / O di rete nella misura in cui vanno le normali connessioni socket. Tuttavia, includerà il tempo trascorso in attesa di file system di rete come NFS.


2

Lo fa.

Per inciso, uno dei server che gestisco sta vivendo un elevato interesse che è causato da un cattivo montaggio 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

E guarda i processi nello Dstato.

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

Lo iowait include le chiamate di rete. Dico questo, perché NFS è gestito come molti filesystem locali Linux dal punto di vista del kernel:

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

Quando i processi chiamano una scrittura sul descrittore di file 5, accadrà qualcosa del genere:

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

Quindi, i processi non sanno che tipo di filesystem stanno usando (vfs magic) e lo iowait è lo stesso di un filesystem locale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.