Dlaczego mój procesor nie działa z maksymalnym potencjałem, nawet jeśli moja aplikacja (która wykorzystuje zasoby procesora) jest opóźniona?

30

Dlaczego mój procesor nigdy się nie wyczerpuje, nawet jeśli moja aplikacja, która zużywa 40% procesora (ale 30 - 40% procesora nadal pozostaje bezczynna), jest opóźniona?

Czy to oznacza:

  1. Istnieje sposób, aby zmusić procesor do działania na 100%
  2. Procesory są wytwarzane w ten sposób i jedyne, co mogę zrobić, to kupić nowy sprzęt.
  3. Ograniczenie dotyczy aplikacji, a opóźnienie nie poprawi się nawet przy lepszym procesorze. (Zakładając, że aplikacja jest idealna, pytam, czy oprogramowanie działa w ten sposób?)
  4. Coś innego.
Nhu Thai Sanh Nguyen
źródło
4
Rozumiem, do czego zmierza OP, gardzę tym, że kiedy działa program antywirusowy lub aktualizacja systemu Windows, całkowicie psuje mój system, maksymalnie wykorzystując ten jeden rdzeń ... pozostawiając resztę z czym? Skończyłem siedzieć przez 12 minut, aż wrócę do pracy.
10
Każda aplikacja, która maksymalizuje nawet jeden z kilku współużytkowanych zasobów w komputerze (procesor, pamięć, pamięć lub sieć), może spowolnić cały system, mimo że pozostałe zasoby współużytkowane mają niewykorzystaną pojemność.
Mówię: Przywróć Monikę
78
Programuję od 25 lat. I zapewniam cię - to nie jest spisek. Rzadko można znaleźć aplikacje, w których procesor stanowi wąskie gardło, przez większość czasu aplikacje czekają na inne rzeczy, takie jak dysk twardy, pamięć RAM lub sieć.
Contango,
10
Załóżmy, że wykonujesz jakąś pracę obliczeniową - na przykład podatki. Jeśli wykonasz zerową pracę, czekając na formularze podatkowe, które dotrą na pocztę, będziesz wykonywać zerową pracę przez bardzo długi czas. Opóźnione aplikacje są często źle napisane; blokują wątek interfejsu użytkownika podczas operacji o wysokim opóźnieniu, takich jak operacje dyskowe lub sieciowe IO, które nie mają nic wspólnego z procesorem, więc procesor jest bezczynny, a aplikacja nie odpowiada. Szybszy procesor nie pomaga; dzięki temu szybciej można blokować operacje o wysokim opóźnieniu .
Eric Lippert,
3
@TwistyImpersonator: To dobra analogia do programów wielowątkowych o dużej rywalizacji. Czasami widzimy, że program wielowątkowy będzie działał wolniej na szybszym procesorze, ponieważ procesor dostaje więcej wątków w stan zablokowania szybciej niż wolniejszy procesor. Gdyby każdy kierowca w Nowym Jorku otrzymał jutro 10 razy szybszy samochód, czasy dojazdów nie poprawiłyby się . Pogorszyłyby się.
Eric Lippert,

Odpowiedzi:

94

Prawdopodobnie używasz aplikacji jednowątkowych, które mogą maksymalnie wydłużyć pojedynczy rdzeń procesora. Ponieważ 100% jednego rdzenia to mniej niż 100% pojemności procesora wielordzeniowego, całkowite wykorzystanie procesora nie osiąga 100%.

Możesz to potwierdzić, przeglądając wykorzystanie poszczególnych rdzeni w Menedżerze zadań. Poszukaj pojedynczych rdzeni, które zbliżają się do maksymalnego wykorzystania.

