Perché il tempo "reale" sarebbe molto più elevato dei tempi "utente" e "sys" messi insieme?


19

Eseguo e timemolti comandi (es. nslookup) Attraverso SSHe raccolgo il tempo totale necessario per il completamento del servizio implicito (es. DNS ). Così raccolgo l' usere systempo come il realtempo conta di tempo in cui il mio processo sta bloccando, che non ho bisogno ... immagino.

Ma alcuni dei miei test hanno avuto risultati come tali:

real 3m22.033s
user 0m0.009s
sys 0m0.014s

Eseguo questi test su scatole Linux con risorse limitate ma il realtempo è significativamente elevato. Ciò indicherebbe solo che la scatola è MOLTO occupata per eseguire processi diversi? È ancora corretto sommare i tempi usere sysper sapere quanto tempo ha richiesto il servizio?

Risposte:


22

Reale è il tempo totale impiegato per terminare il processo (ovvero la differenza tra il tempo di inizio e il tempo di fine):

$ time sleep 3

real    0m3.002s
user    0m0.000s
sys     0m0.000s

In questo elenco, user e sys si riferiscono al tempo trascorso rispettivamente in modalità utente e modalità kernel. Questi non includono il tempo trascorso mentre è inattivo, in stato di sonno . Un processo si interrompe quando lo richiede deliberatamente o quando è in attesa della disponibilità di IO (accesso in rete / accesso al disco / interazione utente) o in attesa della chiusura di altri processi, per mancanza di CPU disponibile quando il sistema è sotto carico molto elevato , eccetera.

In genere, se si chiama timeil wget, reale corrisponderanno al tempo del download richiede, utente dovrebbe essere trascurabile (a meno che non wgetviene chiesto di eseguire l'elaborazione dei dati ad alta intensità), sys devono essere piccole (qualche tempo potrebbe essere speso a che fare con i buffer, spostando indietro i dati e avanti dallo spazio del kernel allo spazio dell'utente.)


Mi dispiace di aver aggiunto wgetalla domanda, in realtà non timelo faccio , ma grazie per la spiegazione però. Dire che realinclude tempi di blocco come l'attesa dell'IO della rete mi fa pensare di includere anche quel tempo perché sto effettivamente testando la rete. Grazie.
Muhammad Gelbana,

Confermereste quanto segue, per testare le prestazioni della rete e la capacità di risposta della macchina interrogata, che si tratti di un DNSserver o di una macchina ping, è sufficiente misurare solo il realtempo?
Muhammad Gelbana,

@MuhammadGelbana: questo tempo reale è solo un cronometro, niente di più. Se lasci pingcorrere per 3 minuti 22, restituirà 3 minuti 22. In questo caso è solo inutile (e in realtà è inutile come benchmark la maggior parte delle volte, il risultato dipende da fattori esterni).
Stéphane Gimenez,

Grazie. Ma sapresti perché non è scaduto? Ho letto che il timeout predefinito nslookupè di 5 secondi!
Muhammad Gelbana,
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.