Contextelimitant le nombre de processeurs utilisés par un processus
Je refactoring actuellement une application .NET héritée. L'application effectue des calculs mathématiques complexes sur des périodes relativement longues (jusqu'à quelques heures), au cours desquelles se produisent des périodes d'utilisation presque continue du processeur sur plusieurs threads.
Chaque utilisateur dispose d'une machine à 8 cœurs dédiée exclusivement à l'exécution d'une instance de l'application (ils utilisent d'autres machines pour exécuter toutes les autres applications). L'application est exécutée à l'aide d'un compte système partagé qui permet au personnel de support, le cas échéant, de se connecter à la machine via Remote Desktop et de surveiller l'application (cela arrive assez souvent). Lorsque le processus d'application démarre, il définit son propre affinité de processeur de telle sorte que le processus est autorisé à utiliser tous les processeurs, à l'exception d'un seul. Par exemple. sur une machine à 8 processeurs, l'affinité est fixée à 0x007F (01111111) ce qui limite l'application aux processeurs 1 à 7 et l'empêche d'exécuter des threads sur le processeur 8. Le processeur exclu est toujours celui représenté par le bit le plus haut dans l'affinité valeur. Cela s'explique par le fait que l'exclusion d'un processeur permet à la machine de rester plus réactive lors d'une session Remote Desktop et lors de l'utilisation de tout autre outil de surveillance ad hoc qui peut être nécessaire de temps en temps (Baretail, Process Explorer, etc.).
Question
Est-ce susceptible de donner beaucoup d'avantages compte tenu du coût des ressources de l'un CPU à l'application? Évidemment, je peux effectuer quelques tests afin de recueillir des preuves empiriques, mais la disponibilité de la machine d'essai est limitée et le comportement de l'application a de nombreuses dépendances externes, ce qui signifie que le temps d'utilisation intensive du processeur est très difficile à déterminer. Le temps et les ressources nécessaires pour l'évaluer correctement risquent d'être loin d'être négligeables. Pour cette raison, je cherche des raisons théoriques pour ou contre cela. Pour moi, cela semble être une mauvaise idée puisque l'application est empêchée d'utiliser les ressources d'un processeur entier, qui ne sont pas susceptibles d'être entièrement consommées par d'autres processus. Je voudrais supprimer la limitation du processeur et permettre à Windows de gérer l'allocation du processeur sans restrictions. Cependant, je dois être en mesure de présenter quelques arguments convaincants afin de vendre ce changement si, en effet, mes soupçons sont corrects.
Mon expérience de cette situation est que vous ne devriez pas limiter votre application de calcul intensif. Votre système d'exploitation doit être parfaitement réactif même avec le processeur à 100% d'utilisation car le thread de premier plan est prioritaire. –