Dlaczego czas „rzeczywisty” miałby być znacznie dłuższy niż łączny czas „użytkownika” i „sys”?

19

Wykonuję timewiele poleceń (tj. nslookup) SSHI zbieram całkowity czas potrzebny do ukończenia dorozumianej usługi (tj. DNS ). Zbieram więc czas useri sysczas, ponieważ realczas liczy czas, kiedy mój proces blokuje się, czego nie potrzebuję ... tak myślę.

Ale niektóre z moich testów przyniosły takie wyniki:

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

Testy te przeprowadzam na urządzeniach z ograniczoną ilością zasobów, ale realczas jest znacznie dłuższy. Czy to tylko wskazywałoby, że urządzenie jest bardzo zajęte uruchamianiem różnych procesów? Czy nadal należy sumować czasy useri, sysaby wiedzieć, ile kosztowała usługa?

Muhammad Gelbana
źródło

Odpowiedzi:

22

Rzeczywisty to całkowity czas potrzebny na zakończenie procesu (tj. Różnica między czasem rozpoczęcia a czasem zakończenia):

$ time sleep 3

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

Na tej liście użytkownik i sys odnoszą się do czasu spędzonego odpowiednio w trybie użytkownika i trybie jądra. Te nie obejmują czas spędzony będąc nieaktywne, w spanie stan. Proces zasypia, gdy celowo o to poprosi lub gdy czeka na dostępność IO (dostęp do sieci / dysku / interakcja użytkownika) lub czeka na zakończenie innych procesów z powodu braku dostępnego procesora, gdy system jest bardzo obciążony itd.

Zazwyczaj, jeśli dzwonisz timena wget, prawdziwy odpowiadają wola czasie pobieranie trwa, użytkownik powinien być nieznaczny (o ile nie wgetzostanie poproszony o wykonanie intensywnego przetwarzania danych), sys powinna być mała (jakiś czas może być wydane do czynienia z buforami, przenosząc dane z powrotem i dalej od przestrzeni jądra do przestrzeni użytkownika).

Stéphane Gimenez
źródło
Przepraszam, że dodałem wgetdo pytania. Właściwie to nie time, ale dziękuję za wyjaśnienie. Powiedzenie, które realobejmuje czasy blokowania, takie jak oczekiwanie na sieciowe we / wy, powoduje, że myślę o uwzględnieniu tego czasu, ponieważ faktycznie testuję sieć. Dziękuję Ci.
Muhammad Gelbana
Czy potwierdziłbyś następujące kwestie, aby przetestować wydajność sieci i czas reakcji odpytywanego komputera, niezależnie od tego, czy jest to DNSserwer, czy pingowany komputer, czy wystarczy zmierzyć tylko realczas?
Muhammad Gelbana
@MuhammadGelbana: Ten czas rzeczywisty to tylko stoper, nic więcej. Jeśli pozwolisz pingbiegać przez 3 minuty 22, zwróci 3 minuty 22. W tym przypadku jest to po prostu bezużyteczne (a tak naprawdę w większości przypadków bezużyteczne, wynik zależy od czynników zewnętrznych).
Stéphane Gimenez
dzięki. Ale czy wiesz, dlaczego nie upłynął limit czasu? Przeczytałem, że domyślny limit czasu nslookupto 5 sekund!
Muhammad Gelbana