GNU/Linux >> Znalost Linux >  >> Linux

Je změna priority herního procesu na realtime špatná pro CPU?

Změna priority procesu pouze určuje, jak často bude tento proces běžet, když ostatní procesy soutěží o čas CPU. Nemá to žádný vliv, když proces jako jediný využívá čas CPU. Proces s minimální prioritou na jinak nečinném systému získává 100 % procesorového času, stejně jako proces s maximální prioritou.

Svou hru tedy můžete spouštět s vyšší prioritou, ale to ji nezrychlí, pokud něco jiného v systému nezabere značné množství času CPU.

Doporučuji ponechat prioritu nižší než X server, protože pokud X server chce CPU čas, je to pravděpodobně proto, že hra po něm žádá, aby zobrazil něco složitého, a zobrazení je obvykle úkol náročný na CPU (ale záleží, jak moc práce se provádí v GPU – priority CPU nemají žádný vliv na GPU).

CPU jsou navrženy tak, aby spouštěly kód. Změna priorit procesu neovlivní množství práce, kterou CPU vykonává, ale i kdyby k tomu došlo, nepoškodilo by to CPU, pouze by se zahřálo, a proto by ventilátory v počítači více foukaly.


Mluvíte o změně množství požadavků CPU, když běží vlákno?

Moderní CPU ve skutečnosti používají extrémně rychlé krokování rychlosti. Pokud jste například provedli analýzu taktování procesoru Intel Core i5/i7, můžete vidět, jak rychlost hodin opravdu rychle bliká nahoru a dolů. Je to součást způsobu, jakým Intel dokáže vyladit výkon vzhledem k množství odebrané energie. Ve stolním počítači můžete mít k dispozici spoustu energie, ale materiál se přeměňuje na teplo, když CPU pracuje intenzivněji, takže je důležité získat co nejvyšší výkon na watt.

Vím to jen z toho, co jsem četl na jiných herních fórech. Nejsem procesorový vědec.

Nemyslím si, že byste nadělali škodu vyladěním vlákna na jeho maximální "ošklivost". Jediná věc, kterou byste měli sledovat, je to, jak se váš procesor zahřívá, ale pokud jste v BIOSu nepoužili přepětí, je docela nemožné uvařit CPU, než se vypne.

Moderní CPU jsou navrženy tak, aby rychle měnily rychlost. Vyhledejte položky Intel Speed ​​Stepping a „stavy CPU C“ a uvidíte, co tím myslím.


Pomocí renice na linuxovém programu nevypálí váš CPU, ale nemusí nutně dělat to, co chcete.

Priority nemají nic co do činění s tím, jak rychle CPU vykonává kód. Stejně rychle spouští kód z programů v různých úrovních priority. Priority se mění je, který program se operační systém rozhodne spustit, když má na výběr. CPU mohou spustit pouze jedno "vlákno" provádění najednou (technicky 1 na jádro u vícejádrových CPU). Pokud potřebuje udělat více, spoléhá na multitasking – přepíná tam a zpět mezi spouštěním různých programů, aby vytvořil iluzi běhu více vláken, než kolik je CPU. Když vybíráte, kolik času každému z těchto úkolů věnovat, dělá to pomocí priority jako nápovědy.

To, co pro počítač znamená „reálný čas“, je méně „běž tak rychle“ a více „nepředcházení tomuto procesu“. Programování v reálném čase je velmi důležité v mnoha oblastech. Pokud bych například psal software, který spravuje protiblokovací brzdy v autě, opravdu nechci, aby se můj úkol spustil o několik milisekund pozdě, protože operační systém rozhodl, že je potřeba spustit diagnostiku stěračů čelního skla. V souladu s tím je software pro řízení protiblokovacích brzd v automobilech spouštěn s prioritou „v reálném čase“.

Po pravdě řečeno, v Linuxu je úroveň priority „v reálném čase“ trochu nesprávné pojmenování. Je to kvůli tomu, jak Linux plánuje své procesy. V systému Windows, pokud máte proces, který běží s vyšší prioritou, procesy běžící s nižší prioritou nedostanou žádný procesorový čas, pokud úloha s vyšší prioritou na něco nečeká – vůbec žádný. Pouze procesy jádra mohou běžet přes vrchol úlohy Windows "v reálném čase". Windows má tunu bloatware běžícího neustále na pozadí, takže zvýšením priority na „realtime“ zabráníte spuštění veškerého nevyžádaného odpadu.

S tím je však problém. Někdy váš úkol s vyšší prioritou závisí na jednom z těchto úkolů s nižší prioritou. Říká se tomu „inverze priority“ a je to velké téma ve světě vícevláknového programování. Když k tomu dojde, může úkol s vyšší prioritou vyhladovět úkol s nižší prioritou, aniž by si uvědomoval, že se sám zastavuje! V Linuxu k tomu nedochází, protože v Linuxu jsou priority chápány jako způsob, jak určit, jaká část CPU je přidělena každému programu, spíše než jako přístup všechno nebo nic. Proces běžící na -20 dostane podstatně více času CPU než ten běžící na 0, ale i v přítomnosti programu -20 program 0 nějak získá CPU čas. Pokud paměť poslouží, současný plánovač Linuxu dává programu při -1 dvakrát větší výkon CPU než 0 a programu při -2 dvakrát větší než -1 a tak dále. To znamená, že 0,9999046 % vašeho procesorového času půjde na program, který je na -20, ale nějaký malý zlomek ano přejděte na program na 0. Program na 0 bude mít pocit, že běží na 200kHz procesoru!

Pokud někdy chcete pravdu v reálném čase, kde můžete zabránit čemukoli jinému, aby vás předešlo, musíte napsat ovladač jádra nebo musíte použít rozšíření pro Linux v reálném čase. Redhat má jeden nazvaný MRG, který umožňuje skutečné zpracování v reálném čase s Linuxem. V takovém případě "realtime" znamená něco konkrétního. Podle MRG mají uživatelé ve skupině "realtime" povoleno používat tato rozšíření v reálném čase (což by mohlo procesor zaměstnávat navždy, protože záměrně nepoužívají příjemný přátelský plánovač Linuxu).


Linux
  1. Rsync mění oprávnění k adresáři?

  2. Zkontrolujte využití procesoru/vlákna pro uzel ve Slurm Job Manager?

  3. Zkontrolujte limit otevřeného FD pro daný proces v Linuxu

  1. Jak vyprázdnit mezipaměť CPU pro oblast adresního prostoru v Linuxu?

  2. Jak si Linux zachovává kontrolu nad CPU na jednojádrovém stroji?

  3. Jak najít soubor .pid pro daný proces

  1. Maximální hodnota ID procesu?

  2. CentOS / RHEL :Jak upřednostnit zařízení použitá pro odkládací oddíl

  3. UNIX / Linux :Jak změnit vhodnost (prioritu) procesu