Styr vilka CPU-kärnor olika program använder med nytt program

Permalänk
Melding Plague

Styr vilka CPU-kärnor olika program använder med nytt program

Core Director är ett nytt Windowsprogram med vilket det går att tvinga program att bara köra på P-kärnorna på moderna Intel-processorer.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

Känns som något som borde kunna styras direkt i det önskade programmet.

Permalänk
Medlem

Jag hade gärna sett källkoden till detta, gärna så man kan kompilera själv.

Permalänk
Medlem
Skrivet av CymbalCrasher:

Känns som något som borde kunna styras direkt i det önskade programmet.

Det är väl det som är det problematiska när programmen själva ska önska, när ett enklare program kräver kraftfullare kärnor, då är det upp till programmeraren som gör programmet att avgöra. Bättre är att låta operativsystemet avgöra, men även det kan bli fel, därav detta programmet, då kan användaren själv styra!

Visa signatur

Do good. Be good. Repeat.

Permalänk
Medlem
Skrivet av TrueType:

Det är väl det som är det problematiska när programmen själva ska önska, när ett enklare program kräver kraftfullare kärnor, då är det upp till programmeraren som gör programmet att avgöra. Bättre är att låta operativsystemet avgöra, men även det kan bli fel, därav detta programmet, då kan användaren själv styra!

Det är det jag menar, att operativsystemet kan schemalägga som det tycker är bäst, men att du borde kunna gå in i programmets inställningar och ställa in hur du själv vill ha det. Eller ännu bättre, en meny direkt i operativsystemet där du kan ändra kärnanvändningen.

Permalänk
Medlem
Skrivet av CymbalCrasher:

Det är det jag menar, att operativsystemet kan schemalägga som det tycker är bäst, men att du borde kunna gå in i programmets inställningar och ställa in hur du själv vill ha det. Eller ännu bättre, en meny direkt i operativsystemet där du kan ändra kärnanvändningen.

Du kan göra det i task manager, men det sparas inte så måste göras varje gång man startar programmet. Därför program som detta och process lasso finns, de håller koll på processer och ändrar automatiskt när de startas.

Visa signatur

CCNP

Permalänk
Medlem
Skrivet av CymbalCrasher:

Känns som något som borde kunna styras direkt i det önskade programmet.

problemet är väl att utvecklarna alltid kommer vilja att deras program har företräde framför allt annat.

Visa signatur

En trött jäkel.

Permalänk
Medlem

Men visst kan man stänga av E-kärnorna i BIOS - problemet löst utan extern mjukvara.

Permalänk
Medlem

Med något som detta hade AVX512 fungerat med Alderlake+. Istället för anpassa sig till sämsta kärnans funktionalitet.

Visa signatur

How do 'Do Not Walk on the Grass' signs get there ?

Permalänk

Nån som har lust att laborera lite med några spel?
Se om det kan bli skillnad i FPS.

Visa signatur

| i5 13600K | Noctua NH-D15S | PRO z690-p | 16GB RAM 3200 | EVGA RTX 3080 |
| Fractal Design Newton 800w platinum | 3xBenQ XL2420T + 3D Vision gen2|
| Win10 x64 | Logitech Pro X Superlight | Sennheiser HD 599 | Pioneer VSX-D510 |

Permalänk
Medlem

Jag har kört Process Lasso i många år, funkar utmärkt.
Så jag blir inte förvånad om detta funkar perfa.

Visa signatur

CPU: I7 7700k @ 4.6GHz - Noctua NH D15S - Asus ROG Strix Z270F Gaming.
GPU: RTX 3070TI @2 st 120mm cf-v12hp hydro dynamic fläktar. 👍
RAM: 32GB DDR4 3200MHz. HÅRDDISK: 4 st SSD, 2 Mekaniska.
MONITOR:1 Xiaomi MI 34"- 3440x1440 144Hz MONITOR:2 Optix MAG274R 27" 1080p 144Hz MONITOR/Tv:3 LG 47lv355n-ZB 47". Nätagg: Corsair Newton R2 1000W. Allt i ett Cooler Master CM Storm Stryker.

