Anonim

De meeste Windows-pc's worden nu aangedreven door multi-coreprocessors, en recente versies van Windows doen het over het algemeen heel goed om automatisch de totale verwerkingskracht van uw pc te verdelen om het best geschikt te zijn voor uw actieve apps en games. Maar soms kunnen de gebruiker en Windows verschillende ideeën hebben als het gaat om het nemen van beslissingen over het beste gebruik van de CPU-kracht van een pc, en dat is waar geavanceerde gebruikers kunnen ingrijpen en bepaalde apps of processen handmatig kunnen beperken tot specifieke CPU-kernen, dankzij een functie Processor Affinity genoemd . Hier is hoe het te doen.
Als het gaat om consumentenversies van Windows, dateert de mogelijkheid voor een gebruiker om het gebruik van een specifieke CPU-cores in een app handmatig te configureren uit het tijdsbestek van Windows XP / 2000, hoewel de stappen enigszins verschillen in elke versie van Windows. Voor de stappen en schermafbeeldingen gebruiken we Windows 10, maar lezers met oudere versies van Windows, met name Windows 7 en Windows 8 / 8.1, moeten de basisstappen kunnen volgen in het licht van kleine verschillen met de Windows UI.
Het is ook belangrijk om op te merken voordat we doorgaan dat het wijzigen van de processoraffiniteit voor een bepaald proces of een bepaalde app stabiliteitsproblemen kan veroorzaken, en dat dit waarschijnlijk de prestaties van moderne multi-threaded apps en games zal verslechteren. Zorg er daarom voor dat je eerst experimenteert met niet-cruciale apps en gegevens, en zorg ervoor dat je open werk- of gamevoortgang opslaat voordat je de hier besproken instellingen wijzigt, omdat crashes van applicaties of systemen mogelijk zijn.

Waarom de toegang van een app tot CPU-kernen beperken?

Zoals hierboven vermeld, zullen de meeste gebruikers willen dat Windows automatisch de verwerkingskracht van de pc verwerkt, en ervoor zorgt dat apps die alle kernen kunnen gebruiken er toegang toe krijgen. Dit resulteert meestal in betere prestaties, dus de primaire vraag is waarom een gebruiker een bepaalde multi-threaded app ooit zou willen beperken of beperken tot minder dan het totale aantal fysieke en logische cores dat een pc beschikbaar heeft.
Er zijn twee basisantwoorden op deze vraag: 1) zorgen voor compatibiliteit en prestaties met oudere software, en 2) uitvoeren van een anders zwaar belastende processorvarken terwijl tegelijkertijd voldoende middelen worden gereserveerd om tegelijkertijd andere taken uit te voeren.
We beginnen met het eerste antwoord: compatibiliteit en prestaties. Sommige Windows-apps en -games waren gecodeerd lang voordat multi-threaded en multi-core processors op consumentenniveau een realiteit waren. Vooral de makers van oudere games hebben nooit gedacht dat iemand die de game speelt iets meer zou hebben dan een Windows-pc met een enkele hoogfrequente CPU-kern. Wanneer software van deze tijd moderne CPU's tegenkomt met vier, zes, acht of zelfs meer cores, kan dit soms leiden tot prestatieproblemen of zelfs tot het onvermogen om het programma te starten.
Veel apps en games werken natuurlijk nog steeds prima, zelfs wanneer ze worden aangedreven door de nieuwste 8-core / 16-thread monster desktop-CPU's. Maar als je een ouder spel probeert te spelen en je hebt problemen, kan het gebruik van processoraffiniteit om het spelproces handmatig te beperken tot slechts een van je vele cores een goede stap zijn om het probleem op te lossen.
Het tweede antwoord is waarschijnlijk nuttiger voor meer Windows-gebruikers en zal de basis vormen voor onze stapsgewijze instructies hieronder. Hoewel veel Windows-apps, met name games, nog steeds niet kunnen profiteren van meer dan een of twee cores, zijn apps voor het maken van inhoud, zoals video-encoders en 3D-renderingtools, de afgelopen jaren geoptimaliseerd om elke ons verwerkingskracht te kunnen gebruiken die uw pc kan naar ze gooien. Over het algemeen wilt u dat deze apps zo snel mogelijk gaan, maar soms zijn snelheid of doorlooptijd niet de primaire factor en houdt u liever een deel van de verwerkingskracht van uw pc beschikbaar voor een andere taak, terwijl uw veeleisende media-app in de achtergrond. Dit is waar processoraffiniteit echt van pas komt.

Stap voor stap: ons voorbeeld

Een app die alle CPU-cores opeet die je erin gooit, is een x264-video-encoder zoals RipBot264 (of HandBrake, of een van de vele beschikbare x264- en x265-encodertools). In ons voorbeeld willen we dat RipBot264 een videobestand codeert, maar we willen ook tegelijkertijd aan andere projecten in apps zoals Photoshop en Premiere werken.

Standaard gebruikt een app zoals RipBot264 alle beschikbare verwerkingskracht.

