Mogę zgadywać na podstawie nazw, ale czym konkretnie są czas zegara ściennego, czas procesora użytkownika i czas procesora systemu w systemie UNIX?
Czy czas procesora użytkownika to ilość czasu spędzonego na wykonywaniu kodu użytkownika, podczas gdy czas procesora jądra to ilość czasu spędzonego w jądrze z powodu konieczności wykonywania uprzywilejowanych operacji (takich jak IO na dysk)?
W jakiej jednostce czasu jest ten pomiar.
I czy czas zegara to naprawdę liczba sekund, które proces spędził na procesorze, czy też nazwa po prostu wprowadza w błąd?
unix
operating-system
John Humphreys - w00te
źródło
źródło
Odpowiedzi:
Czas zegara ściennego to czas, który zegar na ścianie (lub stoper w ręku) mierzyłby jako upływający od początku procesu do „teraz”.
Czas procesora użytkownika i czas procesora systemowego są prawie takie, jak powiedziałeś - ilość czasu spędzonego na kodzie użytkownika i ilość czasu spędzonego w kodzie jądra.
Jednostkami są sekundy (i podsekundy, które mogą być mikrosekundami lub nanosekundami).
Czas zegara ściennego nie jest liczbą sekund, które proces spędził na CPU; jest to czas, który upłynął, w tym czas spędzony na oczekiwaniu na włączenie procesora (podczas gdy inne procesy są uruchamiane).
źródło
CPUtime = #clock_cycles / clock_rate
obliczenie czasu procesora za pomocą wzoru nie może być tym samym, co obliczenie czasu, który upłynął. Czy wiesz, czy mogę uzyskać czas, który upłynął, na podstawie czasu procesora?read()
lubgetpid()
), jądro wykonuje kod w imieniu programu. Jądro obsługuje również wielozadaniowość z wywłaszczaniem, aby inne programy otrzymały swoją kolej, a także wykonuje pewne ogólne prace porządkowe, aby system działał płynnie. Ten kod jest wykonywany w „kodzie jądra” (także w „trybie jądra”). Różni się to od kodu, który napisałeś, i bibliotek użytkownika (w tym systemowej biblioteki C), które uruchamiasz.Czas zegara ściennego: czas, który upłynął według wewnętrznego zegara komputera, który powinien odpowiadać czasowi na świecie. Nie ma to nic wspólnego z wykorzystaniem procesora; podano w celach informacyjnych.
Czas procesora użytkownika i czas systemowy: dokładnie to, o czym myślisz. Wywołania systemowe, które obejmują I / O wywołuje takie jak
read
,write
itp są wykonywane przez skoki do kodu jądra i wykonanie tego.Jeśli czas zegara ściennego <czas procesora, program jest wykonywany równolegle. Jeśli zegar ścienny> czas procesora, czekasz na dysk, sieć lub inne urządzenia.
Wszystkie są mierzone w sekundach według SI .
źródło
Czas zegara ściennego jest dokładnie tym, co mówi, czas, który upłynął, mierzony przez zegar na ścianie (lub zegarek na rękę)
Czas procesora użytkownika to czas spędzony w „krainie użytkownika”, czyli czas spędzony na procesach spoza jądra
Czas procesora systemowego to czas spędzony w jądrze, zwykle czas spędzony na obsłudze wywołań systemowych.
źródło
prawdziwy lub zegar ścienny
prawdziwe 7m2,444s
W systemie z 24-rdzeniowym procesorem ten proces cmd / proces trwał ponad 7 minut. To dzięki wykorzystaniu możliwie największej równoległości ze wszystkimi podanymi rdzeniami.
użytkownik
użytkownik 76m14.607s
Proces cmd / proces wykorzystywał tak dużo czasu procesora. Innymi słowy, na komputerze z jednordzeniowym procesorem wartość rzeczywista i użytkownik będą prawie równe, więc wykonanie tego samego polecenia zajmie około 76 minut.
sys
sys 2m29.432s
Jest to czas potrzebny jądru na wykonanie wszystkich podstawowych / systemowych operacji w celu uruchomienia tego polecenia cmd, w tym przełączania kontekstu, alokacji zasobów itp.
źródło
(user + sys) / real
żeby to reprezentować.