GNU/Linux >> Belajar Linux >  >> Linux

Apakah iowait termasuk waktu menunggu panggilan jaringan?

Solusi 1:

Itu berarti menunggu "File I/O", artinya, panggilan baca/tulis apa pun pada file yang ada di sistem file yang terpasang, tetapi juga mungkin menghitung waktu menunggu untuk menukar atau memuat halaman permintaan ke dalam memori, mis. perpustakaan belum ada di memori, atau halaman file mmap()'d yang tidak ada di ram.

TIDAK menghitung waktu yang dihabiskan untuk menunggu objek IPC seperti soket, pipa, tty, pilih(), poll(), tidur(), jeda() dll.

Pada dasarnya ini adalah waktu yang dihabiskan oleh utas untuk menunggu disc-IO sinkron - selama ini secara teoritis dapat berjalan tetapi tidak bisa karena beberapa data yang diperlukan belum ada. Proses seperti itu biasanya muncul dalam status "D" dan berkontribusi pada rata-rata pemuatan sebuah kotak.

Yang membingungkan saya pikir ini mungkin termasuk file IO pada sistem file jaringan.

Solusi 2:

waktu iowait adalah jumlah waktu yang dihabiskan proses di penjadwal kernel I/O. Sejauh yang saya tahu, ini tidak ada hubungannya dengan I/O jaringan sejauh koneksi soket biasa berjalan. Namun, ini termasuk waktu yang dihabiskan untuk menunggu sistem file jaringan seperti NFS.

Solusi 3:

Ya.

Kebetulan, salah satu server yang saya kelola mengalami iowait tinggi yang disebabkan oleh pemasangan NFS yang buruk.

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

Dan lihat proses di D negara.

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]

Solusi 4:

Iowait menyertakan panggilan jaringan. Saya mengatakan ini, karena NFS menangani sebanyak mungkin sistem file lokal linux dari sudut pandang 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,
};

Saat proses memanggil penulisan pada deskriptor file 5, hal seperti ini akan terjadi:

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

Jadi, prosesnya tidak tahu jenis sistem file apa yang digunakan (vfs magic) dan iowait sama dengan sistem file lokal.


Linux
  1. Sinkronkan Waktu Server Linux dengan Server Waktu Jaringan

  2. Perangkat Lunak Untuk Menavigasi Diagram Jaringan?

  3. Apa Kepanjangan Dll?

  1. 10 Perintah Linux Untuk Diagnostik Jaringan

  2. Nutty – Alat Diagnostik Jaringan untuk Ubuntu

  3. Sertifikat RSA yang dikonfigurasi untuk SERVER TIDAK menyertakan ID yang cocok dengan nama server

  1. Menggunakan alat SS untuk pemecahan masalah jaringan

  2. Linux – Bagaimana Cara Berhenti Berbagi Jaringan Untuk Proses Saat Ini?

  3. Mengapa Waktu Unix Mulai Pada 1970-01-01?