Jak sam powiedziałeś, możesz nacisnąć przycisk, Haby wyświetlić wątki użytkownika.
Tylko dla odniesienia w przyszłości (i dla zabawy), Policzmy wykorzystanie procesora!
Trochę tła:
W nowoczesnym systemie operacyjnym istnieje program planujący. Ma to na celu zapewnienie, że wszystkie procesy i ich wątki mają równy udział czasu obliczeniowego. Nie będę się zbytnio planował (to naprawdę skomplikowane). Ale w końcu jest coś, co nazywa się kolejką uruchamiania . W tym miejscu wszystkie instrukcje wszystkich procesów ustawiają się w kolejce, aby poczekać na wykonanie kolejki.
Każdy proces umieszcza swoje „zadania” w kolejce uruchamiania, a gdy procesor jest gotowy, odsuwa je i wykonuje. Na przykład, gdy program przechodzi w tryb uśpienia, usuwa się z kolejki uruchamiania i wraca do „końca linii”, gdy jest gotowy do ponownego uruchomienia.
Sortowanie w tej kolejce ma związek z priorytetem procesów (zwanym także „ładną wartością” - tzn. Proces jest niezły pod względem zasobów systemowych).
Długość kolejki określa obciążenie systemu. Na przykład obciążenie 2,5 oznacza, że dla każdej instrukcji, z którą CPU może sobie poradzić w czasie rzeczywistym, są instrukcje 2,5 .
Nawiasem mówiąc, w systemie Linux obciążenie to jest obliczane w odstępach 10 ms (domyślnie).
Teraz na wartości procentowe wykorzystania procesora:
Wyobraź sobie, że masz dwa zegary, jeden nazywa się t
i reprezentuje czas rzeczywisty . Mierzy sekundę na każdą sekundę. Drugi zegar, który nazywamy c
. Działa tylko wtedy, gdy jest do przetworzenia. Oznacza to, że tylko gdy proces oblicza coś, zegar działa. Nazywa się to również czasem procesora. Każdy proces w systemie „ma” jeden z nich.
Wykorzystanie procesora można teraz obliczyć dla jednego procesu:
lub dla wszystkich procesów:
Na maszynie wielordzeniowej może to oczywiście dać wartość 3,9, ponieważ procesor może obliczyć obliczenia o wartości czterech sekund co sekundę, jeśli zostanie to doskonale wykorzystane.
Wikipedia podaje ten przykład:
Aplikacja działająca na 6-procesorowym komputerze z systemem UNIX tworzy trzy procesy UNIX w celu spełnienia wymagań użytkownika. Każdy z tych trzech procesów tworzy dwa wątki. Praca aplikacji jest równomiernie rozłożona na 6 niezależnych wątków wykonania utworzonych dla aplikacji. Jeśli nie jest wymagane oczekiwanie na zasoby, całkowity czas pracy procesora będzie sześciokrotnie przekraczany w czasie rzeczywistym.
Oto mały fragment kodu python, który to robi
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
W idealnym świecie można wywnioskować, że obciążenie systemu wynosi 100 - 66,93 = 33,1%. (Ale w rzeczywistości byłoby to błędne z powodu skomplikowanych rzeczy, takich jak oczekiwanie we / wy, planowanie nieefektywności itp.)
W przeciwieństwie do obciążenia , obliczenia te zawsze będą skutkowały wartością między 0 a liczbą procesorów, tj. Między 0 a 1 lub 0 do 100%. Obecnie nie ma sposobu na rozróżnienie między komputerem, na którym są uruchomione trzy zadania, wykorzystujące 100% procesora, a komputerem, na którym działa milion zadań, wykonując prawie dowolną pracę na jednym z nich, również na poziomie 100%. Jeśli na przykład próbujesz zrównoważyć kilka procesów na wielu komputerach, wykorzystanie procesora jest prawie bezużyteczne. Ładunek jest tam, czego chcesz.
Teraz w rzeczywistości istnieje więcej niż jeden z tych zegarów przetwarzających. Na przykład jeden czeka na I / O. Możesz więc obliczyć wykorzystanie zasobów we / wy.
Może to nie było pomocne w stosunku do pierwotnego pytania, ale mam nadzieję, że jest interesujące. :)