DOMANDA Impostare Affinità CPU permanente Win10

Pubblicità

XEWO

Nuovo Utente
Messaggi
43
Reazioni
9
Punteggio
32
Salve a tutti, come da titolo vorrei impostare un'affinità permanente su OBS .. Facendo vari test mi sono reso conto che eliminando l'utilizzo dei primi 3 core 6 thread faccio streaming come se il carico dell'encoding fosse separato su un'altra CPU ... Lo posso fare manualmente ma ogni tanto lo dimentico, ecco perchè chiedo a voi una soluzione definitiva :)
Righe di comando ecc ecc ci capisco poco quindi se avete una soluzione chiedo venia, siate pazienti.
Software vari preferisco non metterli.

Il mio setup:
Ryzen 3950x
Asus 2080ti
Asus Prime x570 PRO
32 gb ram 3600mhz c18
(driver tutti aggiornati BIOS e Chipset)

PBO e Fmax Disabilitati, probabilmente ho perso la silicon lottery e se attivo queste funzioni le frequenze girano più basse causa temperatura, nonostante il Costum loop
Cinebench r23 (senza PBO): all core 3.925 Ghz, temp max 57 gradi ... Quando gioco e faccio streaming x264 arrivo tranquillamente a 75 gradi stabili, con chiaramente drop di FPS (causa utilizzo dei primi core al 100%, primo CCX arriva a 80 gradi, il secondo CCX neanche 60 gradi)
Disabilitando i primi 3 core 6 thread tengo tranquillamente i 240 fps, streaming 0.0% frame lag persi, temp max 68-70

Vi ringrazio a priori, attendo vostra risposta.
 
Ma avendo una 2080ti, usa il codec NVENC H.264 così da non pesare su cpu...

 
Ma avendo una 2080ti, usa il codec NVENC H.264 così da non pesare su cpu...

Si sò di avere il codec Nvenc ma spesso incappo nel frame lag, sopratutto con overlay animate ecc e in più la qualità è migliore con x264.. Nvenc lavora meglio di X264 a bassissimo Bitrate e con giochi che non sforano alti framerate.. avendo una CPU del genere Nvenc passa in secondo piano ... però il topic non è rivolto a quale encoding usare, io cerco una soluzione appunto su come creare un'affinità permanente, su un singolo programma per la CPU
 
Si avevo trovato qualcosa del genere ma non sono pratico di file Batch.. ho provato a farlo ma senza risultato, anche per il discorso dei 16 core 32 threads non capisco se mettere appuno la riga 000000 (primi 3core 6threads) e poi 1111111111111111111 ecc per tutti gli altri 26 threads ... purtroppo sono incapace su queste cose, ho bisogno che qualcuno me lo spieghi in modo piu specifico
 
Dopo che mi sono accorto che uno dei miei 4 core scaldava di più, mi son fatto un file .BAT che avvio MANUALMENTE dopo aver aperto tutti i programmi in modo che non usi il 4° core (solo per certi processi):

Codice:
PowerShell "get-process fahcontrol | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahclient | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcore_a7 | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcore_a8 | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcore_22 | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcorewrapper | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process Taskmgr | %% { $_.ProcessorAffinity=7 }"
pause

al posto di "fahcontrol" e successivi metti il nome del tuo processo.
il "7" a fine riga indica che usa solo i primi 3 core.
Nel tuo caso dovrai trovare il numero esadecimale adatto al tuo scopo. Per farlo puoi cercare sul web oppure vai a tentativi mettendo un valore e poi controlli sul task manager il relativo processo che affinità ha.
 
Ultima modifica:
Si avevo trovato qualcosa del genere ma non sono pratico di file Batch.. ho provato a farlo ma senza risultato, anche per il discorso dei 16 core 32 threads non capisco se mettere appuno la riga 000000 (primi 3core 6threads) e poi 1111111111111111111 ecc per tutti gli altri 26 threads ... purtroppo sono incapace su queste cose, ho bisogno che qualcuno me lo spieghi in modo piu specifico

Il numero del core continui a contarlo in esadecimale seguendo questo schema:
core 0 --> 000..001 --> 1
core 1 --> 000..010 --> 2
core 0+1 --> 000..011 --> 3
core 2 --> 000..100 --> 4
core 2+0 --> 000..101 --> 5
core 2+1 --> 000..110 --> 6
core 2+1+0 --> 000..111 --> 7
core 3 --> 000..1000 --> 8
core 3+0 --> 000..1001 --> 9
core 3+1 --> 000..1010 --> A
core 3+1+0 --> 000..1011 --> B
core 3+2 --> 000..1100 --> C
core 3+2+0 --> 000..1101 --> D
core 3+2+1 --> 000..1110 --> E
core 3+2+1+0 --> 000..1111 --> F
core 4 --> 000..10000 --> 10
core 4+0 --> 000..10001 --> 11
core 4+1 --> 000..10010 --> 12
core 4+1+0 --> 000..10011 --> 13
e via dicendo fino a core 31+tutti gli altri (visto che hai 32 core logici) che ti darà: FFFFFFFFF

Per creare il file batch puoi farlo dall'editor di testo salvando il file come .bat anziché .txt

Questa forse è fatta un po' più passo passo di guida: https://answers.microsoft.com/en-us...grunning/4b91b26b-b0a1-4d67-aa3c-4acebe3c52bc
 
