Vous voulez une affinité processeur (ou affinité CPU ).
L'appel système pertinent est sched_setaffinity (2) , mais vous devez l'utiliser via pthread_set_affinity_np (3) si vous souhaitez coder vos benchmarks pour cela.
La commande associée est tasket (1) et vous pouvez l'utiliser sur les commandes que vous souhaitez comparer (ou sur votre shell).
Si possible, veillez à ce que la machine ne soit pas beaucoup chargée par d'autres tâches sans rapport avec le benchmark.
Vous pouvez également utiliser un hyperviseur comme Xen et démarrer votre Linux en tant que système d'exploitation invité pour cet hyperviseur. Configurez ensuite xen
pour utiliser uniquement un ensemble restreint de cœurs de processeur (je ne connais pas les détails exacts, vous devez le savoir). Sur les distributions Debian (et connexes), vous pouvez installer des paquets comme xen-linux-system-amd64
, xen-hypervisor-amd64
, xen-utils
etc (j'utilise sur Debian / Sid xen-hypervisor-4.5-amd64
, xen-linux-system-4.0.0-1-amd64
, xen-utils-4.5
etc ...).
Il pourrait y avoir un moyen de configurer (peut-être au moment de la compilation du noyau, ou en passant des arguments spécifiques au noyau via le chargeur Grub) votre noyau Linux pour restreindre le nombre de cœurs utilisables.
Bien sûr, il est préférable, lorsque l' analyse comparative certains -eg programme sur un ordinateur de bureau Linux PC-, pour prendre soin d'éviter d' avoir de nombreux processus en cours d' exécution de l' extérieur (utilisation ps auxw
, pstree -p
, top
pour trouver ces). Au moins, fermez et quittez la plupart des applications interactives (navigateur comme Firefox, e-mail, éditeur, IDE comme Eclipse) et ne gardez qu'un petit nombre de terminaux à comparer. Vous pouvez même comparer en mode batch (en utilisant batch
ou at
pour exécuter les tests) alors que vous n'êtes même pas connecté (donc ne pas avoir de sessions GUI à la Gnome ou KDE ou Xfce , etc ... en cours d'exécution).