Mówię: Przywróć Monikę
źródło
24
Z powodu przełączania zobaczysz tylko rozproszone użycie, które sumuje się do użycia jednego rdzenia. Zasadniczo aplikacja wykorzystuje dokładnie jeden rdzeń, ale przeskakuje między rdzeniami, więc każdy z nich wynosi średnio 1 / n.
Aganju
62
Powiedziałbym również, że możliwe jest, że procesor nie jest tak naprawdę wąskim gardłem.
16
Mglisto pamiętam Twierdzę Krasnoludów, która słynie z wąskiego gardła na jednym rdzeniu w 100%, więc zaczął rozwidlać inne bity w drugi wątek, prowadząc do „głównego” wątku zablokowanego na 100%, a wątku „tła” unoszącego się wokół 20-60%. Na czterordzeniowym rdzeniu to ... 30-40%.
Mooing Duck
3
Nie zapomnij trybu Turbo na procesorach. Menedżer zadań nie bierze tego pod uwagę przy obliczaniu procentu obciążenia. Na moim i5-4570S często widzę obciążenie około 30%. To jeden rdzeń (25%) ze zwykłym turbo 2,9 GHz do 3,4 GHz. 25 * 3,4 / 2,9 to prawie 30%. Przy większym rozpiętości między częstotliwością normalną a turbo możemy uzyskać wyższą wartość.
Sunzi,
7
@AytAyt - poszedłbym o krok dalej i powiedziałbym, że to nie tylko możliwe, to prawie pewne . O ile aplikacja PO nie wykonuje czystego łamania liczb (lub wszędzie używa blokad spinowych), w rzeczywistości ładowanie procesora jest dość trudne, nawet w przypadku programu wielowątkowego. Dowolne dyskowe lub sieciowe operacje we / wy pozostawiają bezczynne cykle, a biorąc pod uwagę wzmiankę OP o „opóźnionej” aplikacji, wydaje się prawdopodobne, że w grze występuje pewna komunikacja sieciowa.
aroth
49

Nie określiłeś swojego systemu operacyjnego. Więc odpowiedź będzie taka jak.

Aplikacje mogą być ograniczone z różnych powodów. Wąskim gardłem może być:

  • procesor
    • niska prędkość
    • aplikacje z jednym / niskim wątkiem (nie mogą korzystać ze wszystkich rdzeni / wątków)
  • I / O
    • przepustowość dysku
    • opóźnienie dysku
    • przepustowość sieci
    • opóźnienie sieciowe
  • pamięć
    • Pojemność
    • przepustowość
    • czas oczekiwania
    • niewystarczająca pamięć podręczna
    • miejscowość (NUMA)
    • zamiana

I jest więcej powodów, które nie są tak powszechne.

Spójrz więc na zasoby systemowe i spróbuj przeanalizować system pod kątem innych wąskich gardeł, a nie tylko całkowitego obciążenia procesora.