Permalänk
Medlem
Skrivet av S.Shooter:

Nån som har lust att laborera lite med några spel?
Se om det kan bli skillnad i FPS.

Jag killgissar ganska ca säkert att det är ett jämnare flyt som en får, inte mer fps.
Det vill säga tar bort stutters och spikes.

Visa signatur

CPU: I7 7700k @ 4.6GHz - Noctua NH D15S - Asus ROG Strix Z270F Gaming.
GPU: RTX 3070TI @2 st 120mm cf-v12hp hydro dynamic fläktar. 👍
RAM: 32GB DDR4 3200MHz. HÅRDDISK: 4 st SSD, 2 Mekaniska.
MONITOR:1 Xiaomi MI 34"- 3440x1440 144Hz MONITOR:2 Optix MAG274R 27" 1080p 144Hz MONITOR/Tv:3 LG 47lv355n-ZB 47". Nätagg: Corsair Newton R2 1000W. Allt i ett Cooler Master CM Storm Stryker.

Permalänk
Medlem
Skrivet av CymbalCrasher:

Känns som något som borde kunna styras direkt i det önskade programmet.

Nja...då hade alla program efterfrågat högpresterande kärnor.
Men man kan väl tycka att operativsystemet borde kunna känna till vad det har för hårdvaruresurser och tilldela dem till processerna enligt prioritet, last etc.

Permalänk
Medlem
Skrivet av ThomasLidstrom:

Nja...då hade alla program efterfrågat högpresterande kärnor.
Men man kan väl tycka att operativsystemet borde kunna känna till vad det har för hårdvaruresurser och tilldela dem till processerna enligt prioritet, last etc.

Och just detta finns i Windows, är anledningen till att man bör använda Windows 11 med senaste två generationerna Intel cpuer då Windows 10 inte har samma stöd som 11an i schemaläggaren. Sen att Windows egna schemaläggare inte funkar som man vill både med Intel och amd är en annan femma.

Visa signatur

here we go!

Permalänk
Medlem

Är det någon som vet om det finns en liknande "enkel-att-använda" program för AMD CPU?

Permalänk
Datavetare

Är inte primära problemet med asymmetriska CPU-designer ihop med Windows hur dessa schemaläggs i "Balanced" läget (som nog är default-läget för rätt många, framförallt icke-entusiaster)?

I detta läge är det bara programmet som har "input-fokus" som i första hand körs på P-kärnor. Alla övriga program körs i första hand på E-cores, P-cores används bara om "tillräckligt" många trådar används 100 % (så typ ~0 % av fallen normalanvändaren kör i bakgrunden).

Tycker modellen Windows använder i "Best performance" läget (och det Linux använder) känns klart rimligast. I det läget används i första hand ena tråden på varje P-core, sedan används E-cores och i sista hand används "andra" tråden på P-cores.

Går sakta att få ordning på hantering av asymmetriska kärnor i Windows (och i ärlighetens namn tog det något år att få ordning på det i Linux också, men där har man jobbat med det sedan 2011 när Arm lanserade "big.LITTLE" konceptet). Värt att notera: är just bättre utnyttjade av E-kärnor i spel som gör att APO (Intels Application Optimization) ger en rätt hyfsad boost.

"Problemet" med APO är att det i nuläget kräver allt för mycket handpåläggning. Det verkar krävs hand-jagande som är helt realistiskt att förvänta sig till en konsol, men knappast något speciellt många kommer bry sig om på en heterogen miljö som PC.

Skrivet av underd0g76:

Men visst kan man stänga av E-kärnorna i BIOS - problemet löst utan extern mjukvara.

För vissa spel kan det hjälpa, men för vissa spel hjälper det ännu mer att slå av SMT/HT. Problemet är väl att båda dessa funktioner är väldigt användbara i andra lägen, lite segt att behöva boota om i stället för att alt-tab:a...

