Obserwuję proces procentowy wykorzystania mojego procesora. W jaki sposób proces wykorzystuje tylko 50% procesora? Czy proces nie wykorzystuje 100%, a następnie 0%, a następnie 100%? To nie tak, jak każda inna instrukcja to inny program.
performance
cpu
.net-framework
Anthony D.
źródło
źródło
Odpowiedzi:
Sonduje wyniki łącznie tylko raz na sekundę. Patrzysz, ile z ostatniej sekundy wykorzystał.
Jeśli widzisz procesor siedzący przez chwilę na poziomie 50%, prawdopodobnie dzieje się tak, że używa 100% jednego procesora w systemie z podwójną jednostką centralną.
źródło
Technicznie masz rację. W danym momencie procesor jest albo używany, albo nieużywany. Ale wyświetlenie tego na wykresie nie byłoby bardzo pomocne, więc wykres uśrednia użycie procesora przez pewien okres czasu, prawdopodobnie co sekundę.
źródło
System operacyjny planuje proces na określony czas. Więc jeśli proces jest zaplanowany na (powiedzmy) 1ms na 10ms, wtedy będzie on zużywał 10% procesora.
Jest to trochę sprzeczne z intuicją, ponieważ (w systemie jednowątkowym, z pojedynczym procesorem) proces jest uruchomiony lub nie. tzn. używa 100% lub 0%. Wyświetlany procent jest mierzony w oknie czasowym i jest miarą przydzielania przedziałów czasowych przez system operacyjny do uruchomienia.
Pamiętaj, że twój proces nie przyczyni się do tego, jeśli uzyskujesz dostęp do I / O. Więc jeśli wykonujesz ogromne obliczenia, zarejestrujesz się w 100% (zakładając, że nic więcej nie działa). Jeśli następnie zaczekasz na dostęp do pakietu sieciowego / dysku itp., Twój procesor spadnie, mimo że proces nadal działa.
źródło
Na bardzo niskim poziomie masz rację. W dowolnym momencie procesor albo wykonuje instrukcję dla danego procesu, albo tak nie jest.
Ale Twój system operacyjny znajduje się pomiędzy procesami a procesorem, dzięki czemu dzielą się czasem. Wyświetlany procent to procent czasu ostatniego przetwarzania, jaki system operacyjny przyznał temu procesowi.
źródło
Opiera się na średnim czasie. Mimo że wszystkie wątki mogą mieć tę samą paczkę czasu procesora (na podstawie priorytetu), wątki mogą po prostu powiedzieć „dziękuję, ale jestem bezczynny” i przekazać swoją kolej do następnego wątku. Właśnie dlatego programy nie zawsze używają tego samego% czasu, a większość programów zużywa 0% procesora, a programy, które naprawdę potrzebują procesora, mogą same sobie zająć prawie 100% czasu.
Dlaczego ogranicza się do 50%? Prawdopodobnie masz dwa rdzenie procesora i używa tylko jednego.
Lub, jak sugeruje, wykorzystuje hipertekst, ale nie wiem, jak ten zachowuje się dokładnie.
źródło
Twój program może wykonywać wiele operacji we / wy (dyskowe lub sieciowe operacje odczytu / zapisu). Dzięki temu program byłby zajęty, ale nie wymagałby czasu procesora.
źródło
Wykorzystanie systemu jest próbkowane i uśredniane, co jest jedyną rozsądną rzeczą do zrobienia.
Np. Zapis czasu, przez jaki przechowywany jest proces / wątek uruchomiony przez 1 sekundę. Jeśli spędził 1 sekundę na procesorze, to 100% procesora (lub 50%, jeśli masz 2 procesory itd.), Jeśli spędził 100 ms, to 10% wykorzystania procesora.
źródło