Cosa crea l'attesa di I / O della CPU ma nessuna operazione sul disco?


12

Ho un I / O della CPU in attesa costante del 50%, ma quando lo eseguo iostat 1mostra poca o nessuna attività del disco.

Quali sono le cause aspettare senza iop?

NOTA: qui non ci sono filesystem NFS o FUSE, ma sta usando la virtualizzazione Xen.

inserisci qui la descrizione dell'immagine


Quale distro? Quale versione?
ZaMoose

2
Inoltre: si tratta di un hyper visor Xen o di una VM con gli iowait?
ZaMoose

Ti iotopmostra qualcosa?
Janne Pikkarainen l'

Risposte:


7

NFS può farlo, e non mi sorprenderebbe se altri filesystem di rete (e persino i dispositivi basati su FUSE) avessero effetti simili.


Grazie, ma in questo caso non c'è NFS né FUSE. Lo aggiungerò anche alla domanda.
Jason Cohen il

6

C'è qualche possibilità che altre VM sul server stiano bloccando il disco?

So con la virtualizzazione che puoi ottenere strani risultati se il nodo host è sovraccarico.


Vero, ma dovrebbe essere in% rubare anziché io% giusto? O può attraversare anche lì?
Jason Cohen

3
Il furto si verifica quando è disponibile una capacità della CPU inferiore a quella richiesta dalle VM. Se il disco fisico è sovraccarico, i tuoi processi trascorreranno molto tempo in attesa del loro turno sul disco anche se non stanno colpendo molto il disco.
lbft

Sì, questo. Visualizza un'altra domanda con la stessa risposta su serverfault.com/a/209031/57468
mattdm

3

Se questo è l'ambiente Amazon EC2 Xen che utilizza l'archiviazione basata su istanze, chiedi ad Amazon di verificare lo stato dell'host che contiene questa immagine.

Se si tratta di un ambiente Xen da cui è possibile accedere all'hypervisor, controllare IOwait dall'esterno per l'immagine del disco (file, rete, slice LVM, qualunque cosa) utilizzata per i dispositivi xvda e xvdb. Dovresti anche controllare il sistema I / O, in generale, per l'hypervisor poiché altri dispositivi a disco potrebbero monopolizzare le risorse del sistema.

iostat -txk 5

di solito è un buon strumento diagnostico iniziale. Richiede riepiloghi di I / O di 5 secondi per TUTTI i dispositivi disponibili, quindi è utile sia con che dentro o fuori l'immagine della macchina virtuale.


2

Controlla i descrittori / inode dei file disponibili. Quando raggiungi il limite, si scambiano e imitano l'iowait

modificare

Ho visto che stai usando xen, dai un'occhiata ai tuoi interrupt attuali, potresti scoprire che blkif è più alto del normale.

Adesso è arrivato un po 'tardi, ma installa Munin e questo aiuterà davvero il debug futuro.


2
sudo sysctl vm.block_dump=1

Quindi controlla dmesg per vedere cosa sta eseguendo lettura / scrittura a blocchi o inode sporchi.

Controlla anche il limite di nofile in limits.conf, un processo potrebbe richiedere più file di quelli che è consentito aprire.


1

ATTENZIONE: HDPARM È PERICOLOSO, LEGGERE SEMPRE SUL COMANDO CHE STAI USANDO!

Se nessun'altra macchina virtuale sta stressando il / i disco / i, fare

hdparm -f

sui dischi fisici sottostanti. Forse la cache del disco non funziona in modo accurato. Ciò eliminerà i dati memorizzati nella cache e sarà possibile monitorare costantemente l'I / O, se sta per risalire dopo lo scaricamento. Se sì, sarà un problema di cache.


0

Con un carico medio, ho visto aumentare le operazioni di rete bloccate (ovvero chiamate lunghe verso un server DB esterno). Non lo so per certo, ma suppongo che l'IO della rete possa far salire la CPU? Qualcuno può confermare?


1
Nella maggior parte delle macchine moderne, no. La maggior parte, se non tutti i sistemi recenti, hanno schede di rete compatibili con DMA per prevenire esattamente questo tipo di situazione.
ZaMoose

0

Potrebbero essere dispositivi di loopback, che sono essi stessi montati sulla rete.


0

Sulle mie macchine NFS è il più grande "produttore" IO-WAIT. Ho un SSD nel mio laptop che è veloce da morire, quindi "vero IO" non è il problema. Tuttavia a volte ho un sacco di IO in attesa a causa delle mie condivisioni nfs montate.

A volte SCP sembra portare anche a IO Wait ma in misura molto minore.


0

Questo può essere qualsiasi cosa. Significa solo che qualcosa è in attesa della fine dell'operazione di I / O. Puoi capire quale processo è tramite ps, quindi collegare gdb ad esso e controllare backtrace per determinare quale chiamata è bloccata (di solito si tratta di alcune cose relative alla rete o del disco improvvisamente disconnesso). Per informazioni su fd, controlla / proc.


0

Ho anche riscontrato un problema simile prima che un disco in un RAID si guastasse e alcuni cavi SATA con curve strette in essi iniziassero a guastarsi.

L'utilizzo della CPU era vicino allo 0%, ma 1 o più CPU su un sistema a 4 core trascorrevano il 100% del loro tempo in IOwait per lunghi periodi di tempo (rilevati tramite il topdisplay cpu multilinea) con IOps e larghezza di banda molto bassi (trovati via iostat), ma attività di interruzione elevata e raffica. L'uso interattivo della riga di comando è stato doloroso durante qualsiasi accesso al disco (ovvero il salvataggio automatico dalla emacssessione di qualcuno ) ma altrimenti tollerabile una volta passati i periodi di IOwait (e presumibilmente le operazioni sono riuscite dopo molti tentativi).

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.