Jaroslav Kucera
źródło
9
Ponadto: Karta graficzna ma osobny procesor graficzny, wejście / wyjście i pamięć, może to być problem.
Mooing Duck
2
@MooingDuck Prawda, ale zwykle byłby to problem tylko wtedy, gdy dana aplikacja faktycznie korzysta z procesora graficznego (np. Gry 3D lub aplikacji CUDA / OpenCL lub czegoś
podobnego
13

Ogólnie rzecz biorąc, kiedy ludzie mówią, że ich komputer działa wolno, mówię o kurzu. Jako były informatyk z 15-letnim doświadczeniem zawodowym odkryłem, że zwykłe wydmuchiwanie kurzu może znacznie poprawić wydajność.

Nie mówię o cienkiej, prawie niezauważalnej ilości pyłu, ale raczej o dużych grudkach lub nawet matach, które uniemożliwiają normalny przepływ powietrza. Widziałem radiatory z filtrem kurzu, a nie z filtrem. To blokuje bardzo znaczną ilość powietrza, aby nigdy nie ochłodzić procesora. Takie usuwanie kurzu powoduje natychmiastowe wyciszenie wentylatorów i pozwala na dłuższe przetrwanie komponentów. Upał zabił wiele komputerów, których naprawę poproszono.

Idąc za pomysłem na problem cieplny, możesz również spróbować lepszej pasty termicznej. Biały cr @ p, który jest wyposażony w większość procesorów, przypomina pastę termiczną Yugo. Używam Arctic Silver, ale są nawet lepsze rzeczy. Arctic Silver to Porche (przy użyciu skali ocen samochodów), ale istnieją odmiany Ferrari i supersamochodów.

Procesory mają tendencję do zwalniania, gdy się przegrzewają. Jest to rzecz fizyczna, a także „samozachowanie” zaprogramowane w wielu procesorach. Nie wiem, czy nadal pokaże 100% w Menedżerze zadań, czy pokaże 40% (jak widzisz), ale może to być znaczne spowolnienie, gdy procesor próbuje pozwolić, by ciepło opadło i wachlowało dogonić."

Kolejną rzeczą, która może spowalniać procesor, jest procesor graficzny. Jeśli korzystasz z gier lub programów intensywnie korzystających z grafiki (np. CAD), procesor graficzny może wstrzymywać procesor. Lepsza karta graficzna może być czymś do obejrzenia. Również użycie niewłaściwej karty może Cię powstrzymywać. Karty do gier nie są (zwykle) przeznaczone do pracy z kartami CAD i stacjami roboczymi, a karty stacji roboczych (zwykle) również nie grają zbyt dobrze. Niektórzy tak, ale większość nie.

Jak wspomniał Jarosław Kucera, może to być związane z dyskiem. Uderzenie w HD (s) może spowolnić. Zwykle uruchamiam wiele dysków. Jeden dedykowany systemowi operacyjnemu i inne oprogramowanie, plik stronicowania Windows, pliki osobiste itp. Poza tym, że nie musisz się tak bardzo martwić o tworzenie kopii zapasowych danych osobowych w przypadku awarii systemu operacyjnego, posiadanie wielu dysków HD znacznie rozkłada obciążenie. Odczytywanie i zapisywanie na tym samym dysku w tym samym czasie może poważnie spowolnić HD. Korzystanie z SHD może to złagodzić, ale nie całkowicie. Oprogramowanie Photoshop i oprogramowanie do edycji wideo mocno uderzają w dyski twarde. Najlepszym sposobem jest czytanie z jednego HD, a następnie wysyłanie go do drugiego HD. Pomaga to również w życiu twoich HD. Używam również aktywnego chłodzenia na moich dyskach HD. Nie zabiłem dysku twardego, odkąd położyłem na nich wentylator i radiator +15 lat temu. Google, są tanie ubezpieczenie.

Wierz lub nie, twój zasilacz może cię również spowalniać. Jeśli nie masz wystarczającej mocy (lub twój zasilacz jest stary lub tani, przeceniony, chiński POS), możesz mieć problemy z wydajnością. Widziałem z pierwszej ręki, jakie dziwne problemy z systemem operacyjnym może zrobić niestabilny zasilacz. Szukasz napięcia, a także wzmacniaczy, więc upewnij się, że wszystkie są zgodne ze specyfikacjami zasilacza, jeśli jedziesz tą drogą, a także upewnij się, że spełniają lub przekraczają twoje potrzeby energetyczne. Jeśli suma komponentów wynosi 500 watów, a dajesz im nawet 475, to źle. Zalecam przekroczenie twoich wymagań o około 20%, więc gdy twój zasilacz starzeje się (i spada moc), a twoje inne komponenty starzeją się (i wymagają dużej mocy), nie musisz tak szybko kupować nowego zasilacza.

Uwzględniając inne odpowiedzi tutaj, jest jeszcze więcej powodów, aby komputer działał wolno. Z wyjątkiem opcji zasilacza, o czym mówiłem, bardzo często widziałem, kiedy byłem informatykiem. Wykonanie testu porównawczego i innych testów to jedyny sposób, abyś mógł to rozgryźć. Zamiana części może nawet nie rozwiązać problemu, jeśli jest to kombinacja wielu części powodująca spowolnienie.

AFAIK, nie ma sposobu, aby zmusić komputer do korzystania ze 100% procesora. Procesor i system operacyjny wiedzą, co muszą zrobić, i zazwyczaj są naprawdę dobre w swojej pracy. :-) Nie sądzę, aby ktokolwiek jeszcze wymyślił sposób, aby wymusić karmienie procesora tak, aby działał na 100%, kiedy uważasz, że powinien. Przynajmniej nie bez karmienia go dodatkowymi śmieciami, aby procent „wyglądał dobrze”.

