Che cos'è "ora di sistema" quando si utilizza "ora" nella riga di comando


10

Sto usando timeper cronometrare uno Perlscript sul terminale standard in Ubuntu 14.04.

Ho letto che real timeè l'ora del cronometro; il tempo che io, come utente, trascorro guardando il programma in esecuzione da quando avvio il programma fino al termine. Ma non capisco cosa usero che systempi siano. La pagina man su timeè vaga, per non dire altro.

Mentre è in qualche modo chiaro che il realtempo è diviso tra usere sysnon è chiaro ciò che rappresentano.

Nel mio script sto confrontando [1] C ++ e Perl l'uno contro l'altro per vedere la differenza, e vorrei sapere quali dati sto effettivamente ricevendo. Un esempio di output è:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

Qualcuno potrebbe spiegare qual è il formato orario predefinito che sta dicendo all'utente? Sono un principiante in Linux, quindi per favore non dare troppo per scontato.

[1] È interessante notare che, mentre C ++ è molto, molto più veloce di Perl nel mio benchmark per quanto riguarda il realtempo, i systempi non differiscono molto, con C ++ che effettivamente utilizza più systempo di Perl. Questo è il motivo per cui voglio sapere cosa significano


Risposte:


15

Da Wikipedia :

  • Ora utente vs Ora di sistema

Il termine "tempo CPU utente" può inizialmente essere un po 'fuorviante. Per essere chiari, il tempo totale della CPU è la combinazione del tempo trascorso dalle CPU nell'esecuzione di alcune azioni per un programma e dal tempo impiegato dalle CPU nell'esecuzione delle chiamate di sistema per il kernel per conto del programma. Quando un programma scorre in un array, sta accumulando il tempo della CPU dell'utente. Al contrario, quando un programma esegue una chiamata di sistema come exec o fork, accumula tempo di CPU del sistema.

  • Tempo reale vs tempo CPU

Il termine "tempo reale" in questo contesto si riferisce al tempo trascorso di "orologio da parete", come usare un cronometro. Il tempo totale della CPU (tempo utente + tempo sys) può essere maggiore o minore di quel valore. Poiché un programma può impiegare un po 'di tempo ad attendere e non eseguire affatto (sia in modalità utente che in modalità di sistema) il tempo reale potrebbe essere maggiore del tempo totale della CPU. Poiché un programma può fork i bambini i cui tempi della CPU (sia utente che sys) vengono aggiunti ai valori riportati dal comando time, il tempo totale della CPU può essere maggiore del tempo reale.


1
Non capisco come sono riuscito a non trovare quell'articolo di Wikipedia. Grazie.
Alrekr,
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.