Le puissant strace
m'a laissé tomber. Comment est-ce possible?
time foo
montre que l' foo
exécution prend plusieurs secondes ("réel"), mais utilise un temps processeur négligeable, à la fois dans l'espace utilisateur ("utilisateur") et dans le noyau ("sys"). Pour les curieux, foo
est défini ci-dessous.
Il passe donc la plupart de son temps à attendre autre chose, à ne pas exécuter d'instructions CPU. Normalement, je peux voir comment il attend strace
- c'est- à -dire quel appel système bloque pendant une longue période. Malheureusement, cette approche n'a pas fonctionné.
strace -ttt -T -C -w foo
affiche les appels système, horodatés et un résumé du temps (réel) passé dans les appels système. Mais ce processus particulier s'est révélé comme un temps global (réel) négligeable à l'intérieur des appels système.
foo
est en fait journalctl -b -u dev-hugepages.mount
. Sauf que j'ai dû changer le dernier argument en une unité systemd différente à chaque fois afin de reproduire cela. En d'autres termes, le délai sur lequel j'étudie s'est produit la première fois que j'essaie d'obtenir les journaux d'une unité systemd. EDIT : après avoir répondu à la question principale, j'ai également réalisé la raison pour laquelle j'avais ce problème pour reproduire le retard .
Le temps passé par ce processus est un problème spécifique, apparemment il ne se produit pas sur tous les systèmes. https://github.com/systemd/systemd/issues/7963
journalctl
exécute un seul processus. J'ai le sentiment d' journalctl
utiliser un thread supplémentaire pour une raison quelconque - iirc il y a eu un appel clone (). Je pense que cela signifie que vous êtes techniquement correct, mais cela n'a pas non plus de pertinence technique pour la question. time
examine le processus dans son ensemble et a montré que le processus dans son ensemble est plutôt somnolent (bloquant quelque chose). strace
n'a pas montré suffisamment de sommeil. Peu importe si un deuxième thread est en sommeil, le thread principal doit également être très endormi pour expliquer le time
résultat.