2012-04-07 1 views
1

Je veux lancer un certain nombre de tests sur un système multi-core sous Linux. Je veux réserver l'un des noyaux pour mes benchmarks. Je sais que je peux utiliser sched_setaffinity pour limiter mes benchmarks à ce noyau. Comment puis-je garder tous les autres processus off mon noyau? En d'autres termes, comment puis-je définir l'affinité par défaut de tous les processus pour ne pas inclure mon cœur?Comment puis-je changer l'affinité du processeur par défaut sous Linux?

Répondre

1

Même si vous maintenez tous les autres processus à l'écart de votre cœur «réservé à l'analyse comparative», gardez à l'esprit que vous ne pouvez pas les empêcher de consommer une partie variable et imprévisible de la bande passante limitée. et que vous ne pouvez pas les empêcher de faire des demandes variables sur les caches L2 et L3 partagés.

IMHO reproductible, l'analyse comparative scientifique a besoin d'une machine pour elle-même.

+0

Il s'agit d'une machine dédiée ne fonctionnant que sur mes benchmarks. Cependant, je ne suis pas assez familier avec Linux et assez familier avec Windows pour savoir qu'il y a quelques dizaines de processus système en arrière-plan sur lesquels j'ai peu de contrôle. J'essaie de minimiser leur impact. –

+1

Ah je vois; OK, je supposais que vous essayiez de bloquer une ressource sur votre bureau. Mais personnellement, j'attaquerais le problème en utilisant la priorité d'ordonnancement à la place; il suffit de lancer votre processus d'analyse comparative à une priorité plus élevée que ces processus du système. Voir aussi http://stackoverflow.com/questions/6957687/these-days-what-are-good-reasons-for-setting-thread-affinity-rather-than-leavin en particulier mon commentaire sur la réponse d'Ariel. – timday

Questions connexes