Als we onze RipBot264-codering zouden starten en vervolgens Photoshop en Premiere zouden lanceren, zou Windows zijn best doen om prioriteiten te stellen en tegemoet te komen aan de behoeften van elke app, maar Windows zal ook af en toe een fout maken, wat resulteert in vertragingen of tijdelijke bevriezingen in onze actieve apps. We kunnen proberen dit te voorkomen door processoraffiniteit te gebruiken om het gebruik van onze CPU-cores door RipBot264 te beperken.
Zorg eerst dat u bent aangemeld bij een Windows-gebruikersaccount met beheerdersrechten. Ga dan door en start de app die u wilt beperken. In ons geval is dat RipBot264.
Start vervolgens Windows Taakbeheer, door met de rechtermuisknop op de taakbalk te klikken en Taakbeheer te selecteren of door de sneltoetscombinatie Ctrl-Shift-Escape te gebruiken . Standaard start Taakbeheer in recente versies van Windows in een "basisweergave". Als uw Taakbeheer niet lijkt op die in onze screenshots, klikt u op Meer details om de volledige interface weer te geven. Zodra dat is gebeurd, zorg je ervoor dat je op het tabblad 'Processen' bent en zoek je nu je app of proces.
Deze laatste stap is mogelijk gemakkelijker gezegd dan gedaan. In veel gevallen vindt u eenvoudig de gewenste app in de lijst. In andere gevallen kunnen sommige apps unieke processen gebruiken, afgezien van het primaire applicatieproces voor bepaalde taken. De sleutel is om het proces of de processen te vinden die verantwoordelijk zijn voor het CPU-gebruik dat u wilt beperken. Een goede manier om dit te testen is om de veeleisende activiteit op gang te brengen (in ons geval een videobestand te coderen) en vervolgens Taakbeheer te sorteren op de CPU-kolom om de processen te vinden die de hoogste niveaus van CPU-bronnen gebruiken. Als de procesnaam (nogmaals, in ons geval een H.264-encoderproces) overeenkomt met uw doel-app, bent u helemaal klaar.
Klik met het juiste proces geïdentificeerd, klik er met de rechtermuisknop op en selecteer Ga naar details . Hiermee gaat u naar het tabblad Details van Taakbeheer en wordt automatisch het juiste proces gemarkeerd.


Klik nu opnieuw met de rechtermuisknop op het proces en selecteer Affiniteit instellen .

Een nieuw venster met de naam "Processor Affinity" verschijnt gevuld met selectievakjes en een genummerde lijst met CPU's, waarvan het aantal is gebaseerd op het totale aantal fysieke en logische cores verpakt in uw specifieke CPU. Ons voorbeeldsysteem gebruikt een Intel Core i7-5960X, die acht hyperthreaded cores heeft. We hebben daarom in totaal 16 CPU's in ons Processor Affinity-venster.


Vervolgens is het tijd om te beslissen hoeveel u uw app wilt beperken. Schakel het selectievakje naast Alle processors in om alle CPU-vakken te deselecteren en kies vervolgens ten minste één CPU-vakje om aan te vinken, waarbij elk een fysieke of logische kern vertegenwoordigt. Bij afwezigheid van CPU-defecten of unieke overklokscenario's, maakt het over het algemeen niet uit welke cores u selecteert.


In ons voorbeeld willen we RipBot264 beperken tot vier cores, waardoor er veel ruimte overblijft voor onze andere, meer tijdgevoelige taken. Nadat u het gewenste aantal cores hebt geselecteerd, drukt u op OK om het venster Processoraffiniteit te sluiten. Uw wijzigingen worden onmiddellijk van kracht en als de app al bezig was met een CPU-zware taak, ziet u dat het processorgebruik op alles daalt, behalve op de door u geselecteerde cores.

Zodra we RipBot264 hebben geconfigureerd om slechts 4 van onze 16 cores te gebruiken, daalt het CPU-gebruik onmiddellijk op de resterende cores.

Met deze configuratie kunnen we RipBot264 zo snel mogelijk laten coderen op die vier cores, maar de resterende twaalf cores in ons systeem kunnen andere apps gebruiken. Als we later ons andere werk afmaken en de volledige prestaties van RipBot264 willen herstellen, kunnen we de bovenstaande stappen eenvoudig herhalen om terug te gaan naar het venster Processor Affinity en vervolgens het vak Alle processors aanvinken om de app opnieuw toegang te verlenen tot al onze CPU's kernen.

Voorbehoud

Naast de eerder genoemde stabiliteitsproblemen, is er nog een ander belangrijk voorbehoud dat u moet overwegen. Alle wijzigingen die u aanbrengt in de processoraffiniteit worden opnieuw ingesteld wanneer dat proces opnieuw wordt gestart. Dit betekent dat u deze stappen minimaal moet herhalen telkens wanneer u uw pc opnieuw opstart. Sommige processen zijn echter nog lastiger, omdat ze automatisch opnieuw worden geladen, afhankelijk van de instructies van de app. In onze RipBot264-installatie begint bijvoorbeeld het H.264-coderingsproces dat we hebben aangepast telkens wanneer de app doorgaat met het coderen van een nieuw videobestand.
U kunt deze beperking mogelijk omzeilen door aangepaste scripts te maken die de processoraffiniteit van uw app instellen via een opdrachtregelgebaseerd batchbestand of snelkoppeling, maar sommige apps kunnen unieke of willekeurige processen gebruiken die dergelijke inspanningen moeilijk of onmogelijk maken. Het is daarom het beste om individueel te experimenteren met elke app die u wilt beperken om de beste manier te vinden om de processoraffiniteit handmatig te configureren.

Hoe apps te beperken tot specifieke cpu-cores met processoraffiniteit