Widząc 40%, a nie i podział liczb całkowitych 100% (jak 25%, 33% lub 50%), mam wrażenie, że nie jest to pojedynczy problem z wątkami. Być może, ale nie o to chodzi w moim umyśle. Od +1 do @Twisty Impersonator za natychmiastowe otwarcie.

Powodzenia w próbach znalezienia tego! Spędzam dni, próbując wymyślić tego rodzaju rzeczy, ale w końcu zastąpiłem większość wnętrzności jako „ostateczność”.

opłata za komputer
źródło
1
+1 za wskazanie możliwości zawieszenia aplikacji na maksymalnym GPU.
Mówię: Przywróć Monikę
6
Zapomniałem wspomnieć, że palenie przy komputerze to jedna z najgorszych rzeczy, jakie możesz zrobić. Pozostawia nieprzyjemny, obrzydliwy i obrzydliwy (nie można tego wystarczająco podkreślić) pomarańczowo-lepki lepki bałagan, którego nie można usunąć. Pył staje się zbity i niemożliwy do usunięcia. Być może uda ci się to zrobić za pomocą kąpieli olejowej z częściami samochodowymi lub sonicznej kąpieli wodnej, ale nigdy nie miałem takich problemów. Nawet samo czyszczenie obudowy to wysiłek daremny.
computercarguy
2
Tylko z perspektywy dewelopera procesor zrobi wszystko, co mu powiesz. Jeśli nie jest maksymalny na 100%, to dlatego, że twój program czeka na inne rzeczy, które się wydarzy (dyskowe operacje we / wy, sieć, dane wejściowe użytkownika, komunikaty systemowe itp.). Jeśli masz coś do zrobienia, procesor automatycznie wykorzysta 100% (przy założeniu aplikacji wielowątkowej), aby zrobić to, czego potrzebuje Twój program - nie musisz „zmuszać” go do użycia w 100%, odblokowania czy czegoś takiego.
JPhi1618,
2
@ JPhi1618: Zapomniałeś ciepła. Niezależnie od tego, co mu powiesz, jeśli procesor się przegrzeje, zacznie dławić się, aby działać na poziomie mniejszym niż 100%.
Mooing Duck
9
@ JPhi1618 Procesory są zwykle dławione przez skalowanie ich częstotliwości (podkręcanie), więc zamiast działać z, powiedzmy zamiast 3,0 GHz, pracują z częstotliwością 2,0 GHz. Tak więc procesor z dławieniem termicznym nadal może zgłaszać 100% obciążenia, ponieważ każde „miejsce pracy” jest zajęte, tylko jest mniej „miejsc pracy” w jednostce czasu.
el.pescado,
3

Mogą to być ustawienia oszczędzania energii w biosie lub systemie operacyjnym. Wiele współczesnych procesorów i płyt głównych ma ustawienia, dzięki którym procesor może być bardziej ekonomiczny przy zużyciu energii elektrycznej (szczególnie w przypadku laptopów, które chcą, aby bateria działała). Prawdopodobnie możesz wyłączyć takie ustawienie, ale upewnij się, że wiesz, co robisz, ponieważ obok ustawienia są zwykle inne rzeczy, które mogą wpływać na funkcjonalność komputera na inne ważne sposoby.

