Commande gestion (affinité) des cores par appli [Powershell] - Shell/Batch - Programmation
Marsh Posté le 06-08-2014 à 11:02:43
Bon, j'ai la base de la solution.
Je remercie le développeur de Bill2's Process Manager de m'avoir donné la piste.
La commande existe a travers Powershell !
Tout est ici : http://stackoverflow.com/questions [...] ows-script
Reste à faire les règles avec les commandes adaptés pour Speedfan
Marsh Posté le 06-08-2014 à 17:07:43
Alors, j'ai une nouvelle question, je continue :
La fonction marche nickel pour faire ce genre de chose :
(modifié notepad++ pour utiliser les cores 1 - 3 - 4)
$Process = Get-Process notepad++; $Process.ProcessorAffinity=13
Par contre, si j'ai 2 processus notepad++, et bien la commande ne fonctionne plus...
Comment cibler tous les processus notepad++ en cours ?
(je prends notepad++ comme exemple, mais ca sera 3dsmax dans mon cas concret)
Marsh Posté le 06-08-2014 à 19:06:05
Je continue, par rapport à mon post précédent
J'ai trouvé une commande Powershell permettant de cibler un processus et de modifier ses cores cpu affectés.
Code :
|
13 étant 0001101 en binaire, donc les cores 1 - 3 - 4 sont actifs pour 3dsmax.
Jusque là, ca va.
Mes questions
- Par rapport à mon post précédent, la commande Powershell ne fonctionne que si il n'y a qu'un seul 3dsmax de lancé. Si j'ai 2 processus 3dsmax, ca ne marche plus. Il me dit que le paramètre ProcessorAffinity n'est pas trouvable.
Comment cibler tous les processus du même nom ?
- Plus complexe : Si je veux gérer les cores indépendamment, selon les T° que Speedfan m'envoi, il va me falloir interroger quels sont les cores actifs (avec Get-Process 3dsmax | Select-Object ProcessorAffinity).
Puis récupérer la valeur décimale, la convertir en binaire pour identifier les cores, stocker les états des cores pour ne changer que le core qui serai trop chaud.
Ensuite, manip inverse, reprendre le binaire en décimale, et l'attribuer au processus 3dsmax.
Bon, je sais pas si c'est très clair. Concrètement, lorsqu'un core devient trop chaud, il se désactive du processus sans modifier l'état des autres cores.
Lorsque que le core deviendra plus froid, j'envoi une autre commande pour le réactiver.
Comment stocker la valeur du get-process dans une variable ?
Comment mathématiquement gérer ma valeur d'affinité pour identifier les cores ?
Voilà, est-ce que quelqu'un pourrai m'orienter un peu.
Marsh Posté le 08-08-2014 à 14:45:56
Personne ?
M'en fou, j'ai réussi tout seul
Sinon, après avoir trainé sur le net pour récupérer des bouts de fonction, et bricolé plusieurs heures, je réussi a faire ce que je voulais !
Bon, c'est surement très sale et mal foutu, mais ca marche
Voici à quoi ca ressemble, sachant que j'ai un fichier .ps1 par action sur les cores.
Ici je coupe le core0.
Code :
|
Après tout ca est lancé depuis un .bat avec un compte à rebours de 60s puis ca réactive le core0
Code :
|
Et la même chose avec les autres core du cpu.
Le tout est déclenché par rapport à la T° du CPU depuis SpeedFan
Marsh Posté le 04-08-2014 à 19:42:04
Salut à tous,
Etant infographiste 3D, je suis à la recherche d'une ligne de commande (pour un .bat) / d'un soft qui serai capable de pointer une application déjà lancée et de gérer ses affinité CPU (comme Bill2's Process Manager que j'utilise déjà, mais capable de recevoir des lignes de commande) pour servir de "fusible" quand les T° sont trop haute pendant les phases de rendus.
Pour le moment, j'ai configuré SpeedFan qui m’envoie des mails espacés de 10mn à chaque fois qu'un core dépasse 75°c. C'est bien, mais en pleine nuit, j'ai juste la flemme d'allumer un teamviewer pour calmer le cpu en coupant quelques core.
L'idée sera de définir sur Speedfan des régles du type :
" Si la T° CPU > 72°, alors couper 1 core sur toto.exe"
" Si la T° CPU > 74°, alors couper 2 core sur toto.exe"
" Si la T° CPU < 70°, allumé tous les cores sur toto.exe"
En cas de forte température et de réduire la charge du CPU pour le maintenir dans des T° raisonnable.
Je connais la commande "start toto.exe /affinity 0xx" qui marche pour le lancement, mais rien d'équivalent quand le processus est déjà en route.
(PS Modo, je sais pas si c'était mieux ici ou dans la section Windows)
Message édité par -Riphur- le 06-08-2014 à 11:40:57