Skrivet av Dyluck:

Med något som detta hade AVX512 fungerat med Alderlake+. Istället för anpassa sig till sämsta kärnans funktionalitet.

Intel var väldigt naiva att tro det skulle fungera i praktiken att ha en asymmetrisk CPU-design där inte alla kärnor har identisk ISA. Detta var den ursprungliga planen, men man gav upp rätt snabbt. Alla andra om använder sig av asymmetrisk CPU-design kör med identisk ISA på alla kärnor, det är svårt nog att få till det riktigt bra på OS-nivå.

Den lösning Intel gör framåt känns som långt vettigare: med AVX10 kan man använda fördelarna med AVX-512 (finns en del bra idéer kring hur man hanterar divergerande spår i SIMD-optimerad kod där), men utan att kräva 512 bitars register (som tar för mycket resurser för att vara realistiskt på en "small-core" design).

AVX10 är ett OK-ish plåster utan att helt designa om SIMD-instruktionerna för x86_64 och använda den SIMD-teknik som Arm använder med SVE/SVE2 (RISC-V gänget kommer göra något liknande för den ISA:n). "Rätt" sätt är att designa instruktionerna så att storleken på registren kan variera mellan CPUer, men själva programkoden ändras inte. På en "bredare" CPU tar saker bara färre varv och går snabbare.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Skrivet av friArsenik:

Är det någon som vet om det finns en liknande "enkel-att-använda" program för AMD CPU?

Jag kanske har missförstått det, men AMDs kärnor är väl inte riktigt efficiency cores på samma sätt, utan alla kärnor är av högpresterande typ? Därav inte samma behov av denna sorts program? Rätta mig gärna om jag har fel.

Visa signatur

Macbook Pro 14"
10Gb internet 🙌

Permalänk
Medlem

Kan man inte redan detta i Windows? I Task Manager/Details/Högerklicka på den aktivitet du vill ändra/Set affinity
Där kan man ju checka av/på vilka kärnor programmet ska använda, använder AMD.

Visa signatur

MSI B650 Gaming Plus WIFI - Ryzen 7 7800X3D - XFX 7900 XT - Corsair 32GB DDR5 6000MHz CL36 - Fractal Design Meshify 2 Compact - Gigabyte Ultra Durable 850W

Permalänk
Medlem
Skrivet av Mormis:

Kan man inte redan detta i Windows? I Task Manager/Details/Högerklicka på den aktivitet du vill ändra/Set affinity
Där kan man ju checka av/på vilka kärnor programmet ska använda, använder AMD.

Vad du gör där är en tillfällig fix. Nästa gång du startar programmet så får du göra om det.
Jag har en äldre cpu, så jag använder process lasso. I det kan jag efter att ha startat ett program/spel ställa in en profil på alla resurser det använder. Så som prioritet för I/O, kärnor, minne osv.
En profil programmet kommer ihåg var gång det startas.

Visa signatur

CPU: I7 7700k @ 4.6GHz - Noctua NH D15S - Asus ROG Strix Z270F Gaming.
GPU: RTX 3070TI @2 st 120mm cf-v12hp hydro dynamic fläktar. 👍
RAM: 32GB DDR4 3200MHz. HÅRDDISK: 4 st SSD, 2 Mekaniska.
MONITOR:1 Xiaomi MI 34"- 3440x1440 144Hz MONITOR:2 Optix MAG274R 27" 1080p 144Hz MONITOR/Tv:3 LG 47lv355n-ZB 47". Nätagg: Corsair Newton R2 1000W. Allt i ett Cooler Master CM Storm Stryker.

Permalänk
Skrivet av CymbalCrasher:

Känns som något som borde kunna styras direkt i det önskade programmet.

Det kan det ocksä.

Permalänk
Medlem
Skrivet av maniak:

