Comment définir l'affinité du processeur sur un fichier exécutable sous Windows XP?
J'ai un quad core système avec une application tierce partie que de temps en temps tours de plusieurs processus (toujours le même exécutable, mais plusieurs instances de celui-ci) et prend 100% de temps CPU. J'ai aussi un couple de web services en cours d'exécution sur la même case (IIS et troisième partie).
Le problème avec toutes les carottes d'être occupé, c'est qu'il fait de cette troisième partie de du serveur web de délai d'attente (IIS fonctionne bien si, juste plus lent que d'habitude). Je n'ai pas de contrôle sur le serveur web tiers, c'est une partie de la plus grande du produit et doit être opérationnel. Donc, j'ai essayé de jouer avec l'affinité du processeur (par SysInternals Process Explorer) et de limiter ces satanés processus à 3 cœurs de 4 et de consacrer la 4ème de base pour le serveur web tiers, et il semble fonctionner assez bien.
Le problème c'est qu'il ne définit affinité sur les processus en cours d'exécution et non pas sur l'exécutable niveau, donc après ces processus de finition et plus tard réapparaître comme un nouveau processus, il est tout de même encore une fois - ils prendre tous les 4 cœurs. Donc, j'ai cherché sur google à propos de ce ImageCfg.exe utilitaire de Microsoft mais je ne peux pas le trouver sur le site de Microsoft pour télécharger et je vois que certaines personnes ont essayé de le faire et maintenant se plaignent que ça ne fonctionne pas vraiment.
Est-il un moyen de bâton de l'affinité de l'exécutable?
Cependant, le problème est toujours intéressant parce que le logiciel ne peut pas avoir cette fonctionnalité. Et il y a certainement d'autres logiciels qui n'est pas...il serait ennuyeux d'avoir à appeler le vendeur de tous les temps.
OriginalL'auteur bychkov | 2009-03-09
Vous devez vous connecter pour publier un commentaire.
Une caractéristique de Process Lasso est de définir l'affinité d'un processus à chaque fois que le processus est lancé.
OriginalL'auteur Jordan Miner
http://waynes-world-it.blogspot.com/2009/06/processor-affinity-on-windows-server.html
PowerShell
Utiliser PowerShell pour définir l'affinité du processeur pour un ou plusieurs processus en cours d'exécution. Il y a un exemple de script ci-dessous, le réglage du processeur masque de calc.exe les 4 premiers processeurs. J'aime cette méthode, car le script est simple, il serait facile de planifier, de travaux sur les architectures x86 et x64, prend en charge plusieurs processus du même nom et, au moins partiellement, car il met en lumière juste comment facile de l'administration avec PowerShell est.
Notez que si vous utilisez factorielle d'un grand nombre avec calc.exe (n!) vous aurez generate100% de CPU qui peut être utile pour les tests. Le masque ci-dessous est 0xf = 1111 – un masque permettant d'utiliser uniquement les quatre premiers processeurs:
OriginalL'auteur nex2hex
Vous pouvez regarder le
/AFFINITY
paramètrestart
.De l'aide:
Que l'affinité du processeur Windows est un masque de bits, vous pouvez avoir besoin de l'expérimentation, mais je suppose que
1
être le premier noyau, donc7
d'être la première à trois cœurs etF
d'être tous les quatre. Ou8
pour le quatrième.Vous pouvez alors remplacer les tâches planifiées ou des raccourcis avec un appel à
start
avec les paramètres appropriés./affinity
option.OriginalL'auteur Joey
Vous pouvez utiliser le seul proc affinité application de la cale à la force d'un processeur sur l'exécutable niveau, ce qui va forcer le processus sur un seul core.
Cet article, http://msdn.microsoft.com/en-us/library/bb173458.aspx, a un paragraphe sur l'activation de la cale vers le bas.
OriginalL'auteur Michael
Utilisation SetProcessAffinityMask(). Et méfiez-vous, L'Affinité du processeur est héréditaire!
Vous aurez besoin d'utiliser ImageFileExecutionOptions, spécifiquement le "Debugger" option, et écrire votre propre petit exécutable qui appelle SetProcessAffinityMask() sur lui-même, et ensuite génère un nouveau processus, qui est celui que vous souhaitez définir l'affinité pour. Le définir comme le débogueur, et vous avez terminé.
OriginalL'auteur i_am_jorf
L'ImageCfg.exe l'utilitaire ne fonctionne pas. J'ai simplement utilisé pour résoudre un problème de société aujourd'hui. Il est disponible à partir de http://www.robpol86.com/pages/imagecfg.php
Imagecfg -un 0x3 xxx.exe
limites de l' .exe pour CPU0 et CPU1, par exemple.
OriginalL'auteur
Clairement ce fil est obsolète, mais im ajoutant un commentaire de toute façon, juste au cas où quelqu'un googles sur ce sujet (comme je l'ai fait)
La commande de démarrage peut être utilisé pour définir le démarrage de la priorité d'un processus.
Par exemple.
start "my path\my process" /LOW
priorité basse.Permis de priorité des commutateurs
LOW, NORMAL, HIGH, REALTIME, ABOVENORMAL, BELOWNORMAL
Pourrait être appelé à partir d'un fichier batch par exemple.
OriginalL'auteur patrik
Vous pouvez essayer le réglage de la priorité du processus, de sorte que, même si elle décide d'utiliser 100% du CPU, quelque chose qui est de plus haute priorité peut prendre le relais quand il le faut.
De faire cela automatiquement (plutôt que d'avoir à jouer dans le gestionnaire de tâche) est quelque chose que j'ai demandé tout à l'heure.
OriginalL'auteur