R E S O C O N T O D I S C U S S I O N E |
Roger |
Inserito il - 13 Jan 2009 : 14:06:40 Sempre per la serie "Smanettoni a oltranza" ve ne racconto un'altra bella, dedicata agli smanettoni con il dual core. Non mi stupirei se anche questa tra breve la vedessimo discussa su qualche forum straniero come accaduto con il /3GB. Non vi aspettate da questa modifica miglioramenti mostruosi però la cosa è quantomeno interessante dal punto di vista informatico. Si tratta di un intervento leggermente più macchinoso di quello del /3GB ma molto meno delicato, nel senso che si agisce solo sull'eseguibile di FS e quindi basta un backup di fs.exe e non si corre il benchè minimo rischio. Male che vada si perdono 15 minuti.
Come abbiamo fatto per l'utilizzo della memoria anche qui è necessaria una premessa per capire di cosa stiamo parlando: credo sappiate tutti che sui sistemi multi core, FS2004 (non so FSX) non è in grado di sfruttare più CPU, ma utilizza solo uno dei core disponibili (in genere il primo) caricandolo al massimo. Ad esempio se abbiamo un sistema dual core con core0 e core1, FS potrà sfruttare solo il core0 sfruttando le potenzialità della CPU al massimo al 50%. Smanettando qua e la sono riuscito a far "vedere" a FS9 entrambi i core distribuendo meglio il carico di lavoro sulla cpu. Il carico totale utilizzato da FS difficilmente supera comunque il 60% ma sicuramente in questo modo FS fa un utilizzo più razionale e performante delle CPU molti core, e vi assicuro che per FS9 la CPU è importante, anche più della scheda video.
Veniamo quindi alla ricetta: Procurarsi un nuovo hack program che si chiama imagecfg http://www.robpol86.com/pages/imagecfg.php
1) copiare imagecfg.exe nella directory C:\Windows\system32
2) fare una copia di backup di FS9.exe
3) Aprire una shell di DOS: Start --> Programmi --> Accessori --> Prompt dei Comandi
4) da DOS digitare (occhio a copiare bene ) imagecfg -a 0x2 "D:\FS2004\FS9.exe"
Quello tra apici è ovviamente il mio percorso esatto per individuare FS, voi ovviamente dovete mettere il vostro. Se nel percorso non ci sono spazi potete omettere le virgolette, altrimenti mettetele.
A quel punto avrete una copia di fs9.exe che invece che il core0 utilizza il core1. Lo potete verificare osservando il task manager (CTRL+ALT+CANC) alla sezione "prestazioni". Vedrete che il grafico che si impenna (Cronologia utilizzo CPU) non sarà più quello di sinistra (core0) ma sarà quello di destra (core1). Fin qua nulla di strano (o quasi)... ma adesso viene il bello... se andiamo nella sez. processi del task manager e clicchiamo con il tasto destro su FS9.EXE , scegliamo imposta affinità e riabilitiamo anche la CPU0, a quel punto magicamente FS9 sembra in grado di vedere entrambe le CPU (o entrambi i core che dir si voglia), quest'ultima operazione va fatta ogni volta che si lancia FS. Non chiedetemi il perchè però almeno sul mio pc funziona alla grande. Da provare anche su sistemi quad core.
Fatto questo ho riabilitato l'LLA con il LaTidoo (vedi post apposito) e quindi ho caricato su FS una situazione che richiede una quantità di risorse che non ha eguali anche nei più "cattivi" stress-test disponibili in rete. In pratica ho fatto un decollo molto prolungato dall'aeroporto di Amsterdam (che sovraccarica la memoria all'inverosimile) con il Fokker100, con UTE e con annessi e connessi. In pratica è una situazione che tradotta in linguaggio macchina suona più o meno come: "spremime i bal come un limun" Come potete vedere dall'immagine, dopo circa due ore di volo in condizioni estreme, il paging dal Task manager ha superato i 2,80 giga. Oltre non ho osato andare, ma è chiaro che senza l'LLA attivato, FS avrebbe collassato per OOM almeno un'ora prima. Inoltre potete osservare dai grafici della cronologia cpu che "magicamente" l'utilizzo della CPU è distribuito su entrambi i core, con punte che sono arrivate fino all'80% dell'utilizzo totale (e non andava nient'altro).
Usciti da FS per liberare le risorse ci vuole almeno 30 secondi... e guardate i grafici come precipitano....
Infine vi copio le istruzioni in inglese di imagecfg
To permanently set the processor affinity for your 32-bit executable, open a CMD prompt and type:
imagecfg -a 0xn <Drive:>\Path\yourprogram.exe
where 0xn is the affinity mask. The mask constrains your application to a specific CPU, from 0 - 31, where:
CPU MASK 0 0x1 1 0x2 2 0x4 3 0x8 4 0x10 5 0x20 6 0x40 7 0x80 8 0x100 etc To set the affinity for "c:\util\Country Codes.exe" to processor 1, I typed: imagecfg -a 0x2 "c:\util\Country Codes.exe"
and received the following response:
c:\util\Country Codes.exe contains no configuration information c:\util\Country Codes.exe contains a Subsystem Version of 4.0 c:\util\Country Codes.exe updated with the following configuration information: Process Affinity Mask: 00000002 When I launch Country Codes.exe, its' affinity is set to CPU 1.
Buon divertimento a tutti gli smanettoni multi core....
|
20 U L T I M E R I S P O S T E (Le più nuove sono all' inizio) |
Roger |
Inserito il - 28 Mar 2016 : 08:40:03 E' un po' che non ho XP quindi non ricordo molto, cmq imagecfg.exe deve essere nella cartella C:\Windows\system32 e forse devi togliere K:\ davanti oppure mettere K:\Windows\system32\imagecfg.exe se il disco principale è K cmq semplicemente così dovrebbe funzionare imagecfg.exe -a 0x0f "K:\programmi\microsoft games\flight simulator 9\FS9.exe"
|
adribar |
Inserito il - 28 Mar 2016 : 00:33:55 Ciao ROGER. Puoi darmi un aiutino in merito al mio post? Grazie. |
adribar |
Inserito il - 25 Mar 2016 : 23:38:51 Salve. Ho una scheda video Intel Core2 Quad. Sto procedendo a modificare l'uso dei core da parte di fs9 sul mio WindowsXP. Ho copiato imagecfg.exxe nella cartella system32. Ho digitato da DOS la seguente stringa: K:\imagecfg.exe -a 0x0f "K:\programmi\microsoft games\flight simulator 9\FS9.exe". Digitato il tasto "invio" (devo?)appare la seguente scritta: " K:\imagecfg.exe non è riconosciuto come comando interno o esterno. Ho sbagliato qualcosa? Grazie. |
Anto |
Inserito il - 09 Feb 2016 : 21:29:40 Funziona anche con Fsx Accelleration installato su un sistema operativo a 64bit win7 Nessuna anomalia ma solo miglioramenti Ciao |
Shark |
Inserito il - 06 Feb 2016 : 21:45:17 Allora, sono riuscito in parte a risolvere il problema che risiedeva nel nome di una cartella. Da windows vedevo la cartella "Programmi (x86)" che utilizzavo per dare il percorso a imagecfg. In realtà dal prompt di dos ho notato che la cartella viene denominata come Program Files (x86); utilizzando questo accorgimento sembra che il comando imagecfg faccia il suo lavoro. Avviando FS e verificando l'affinità, trovo infatti che sono selezionate tutte e 4 le CPU. Guardando i grafici in alto a destra del Task Manager, vedo che la percentuale complessiva a cui lavorano sono 25-30%, però vedo anche che la prima lavora quasi sempre al massimo, mentre le altre sono praticamente a zero.
Sto sbagliando qualcosa? Qualcuno mi dare un consiglio? Un saluto |
Shark |
Inserito il - 05 Feb 2016 : 22:20:15 Ciao a tutti, riesumo questo vecchio post perchè ho provato a seguire la procedura descritta nei post precedenti ma senza riuscire a metterla in pratica. Mi spiego meglio. Come sistema operativo ho Win 7 64 bit. Come indicato nei post precedenti ho inserito imagecfg.exe nella directory sysWOW64. Quando però eseguo il seguente comando C:\imagecfg.exe -a 0x0f "C:\Programmi (x86)\Microsoft Games\Flight Simulator 9\fs9.exe" ottengo il seguente messaggio: "imagecfg" non è riconosciuto come comando comando interno o esterno, un programma eseguibile o un file batch.
Ho provato allora a mettere il file imagecfg.exe nella cartella System32. Digitando la stessa stringa di comando di sopra ottengo ora questo messaggio: IMAGECFG: unable to map and load C:\Programmi (x86)\Microsoft Games\Flight Simulator 9\fs9.exe
C'è qualcuno che mi sa dare qualche informazione per risolvere? Grazie |
MED1434 |
Inserito il - 18 Nov 2012 : 17:22:26 Allora avevo azzeccato la mossa giusta
Grazie
Paolo |
germano77 |
Inserito il - 18 Nov 2012 : 00:09:29 Allora tu hai un dual core con hyper treading attivo, quindi virtualmente hai 4 core e 2 fisici. Quindi devi attivare il tutto per 4 core, non per due. La stringa da isnerire per i 4 core e fare in modo che all'avvio del simulatore l'affinità si imposti automaticamente su tutti e 4, è la seguente: 0x0f 0f sta per 4 core La stringa completa è la seguente, ovviamente cambiano le path. E:\imagecfg.exe -a 0x0f "E:\programmi\microsoft games\flight simulator 9\FS9.exe"
Ciao |
MED1434 |
Inserito il - 17 Nov 2012 : 19:33:26 quote: Originally posted by germano77
Ciao ragazzi, riprendo questo topic del buon Roger. Ricordate che eravamo costretti ogni volta a metetr ele affinità su tutti i processori. Ora non più. Per far ciò occorre fare la somma di tutti i core e convertirla in esadecimale e di conseguenza passarla al programma. Questi solo i valori dei core in decimale
1 = CPU0 2 = CPU1 4 = CPU2 8 = CPU3 16 = CPU4 32 = CPU5 64 = CPU6 128 = CPU7
Esempio, se ho un quad core, e volgio che tutte le affinità si attivano all'avvio del simualtore basta che faccio la somma del core0 + core1 + core2 + core3, di conseguenza 1 + 2 + 4 + 8=15 che convertito in esadecimale è uguale a "0f"
Quindi al programma passerò la stringa cosi:
E:\imagecfg.exe -a 0x0f "E:\programmi\microsoft games\flight simulator 9\FS9.exe"
Saluti
Ciao Germano, avendo invece un dual-core (I5 650 @3,20 ghz con ram 6gb - win7 64 bit) qual'è la stringa da inserire per attivare l'affinità a tutti i core automaticamente? Ieri sera ho provato a usare quella postata da te e sembrerebbe funzionare, ma non sono sicuro di aver fatto la cosa giusta. Inolte non capisco come mai avendo un dual-core, in task manager vedo 4 cpu come da figura,
anche se poi andando in monitoraggio risorse, due sembrerebbero in parcheggio.
Grazie
Paolo |
Roger |
Inserito il - 07 Jun 2012 : 08:00:47 Vero Germano! Aggiungo anche che per ottenere lo stesso risultato su FSX è sufficiente aggiungere nel fsx.cfg l'istruzione: [JOBSCHEDULER] AffinityMask=128
Per l'ottimizzazione farei anche un altro discorso: per chi ha l'I7 con l'Hyper-Threading attivato da BIOS (e certamente lo è), la macchina virtualmente ha 8 core. Il migliore risultato l'ho ottenuto con AffinityMask=254 (1 1 1 1 1 1 1 0 in binario) che in pratica lascia libero solo il core 0 ed utilizza tutti gli altri. La differenza di prestazioni è veramente notevole, e la cosa sorprendente è che verrebbe da aspettarsi che la CPU scaldi di più, lavorando di più... e invece scalda di meno, probabilmente perchè il carico di lavoro è più distribuito. Se invece non si usa l'HT (ma sarebbe assurdo non usarlo) oppure si ha l'I5, il numero magico è 14. |
germano77 |
Inserito il - 06 Jun 2012 : 19:44:02 Ciao ragazzi, riprendo questo topic del buon Roger. Ricordate che eravamo costretti ogni volta a metetr ele affinità su tutti i processori. Ora non più. Per far ciò occorre fare la somma di tutti i core e convertirla in esadecimale e di conseguenza passarla al programma. Questi solo i valori dei core in decimale
1 = CPU0 2 = CPU1 4 = CPU2 8 = CPU3 16 = CPU4 32 = CPU5 64 = CPU6 128 = CPU7
Esempio, se ho un quad core, e volgio che tutte le affinità si attivano all'avvio del simualtore basta che faccio la somma del core0 + core1 + core2 + core3, di conseguenza 1 + 2 + 4 + 8=15 che convertito in esadecimale è uguale a "0f"
Quindi al programma passerò la stringa cosi:
E:\imagecfg.exe -a 0x0f "E:\programmi\microsoft games\flight simulator 9\FS9.exe"
Saluti |
Roger |
Inserito il - 19 May 2012 : 08:04:29 quote: Originally posted by MED291
Roger, Si' Funziona alla grande ma il file imagecfg.exe va copiato nella directory C:\WINDOWS\SysWOW64 anziche' in system32. La procedura poi e' esattamente la stessa.
Buoni voli ciao
Grazie mille nel pomeriggio provo....
|
MED291 |
Inserito il - 19 May 2012 : 04:01:19 Roger, Si' Funziona alla grande ma il file imagecfg.exe va copiato nella directory C:\WINDOWS\SysWOW64 anziche' in system32. La procedura poi e' esattamente la stessa.
Buoni voli ciao |
Roger |
Inserito il - 18 May 2012 : 19:47:14 Riesumo questo post.... qualcuno ha provato questa procedura su win 7 64 bit? Funziona?
|
MED084 |
Inserito il - 11 Jul 2010 : 23:37:37 quote: Originally posted by germano77
Quindi era come dicevo ieri, esegui come amministratore e vedrai che le affinità si mettono ? Se vuoi lanciare il task manager come amministratore , fai un collegamento sul desktop al file "taskmgr.exe" e poi tasto destro esegui come amministratore e vedrai che funziona alla grande.
Veramente tu dicevi di lanciare FS9 come amministratore, che, tra parentesi ti ripeto che veniva lanciato. Quello era un problema legato a taskmanager che non si riusciva a lanciare in automatico come amministratore ed adesso appena avrò un poco di tempo disponibile leggerò attentamente il link che ha postato Roger nel quale mi pare di aver capito da una lettura veloce, che il problema si possa risolvere. Ad ogni buon conto grazie infinite anche a te per l'aiuto e l'interessamento dimostrato. |
germano77 |
Inserito il - 11 Jul 2010 : 19:10:19 Quindi era come dicevo ieri, esegui come amministratore e vedrai che le affinità si mettono ? Se vuoi lanciare il task manager come amministratore , fai un collegamento sul desktop al file "taskmgr.exe" e poi tasto destro esegui come amministratore e vedrai che funziona alla grande. Nel collegamento scrivi: C:\Windows\System32\taskmgr.exe |
Roger |
Inserito il - 11 Jul 2010 : 16:23:29 Questo non lo so perchè come ti ho detto non conosco bene vista... però facendo una ricerca ho trovato questo... sembra proprio che possa risolvere il tuo problema http://www.winhelponline.com/blog/start-task-manager-elevated-default/
|
MED084 |
Inserito il - 11 Jul 2010 : 12:19:48 quote: Originally posted by Roger
Prova a vedere il nome utente dell'applicazione
come poi vedere dalla mia immagine quelli che hanno come nome utente roger riesco a modificarli, gli altri no. Quindi devi fare in modo che FS sia un processo che ha come proprietario il tuo utente
Ciao Roger, grazie infinite per il tuo intervento. Allora, ho verificato quanto dicevi ed effettivamente io risulto proprietario dell'applicazione ma nonostante tutto non riesco ad accedere. Per meglio dire: lancio FS9 come amministratore. Poi lancio taskmanager con (ALT-CTRL-CANC) e verifico che ci sia il mio nome accanto a FS9.exe. A questo punto clicco con il destro seleziono le affinità e non mi permette di entrare. Ho fatto un'altra verifica lanciando taskmanager cliccando sopra l'icona con il destro e scegliendo esegui come amministratore. Ebbene così fecendo sono riuscito alla fine ad impostare le affinità. A questo punto rimane il mistero del taskmanager che lanciato con il comando (ALT-CTRL-CANC) non si lancia come amministratore e la cosa mi risulta molto strana poichè io accedo al PC come amministratore con tanto di password ed essendo quello un processo di windows dovrebbe essere lanciato come amministratore, o sbaglio? Sapresti darmi altre delucidazioni per far partire taskmanager sempre come amministratore? Grazie |
Roger |
Inserito il - 11 Jul 2010 : 11:46:09 Prova a vedere il nome utente dell'applicazione
come poi vedere dalla mia immagine quelli che hanno come nome utente roger riesco a modificarli, gli altri no. Quindi devi fare in modo che FS sia un processo che ha come proprietario il tuo utente
|
MED084 |
Inserito il - 10 Jul 2010 : 22:13:36 quote: Originally posted by germano77
Bisognerebbe sentire qualcuno che ha vista.
Grazie comunque per l'aiuto. spero tanto che qualcuno tipo Roger possa darmi una mano. So che è un mago con queste cose e quindi spero vivamente che anche lui abbia letto il post e mi possa aiutare. Scusami per il disturbo germano e grazie ancora. |