matematyk
źródło
2

Regularnie osiągam 100% wykorzystania podczas wykonywania zadań z renderowania i matematyki. Sprawdzę, czy hyperthreading osiągnie wysoki poziom 100%, a kolejność instrukcji to wielka sprawa. Zarówno Intel, jak i AMD dysponują dużą ilością sprzętu przeznaczonego do zmiany kolejności instrukcji, aby wypełnić jak najwięcej rdzeni wykonawczych. Jeśli dostajesz 30% na nowoczesną maszynę, możesz

  • Sprawdź temp. - Intel i AMD obniżają częstotliwość, gdy stają się gorące, i pokazuje się to jako zacinanie i skoki.
  • Nie robię z tym wiele… Przykłady to:
    1. Przeglądanie stron internetowych
    2. E-mail
    3. Najprostsze gry
    4. Prawie gwarantuję, że twój problem to jedno lub wszystkie z poniższych, zaczynając od góry:
  • Uzyskaj dysk SSD
  • Uzyskaj dysk SSD
  • Pobierz system operacyjny na dysk SSD i przenieś normalne dane na tradycyjny dysk o pojemności wielu TB. Windows potrzebuje większego dostępu do swoich lokalnych plików niż cokolwiek innego.
  • Bonazai Buddy?
  • Utrzymuj wszystkie dyski co najmniej powyżej 10% pojemności. NTFS to system plików z kronikowaniem, a wydajność spada wraz ze wzrostem pojemności dysku.
  • Potrzebujesz napędu NVMe / SSD na swój system operacyjny jak najszybciej (tak, powiedziałem to jeszcze raz). Wydajność jest niesamowita i stanowi część drugą tego ... Jeden z głównych sprzedawców sprzedawał dyski Samsung 961 NMVe 512 GB za 300 USD, co jest wystarczające na normalne użytkowanie.
  • Windows 10 jest obciążony procesorem graficznym. Tania dedykowana karta graficzna może odciążyć zarówno pamięć, jak i procesor. Nadal możesz używać APU w połączeniu z kartą wideo, ale zaoszczędzisz trochę pamięci RAM, a VRAM jest ogólnie znacznie szybszy.
  • Procesory o niższej liczbie rdzeni są również powiązane z pamięcią. Jeśli spojrzysz na i7, wszystkie obsługują czterokanałową pamięć DDR w 4 bankach. Chipy Epyc AMD będą 8-kanałowym DDR5 z 64 rdzeniami. Nie pomaga Wreszcie, i nie mogę tego wystarczająco podkreślić, zrzuć pieniądze na tyle pamięci RAM, ile zajmie twoja maszyna. Mam 32 GB i kupuję kolejne 32 w tym roku. Windows robi coś podobnego do super pobierania, który jest nieco nowszy, który kompresuje pamięć w pamięci RAM, która nie jest używana, więc programy i dane można po prostu rozpakować w razie potrzeby. Jako kolejny przykład uruchomiłem maszynę wirtualną z systemem Linux do programowania, przydzieliłem 6/12 rdzeni i 16 GB pamięci RAM, a po pierwszym załadowaniu dysku SSD uruchamia się za około 3 sekundy. Procesor jest obecnie uważany za bardzo tani przez takie optymalizacje ...

Wszystkie te rzeczy wydają się przesadne, dopóki nie utknąłem przy kompilowaniu projektu pliku 70k lub skalowaniu plików RAW z gigantycznego aparatu do 17 x 26 x 600 dpi przy 16-bitowym kolorze. Nawet przy 100% wykorzystaniu zasoby są tak nadmierne, że nie spowalniasz. Innej nocy zdałem sobie sprawę, że mam dwie maszyny wirtualne i Wolf 2 wraz z 2 IDE (jestem rozproszony, pozwij mnie) i nie zauważyłem spowolnienia. To BTW o wartości około 1500 USD, nic specjalnego i najchętniej kupowane przez lata. Połowa z nich to jeden z Radeonów RX64, ponieważ moja karta wideo miała 6 lat. Ogromna różnica w renderowaniu i tym podobne. Aktualizacja prawdopodobnie zapewni większe wykorzystanie sprzętu niż przyjęcie, że 30% wykorzystania to wszystko, co dostaniesz.