Du kan göra det i task manager, men det sparas inte så måste göras varje gång man startar programmet. Därför program som detta och process lasso finns, de håller koll på processer och ändrar automatiskt när de startas.

Går att starta program med en bat fil så att den startar med din affinity.
Jag kör igång Steam med en bat fil så att den bara får tillgång till de kärnor jag vill att den ska använda. När steam sen startar spel så ärver dom samma affinity.
det kan se ut såhär ...

@echo off A:\Windows\System32\cmd.exe /C start /affinity 0x1 "steam" "B:\steam\steam.exe"

där "0x1" är hex för vilka cores du vill använda. (tex, 8core cpu, du vill använda de 4 första 00001111, 0+0+0+0+8+4+2+1=15, 15 i hex blir '0xF' )

Funkar bra för spel rent generellt, men vill man peta på något specifikt spel så blir det ju lite manuellt. Och sen kan man ha en annat bat fil för OBS, tex.

Men jag kommer ju att dra ner och prova Core Director så man slipper en massa bat filer.

Permalänk
Medlem

Alltså, jag har en idé....Hade det inte varit bättre att enbart ha P-kärnor?

Då försvinner ju behovet av att styra - Tänk i framtiden där du enbart har tillgång till de kraftfullaste processorkärnorna...

Visa signatur

Krusidullen är stulen

Permalänk
Medlem
Skrivet av TobiasStockholm:

Jag kanske har missförstått det, men AMDs kärnor är väl inte riktigt efficiency cores på samma sätt, utan alla kärnor är av högpresterande typ? Därav inte samma behov av denna sorts program? Rätta mig gärna om jag har fel.

Jag tänkte mer om man skulle kunna mha en sådan mjukvara tvinga olika program att använda olika antal kärnor t.ex. ett gammalt dataspel startas ej pga många kärnor i cpu'n.

Permalänk
Medlem
Skrivet av SuperSverker:

Alltså, jag har en idé....Hade det inte varit bättre att enbart ha P-kärnor?

Då försvinner ju behovet av att styra - Tänk i framtiden där du enbart har tillgång till de kraftfullaste processorkärnorna...

Att det är blandat är för att få in fler kärnor på en mindre yta och drastiskt minska värmeutvecklingen för samma flerkärning prestanda.

Visa signatur

Moderkort: Gigabyte X570 Aorus Master | CPU: AMD Ryzen R9 5900X | CPU-kylare: Noctua NH-D15 chromax.black | RAM: Corsair Vengeance LPX 64 GB (4x16) DDR4-3600 CL18 | GPU: Gigabyte RTX 4080 Eagle OC | SSD: 2 x Samsung 970 EVO Plus 1 TB NVMe + Kingston A400 480 GB + Samsung QVO860 1 TB | PSU: EVGA SuperNOVA G2 1000 W Gold | Chassi: Lian Li O11 Dynamic XL | Skärm: BenQ PD3200U @ 3840x2160 + ASUS ROG Strix XG32VQ @ 2560x1440 | Tangentbord: Corsair K68 RGB Cherry MX Red | Mus: Logitech MX Master 2S

Permalänk
Medlem
Skrivet av cyklonen:

Att det är blandat är för att få in fler kärnor på en mindre yta och drastiskt minska värmeutvecklingen för samma flerkärning prestanda.

Det var ett högst satiriskt inlägg men tack ändå

Edit*
...och ändå inte eftersom AMD tycks ha gjort exakt det med Zen 4C-kärnorna som ev. Trillar ner från Epyc Bergamo...
(Dvs - E-kärnor fast utan nackdelen av att vara just E-kärnor)

Visa signatur

Krusidullen är stulen

Permalänk
Datavetare
Skrivet av SuperSverker:

Det var ett högst satiriskt inlägg men tack ändå

Edit*
...och ändå inte eftersom AMD tycks ha gjort exakt det med Zen 4C-kärnorna som ev. Trillar ner från Epyc Bergamo...
(Dvs - E-kärnor fast utan nackdelen av att vara just E-kärnor)

