2014-06-09 1 views
0

Je souhaite définir l'affinité CPU de plusieurs threads particuliers. Toutes les références que j'ai trouvées jusqu'ici traitent de la définition de l'affinité cpu d'un processus (PID) mais pas d'un thread. Existe-t-il un moyen d'accomplir cela tout en utilisant .Net Runspaces? Ou est-ce que j'essaie de faire quelque chose d'impossible?Powershell 4 - Définition de l'affinité du processeur pour les espaces d'exécution et les threads multiples

L'idée de base est la suivante: J'ai une boîte de 20 cœurs et j'aimerais que les fils soient répartis uniformément entre les cœurs. Sinon, ils finissent tous par battre sur un seul noyau.

Merci!

+0

20 cœurs! Tu crains! ;-) Comment faites-vous que les threads supplémentaires soient tournés? Utilisez-vous RunspacePool ou autre chose? –

+0

Oui, c'est une grosse boîte :-) Oui, j'utilise des pools d'espaces. – Jeremy

Répondre

1

Je ne suis pas sûr d'un wrapper .Net, mais le SetThreadAffinityMask de Win32 api fait ce dont vous avez besoin - voir la documentation ici: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686247(v=vs.85).aspx.

+0

Je ne suis pas sûr de savoir comment cela serait lié aux espaces de Runspaces. Je ne pense pas que vous avez des exemples? – Jeremy

+0

Un exemple: http://khason.net/blog/parallel-programming-well-it%E2%80%99s-all-about-cpu-affinity-or-how-to-set-processor-affinity-in- wpf/ –

+0

Les espaces de déroulement ont une propriété ThreadOptions - si vous utilisez ReuseThread (pour les pools d'espaces d'exécution) ou UseCurrentThread, vous pouvez être sûr que l'espace d'exécution ne crée pas de nouveaux threads. –

Questions connexes