Gdybym wrzucił dysk twardy 5400 RPM w tym komputerze dla systemu operacyjnego, działałby jak totalna bzdura.

TL; DR brzmi, jakbyś był teraz związany z procesorem. Wydaj kilkaset na co najmniej 256 GB SSD dla systemu operacyjnego, 8 GB pamięci RAM i niższą kartę gracza, a komputer przetrwa lata. Ten przetrwał przez 6 lat, zanim w końcu zrobiłem procesor i odświeżenie Mobo, i skompilowałem cały pakiet kompilatora krzyżowego około 25 razy dziennie ze starym sprzętem.

Nazywaj mnie przesadną, ale nie polecam 8 kart Tesli ani nic takiego. :-) Dokonuj drobnych aktualizacji, kiedy możesz, i myślę, że rozwiążesz wiele z tych problemów. Zrobiłem to wiele lat temu, dodając dysk SSD do systemu Q6600 i obserwując potrójną wydajność.

JimmyShinny
źródło
1

Trudno powiedzieć, nie znając specyfiki twojego programu, ale ponieważ inna odpowiedź dotyczy możliwości zastosowania aplikacji jednowątkowej, przyjrzę się aplikacji tak, jakby używała właściwej wielowątkowości.

Często pomijane są rdzenie fizyczne w porównaniu z „rdzeniami hiperwątkowymi”. Hyperthreading wyróżnia się w wielu krótkich zadaniach z wąskimi gardłami innymi niż procesor. W przypadku wąskich pętli zadań z wąskim gardłem procesora nadal jesteś ograniczony liczbą fizycznych rdzeni, która ogólnie jest o połowę mniejsza niż liczba rdzeni z hiperwątkiem. W absolutnie najgorszym scenariuszu menedżer zadań może pokazywać tylko 50% użycia, ponieważ zlicza rdzenie z przeplotem w swoich grafach, podczas gdy w rzeczywistości rdzenie fizyczne mogą być w 100% zużyte. Ogólnie rzecz biorąc, pokazałbyś więcej, ponieważ twój system operacyjny będzie mógł używać hiperwątkowości do innych niepowiązanych zadań.


źródło
Czy „prawidłowe wielowątkowość” nie oznaczałoby posiadania wątku do pracy dla każdego rdzenia logicznego, a nie dla każdego rdzenia fizycznego ? Jeśli masz ścisłą pętlę na każdym rdzeniu logicznym, Menedżer zadań powinien zgłaszać 100% hiperwątkowości. AFAIK, „procent wykorzystania” w Menedżerze zadań jest oparty na ilości czasu, w którym dany wątek był w stanie wykonalnym i zaplanowanym na logicznym rdzeniu, niekoniecznie na tyle czasu, że w rzeczywistości robił coś na ALU . System operacyjny prawdopodobnie nawet nie wiedziałby o tym (tylko mikrokod procesora.)
reirab
1
„Zwykły” kod maszynowy wykorzystuje tylko 2 do 3 z 6 lub więcej portów instrukcji w nowoczesnych procesorach. Nie wspominając już o wszystkich przeciągnięciach rurociągu spowodowanych brakami w gałęzi i pamięci podręcznej. Hyperthreading pomaga wypełnić te luki. Korzystanie z niego prawie zawsze jest wygraną. Niektóre typy kodu nie radzą sobie z nim dobrze, na przykład kodowanie / dekodowanie wideo lub wysoce zoptymalizowana matematyka macierzy. Ale są niezwykłe.
Zan Lynx,