GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beinhaltet iowait Wartezeiten für Netzwerkanrufe?

Lösung 1:

Es bedeutet, auf "Datei-E / A" zu warten, dh auf jeden Lese- / Schreibaufruf für eine Datei, die sich im gemounteten Dateisystem befindet, aber wahrscheinlich auch die Zeit zählt, die darauf wartet, Seiten einzulagern oder bei Bedarf in den Speicher zu laden, z. Bibliotheken, die sich noch nicht im Speicher befinden, oder Seiten mit mmap()-Dateien, die sich nicht im RAM befinden.

Es zählt NICHT die Wartezeit für IPC-Objekte wie Sockets, Pipes, ttys, select(), poll(), sleep(), pause() etc.

Im Grunde ist es die Zeit, die ein Thread damit verbringt, auf synchrones Disc-IO zu warten - während dieser Zeit kann er theoretisch ausgeführt werden, kann es aber nicht, weil einige Daten, die er benötigt, noch nicht vorhanden sind. Solche Prozesse werden normalerweise im "D"-Zustand angezeigt und tragen zum Lastdurchschnitt einer Box bei.

Verwirrenderweise denke ich, dass dies wahrscheinlich Datei-IO auf Netzwerk-Dateisystemen beinhaltet.

Lösung 2:

Die iowait-Zeit ist die Zeit, die ein Prozess im I/O-Scheduler des Kernels verbringt. Soweit ich weiß, hat dies nichts mit Netzwerk-I/O zu tun, sofern es sich um normale Socket-Verbindungen handelt. Es wird jedoch die Wartezeit für Netzwerkdateisysteme wie NFS einschließen.

Lösung 3:

Es tut.

Übrigens hat einer der Server, die ich verwalte, einen hohen iowait-Wert, der durch einen fehlerhaften NFS-Mount verursacht wird.

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

Und schauen Sie sich die Prozesse im D an Zustand.

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]

Lösung 4:

Das iowait enthält die Netzwerkaufrufe. Ich sage das, weil NFS aus Sicht des Kernels wie viele lokale Linux-Dateisysteme gehandhabt wird:

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

Wenn Prozesse einen Schreibzugriff auf den Dateideskriptor 5 aufrufen, geschieht etwa Folgendes:

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

Daher wissen die Prozesse nicht, welche Art von Dateisystem verwendet wird (vfs magic) und das iowait ist das gleiche wie bei einem lokalen Dateisystem.


Linux
  1. Verwenden des SS-Tools für die Netzwerkfehlerbehebung

  2. Linux – Wie kann ich die Netzwerkfreigabe für den aktuellen Prozess aufheben?

  3. Software zum Navigieren in einem Netzwerkdiagramm?

  4. Wofür steht 'cd-'?

  5. 'tail -f' für eine bestimmte Zeit

VLANs für Systemadministratoren:Die Grundlagen

Verwenden von ifstat für Linux-Netzwerkstatistiken

Drahtloses Netzwerk verbindet sich in KDE nicht automatisch wieder

40 nützliche Linux-Netzwerkbefehle für moderne SysAdmins

Nmap-Befehle - 17 grundlegende Befehle für Linux-Netzwerke

Top 10 der besten Netzwerkinventarisierungssoftware für Linux