Dopo che mi sono accorto che uno dei miei 4 core scaldava di più, mi son fatto un file .BAT che avvio MANUALMENTE dopo aver aperto tutti i programmi in modo che non usi il 4° core (solo per certi processi):

Codice:
PowerShell "get-process fahcontrol | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahclient | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcore_a7 | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcore_a8 | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcore_22 | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process fahcorewrapper | %% { $_.ProcessorAffinity=7 }"
PowerShell "get-process Taskmgr | %% { $_.ProcessorAffinity=7 }"
pause

al posto di "fahcontrol" e successivi metti il nome del tuo processo.
il "7" a fine riga indica che usa solo i primi 3 core.
Nel tuo caso dovrai trovare il numero esadecimale adatto al tuo scopo. Per farlo puoi cercare sul web oppure vai a tentativi mettendo un valore e poi controlli sul task manager il relativo processo che affinità ha
Intanto ti ringrazio per la pronta risposta, il discorso è che io NON voglio che Obs utilizzi i primi 3 core 6 threads.. Obs deve utilizzare dal CPU 6 fino a CPU 31, come si impostano quelle righe per far partire Obs ESCLUDENDO l'utilizzo di CPU 0-5?
--- i due messaggi sono stati uniti ---
Il numero del core continui a contarlo in esadecimale seguendo questo schema:
core 0 --> 000..001 --> 1
core 1 --> 000..010 --> 2
core 0+1 --> 000..011 --> 3
core 2 --> 000..100 --> 4
core 2+0 --> 000..101 --> 5
core 2+1 --> 000..110 --> 6
core 2+1+0 --> 000..111 --> 7
core 3 --> 000..1000 --> 8
core 3+0 --> 000..1001 --> 9
core 3+1 --> 000..1010 --> A
core 3+1+0 --> 000..1011 --> B
core 3+2 --> 000..1100 --> C
core 3+2+0 --> 000..1101 --> D
core 3+2+1 --> 000..1110 --> E
core 3+2+1+0 --> 000..1111 --> F
core 4 --> 000..10000 --> 10
core 4+0 --> 000..10001 --> 11
core 4+1 --> 000..10010 --> 12
core 4+1+0 --> 000..10011 --> 13
e via dicendo fino a core 31+tutti gli altri (visto che hai 32 core logici) che ti darà: FFFFFFFFF

Per creare il file batch puoi farlo dall'editor di testo salvando il file come .bat anziché .txt

Questa forse è fatta un po' più passo passo di guida: https://answers.microsoft.com/en-us...grunning/4b91b26b-b0a1-4d67-aa3c-4acebe3c52bc
Grazie mille per lo schema ... mi sembra di tornare ai tempi della scuola con le Porte logiche xD ... Quindi FFFFFFFFF sarebbe il risultato in HEX che imposterò e di conseguenza OBS NON utilizzerà da CPU 0 a CPU 5? ... comunque ti ringrazio del tempo dedicatomi, leggo la guida e se non mi risulterà troppo complicato proverò e vi aggiornerò :)
 
Ultima modifica:
Grazie mille per lo schema ... mi sembra di tornare ai tempi della scuola con le Porte logiche xD ... Quindi FFFFFFFFF sarebbe il risultato in HEX che imposterò e di conseguenza OBS NON utilizzerà da CPU 0 a CPU 5? ... comunque ti ringrazio del tempo dedicatomi, leggo la guida e se non mi risulterà troppo complicato proverò e vi aggiornerò :)
No, quello sarebbe per utilizzo all-core
Tutti tranne i primi 6 viene questo:
1111 1111 1111 1111 1111 1111 1100 0000 ---> FFFFFFC0
 
Il numero del core continui a contarlo in esadecimale seguendo questo schema:
core 0 --> 000..001 --> 1
core 1 --> 000..010 --> 2
core 0+1 --> 000..011 --> 3
core 2 --> 000..100 --> 4
core 2+0 --> 000..101 --> 5
core 2+1 --> 000..110 --> 6
core 2+1+0 --> 000..111 --> 7
core 3 --> 000..1000 --> 8
core 3+0 --> 000..1001 --> 9
core 3+1 --> 000..1010 --> A
core 3+1+0 --> 000..1011 --> B
core 3+2 --> 000..1100 --> C
core 3+2+0 --> 000..1101 --> D
core 3+2+1 --> 000..1110 --> E
core 3+2+1+0 --> 000..1111 --> F
core 4 --> 000..10000 --> 10
core 4+0 --> 000..10001 --> 11
core 4+1 --> 000..10010 --> 12
core 4+1+0 --> 000..10011 --> 13
e via dicendo fino a core 31+tutti gli altri (visto che hai 32 core logici) che ti darà: FFFFFFFFF

Per creare il file batch puoi farlo dall'editor di testo salvando il file come .bat anziché .txt

Questa forse è fatta un po' più passo passo di guida: https://answers.microsoft.com/en-us...grunning/4b91b26b-b0a1-4d67-aa3c-4acebe3c52bc
RISOLTO!! Grazie mille ragazzi ... sembrava una cosa complessa invece il thread da tu citato lo rende facilissimo ... Grazie mille!!
 
Pubblicità
Pubblicità
Indietro
Top