Les descriptions 'real', 'user' et 'sys' du temps (1) diffèrent quand elles ne devraient pas?


1

J'ai lu cette question SO sur "réel", "utilisateur", et "sys" descriptions et pensais que je jouerais un peu. Quelqu'un peut expliquer pourquoi

[root@lux ~]# time dd if=/dev/zero of=del.large bs=10K count=32768
32768+0 records in
32768+0 records out
335544320 bytes (336 MB) copied, 0.623293 seconds, 538 MB/s

real    0m0.717s
user    0m0.007s
sys     0m0.709s
[root@lux ~]# time dd if=/dev/zero of=del.large bs=100K count=32768
19838+0 records in
19838+0 records out
2031411200 bytes (2.0 GB) copied, 47.31 seconds, 42.9 MB/s


real    0m47.401s
user    0m0.009s
sys     0m3.395s

Clairement réel = utilisateur + système lors du premier essai. Pourquoi n'est-ce pas pareil dans le deuxième test?

Réponses:


3

Compte tenu de la chute extrême du débit de données signalé (de 538 Mo / s à 42,9 Mo / s), je soupçonne que les 336 M écrits lors du premier test entraient entièrement dans la mémoire cache d'écriture du lecteur. Le processus a donc simplement transmis toutes les données à le lecteur, qui l'a caché et a signalé le succès immédiatement.

Dans le second test, par contre, les 2.0G de données ne cadraient pas dans le cache, le noyau a donc dû envoyer une partie des données, attendre qu’elles soient écrites sur disque (en prenant le temps de l’horloge murale, mais aucun Temps processeur), envoyer plus de données, attendre l'écriture, etc. jusqu'à ce que toutes les données soient finalement acceptées par le lecteur. Les secondes "supplémentaires" du second test correspondent au temps passé à attendre la fin des opérations d'E / S.


0

temps réel ne correspond pas nécessairement au temps utilisateur + temps système sur un système multiprocesseur. Temps utilisateur + temps système est le temps passé par la CPU, alors que temps réel est le temps réel utilisé.

Edit: apparemment, il a été demandé auparavant: https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1


Si vous ne l'avez pas remarqué, je vous renvoie à cette question précise au début de mon message. Je réfléchis à la raison pour laquelle la relation est vraie dans l’un de mes cas et non dans l’autre cas où seule la quantité de données traitée avec dd change.
physicsmichael

Autres effets de disque. Par exemple, disons que quelque chose d'autre est en cours d'exécution qui a une priorité plus élevée lorsque vous exécutez le deuxième processus. Ensuite, cela prendra physiquement plus de temps, mais c'est simplement parce que votre processus n'a qu'un très petit intervalle de temps CPU.
Foo Bah
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.