Intel och AMD sätt att angripa problemet har lite olika avvägningar.

Fördelen med Zen 4 och Zen 4c är klart lägre FoU-kostnad då man bara behöver ta fram en mikroarkitektur.

Fördelen med separata mikroarkitekturer är väsentligt större skillnad i kretsyta. Zen 4c är ~35 % mindre jämfört med Zen 4, Gracemont är ~75 % mindre jämfört med Raptor Cove (Arm och Apple har liknande skillnader mellan sina "P-kärnor" och "E-kärnor").

I Intels fall tror jag det lite är deras räddning just nu. De ligger trots allt en hel nod efter AMD/TSMC. Utan deras E-kärnor hade de varit helt chanslös att matcha AMDs all-core prestanda.

Sedan: vad blir enklare bara för att man använder samma mikroarkitektur om man ändå behöver hantera att vissa kärnor är snabbar än andra? Det är exakt samma problemtik i båda fallen.

Visst är prestandaskillnaden större i Intels fall, en E-kärna presterar kanske runt hälften av en P-kärna (så E-kärnorna presterar runt dubbelt bra räknat per mm² kisel). AMD har inte sagt något om frekvensen i kommande desktop/mobil-kretsar med Zen 4c, tittar man på Epyc klockar de "vanliga" Zen 4 kärnorna ~30 % högre jämfört med Zen 4c kärnorna vilket då blir prestandadelta.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Intel var väldigt naiva att tro det skulle fungera i praktiken att ha en asymmetrisk CPU-design där inte alla kärnor har identisk ISA. Detta var den ursprungliga planen, men man gav upp rätt snabbt. Alla andra om använder sig av asymmetrisk CPU-design kör med identisk ISA på alla kärnor, det är svårt nog att få till det riktigt bra på OS-nivå.

Den lösning Intel gör framåt känns som långt vettigare: med AVX10 kan man använda fördelarna med AVX-512 (finns en del bra idéer kring hur man hanterar divergerande spår i SIMD-optimerad kod där), men utan att kräva 512 bitars register (som tar för mycket resurser för att vara realistiskt på en "small-core" design).

AVX10 är ett OK-ish plåster utan att helt designa om SIMD-instruktionerna för x86_64 och använda den SIMD-teknik som Arm använder med SVE/SVE2 (RISC-V gänget kommer göra något liknande för den ISA:n). "Rätt" sätt är att designa instruktionerna så att storleken på registren kan variera mellan CPUer, men själva programkoden ändras inte. På en "bredare" CPU tar saker bara färre varv och går snabbare.

Jag förstår inte riktigt varför det inte gick att lösa, lösningen som presenteras nedan låter enkel.

Citat:

If a thread running on an E Core tries to execute an AVX-512 instruction it will trap into the OS and it can reschedule it on a P-core taking note that it should never be scheduled back to an E-core. In the olden days, this was used to emulate the presence of an FPU coprocessor. Now it simply needs to move to another core. https://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/intel-linux/1376743-intel-releases-x86-simd-sort-v1-0-library-for-high-performance-avx-512-sorting?p=1376768#post1376768

Gillar tanken på asymmetriska kärnor, precis som på en arbetsplats anställer man inte folk som är medelmåttor på allt, och alla gör alla arbetsuppgifter. Utan har specialiserade resurser som arbetar med sina grejer. Idag kanske behovet av MMX inte är så stort t ex.

Visa signatur

How do 'Do Not Walk on the Grass' signs get there ?

Permalänk
Datavetare
Skrivet av Dyluck:

Jag förstår inte riktigt varför det inte gick att lösa, lösningen som presenteras nedan låter enkel.

Gillar tanken på asymmetriska kärnor, precis som på en arbetsplats anställer man inte folk som är medelmåttor på allt, och alla gör alla arbetsuppgifter. Utan har specialiserade resurser som arbetar med sina grejer. Idag kanske behovet av MMX inte är så stort t ex.

