GNU/Linux >> Linux Esercitazione >  >> Linux

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

Soluzione 1:

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

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

Fondamentalmente è il tempo che un thread trascorre in attesa di disc-IO sincrono - durante questo periodo è teoricamente in grado di funzionare ma non può perché alcuni dati di cui ha bisogno non sono ancora presenti. Tali processi di solito si presentano nello stato "D" e contribuiscono al carico medio di una scatola.

In modo confuso, penso che questo includa probabilmente l'IO di file sui filesystem di rete.

Soluzione 2:

il tempo iowait è la quantità di tempo che un processo trascorre 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.

Soluzione 3:

Lo fa.

Per inciso, uno dei server che gestisco sta riscontrando un iowait elevato causato da un errato 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 nel D stato.

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]

Soluzione 4:

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 iowait è lo stesso per un filesystem locale.


Linux
  1. 10 comandi Linux per la diagnostica di rete

  2. Perché Unix Time inizia al 1970-01-01?

  3. Che cosa significa ecc?

  4. Nutty:uno strumento diagnostico di rete per Ubuntu

  5. Come riparare MariaDB quando si blocca durante l'arresto (in attesa di page_cleaner)?

VLAN per amministratori di sistema:le basi

Utilizzo di ifstat per le statistiche di rete Linux

La rete wireless non si riconnette automaticamente in KDE

40 utili comandi di rete Linux per i moderni amministratori di sistema

Comandi Nmap - 17 comandi di base per la rete Linux

I 10 migliori software di inventario di rete per Linux