Come posso sapere se un processo è associato a CPU, memoria o disco?
Come posso sapere se un processo è associato a CPU, memoria o disco?
Risposte:
Ciò richiede un po 'di voodoo. Dipende. Esempio:
Se c'è abbastanza memoria e i dischi non sembrano troppo occupati, potrebbe essere associato alla CPU. Guarda l'utilizzo della CPU e se è al 100% è associato alla CPU. In caso contrario, c'è un collo di bottiglia artificiale nell'implementazione. Ad esempio, su una CPU dual-core un processo a thread singolo non supererà il 50% di utilizzo della CPU.
Se sono disponibili CPU e memoria, ma i dischi sono molto occupati o la latenza di I / O sembra elevata, è probabile che il suo I / O sia associato. Verifica se l'aggiunta di più dischi (RAID?) Aiuta.
Nessuno dei precedenti? Controlla la memoria disponibile.
Abbastanza memoria? Potrebbe esserci un collo di bottiglia artificiale nel processo stesso, cioè forse qualcuno ha dimenticato di rimuovere un sonno (1)? Naah di solito non è così facile. ;)
C'è un motivo per cui abbiamo un intero laboratorio per ingegneri delle prestazioni nella maggior parte delle aziende che si occupano di prodotti sensibili alle prestazioni!
Utilizzare strumenti come sar, vmstat, iostat, oprofile, lockstat, dtrace, strumenti di monitoraggio perf specifici del prodotto, ecc., Per eseguire il debug di problemi perf.
Oltre agli altri strumenti menzionati, esegui ps l PID
, inserendo l'id di processo pertinente o osserva le colonne STATE e WCHAN in alto o in alto.
Se è nello stato D (per disco), allora sta eseguendo il file IO. Ciò potrebbe essere dovuto al fatto che sta leggendo molti file o perché sta usando molta memoria e scambiando. La colonna WCHAN ti dirà quale funzione del kernel è dentro; cercare su Google per loro o chiedere qui può darvi qualche indicazione sul loro significato.
Se è nello stato R (esecuzione), sta usando la CPU nello spazio utente, in altre parole è CPU collegata in quel momento.
Se si trova nello stato S (sospensione), si trova all'interno di una chiamata di sistema interrompibile, il che può significare che sta effettivamente dormendo o sta facendo qualcosa come aspettare il traffico di rete o un blocco. Ancora una volta, guardando lo specifico wchan ti dirò di più.
Vedi anche Cos'è il "canale di attesa" di un processo?