Som jag förstår det var det exakt så Intel tänkt lösa det hela. Men de hade inte riktigt tänkt igenom vad det betyder...

En sak framförallt Intel är bra på är att skriva programvara/bibliotek som agerar lite olika beroende på hur de femtielva "feature-flaggorna" som finns i x86 är satta. Även väldigt grundläggande bibliotek som libc utnyttjar detta. Om ett sådan fundamentalt bibliotek som libc ser AVX-512 betyder det i praktiken att inget kommer köra på kärnor som saknar detta.

Samma problem uppstår även i JIT:ade tekniker. Om det råkar köra på en kärna som har någon viss feature andra kärnor saker finns risken/chansen att den utnyttjar finessen -> övriga kärnor kan inte används.

Går säkert hitta något specialfall där det ändå är en bra idé, men det vore rätt uselt för majoriteten av fallen.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Glädjespridare
Skrivet av friArsenik:

Är det någon som vet om det finns en liknande "enkel-att-använda" program för AMD CPU?

Håll i hatten nu när jag+andra via sökmotorer bjuder på matnyttigt, dock av mer teknisk natur än efterfrågat (och först & främst för Linux) :

Avancerad sökning (DuckDuckGo)

Bland sökord & -resultat där så har det vanligaste & kanske enklaste sättet varit kernel-parametern "isolcpus" ("isolcpuset" nyare rekommendation?), medan "taskset" istället används lite närsomhelst efter boot (i scripts/shell).

Oavsett OS så leder sådana kernel-parametrar till "global" påverkan, dvs. det undviker användandet av angivna cores/CPU's, som om de vore avstängda eller "förbjudna".

För övrigt gällande AMD & Linux rekommenderas "amdctl" starkt (öppen källkod @ GitHub) att lattja med, vare sig det ska fipplas med undervoltning eller överklockning och farligare övervoltning, m.m.
Jag har för mig att man kan justera frekvenser & spänning för olika "P-states", så ex.vis lägsta &/ högsta använder lägre/högre frekvens och spänning än fabriksinställningar från AMD.
VARNING dock för att fräsa processorn pga. oaktsamhet/okunskap/klantighet! ⚠️

För Windows :

Jag tror det har liknande kernel-parameter också (debug-syfte egentligen), tillräcklig dokumentation ska finnas men jag överlämnar efterforskning till dig &/ andra.

Men precis som i Linux kan "pinning of processes to specific cores/CPU's" göras inne i OS:et, och scripts användas för att uppnå pseudo-beständighet över omstarter.
I GUI-miljö är det väl "Set affinity" (svenska?) manuellt i Processhanteraren som gäller, i skript/PowerShell med anrop till något API ska gå också.

Jag har sett andra nämna och mer/mindre rekommendera "Process Lasso" här för smidighet, men är oinsatt själv.
Men kolla på det, låter träffsäkert.

Möjligen finns fler utilities för Windows från tredjepart som förenklar (som jag uppfattade "Process Lasso" gör), med GUI eller shell commands och med profiler för beständighet etc.

Testa med lämpliga sökord på lämpliga & hyfsat renommerade SourceForge, eller valfri mindre nischad sökmotor... ex.vis "(cpu or core) and isolat*". 👍

Permalänk
Medlem

bara p-cores thank u very much, även om de lyckas göra så rätt arbete går till rätt kärnor så kommer ju ändå kraft gå till spillo genom att bestämma/se till att de går till just rätt kärnor... nej tack..

kör alltid med e-kärnorna av och allt annat tunat, funkar bäst enligt mina tester. och faktiskt tvärtemot vissa techtubers och deras siffror, dock så verkar även de prestera bäst prestanda med bara p-kärnor, titta bara på ex derbauer senaste cpu test.

Visa signatur

12700k@/7200c34@7800/msi z790 itx