J'essaie d'exécuter des tests de performance sur une machine multicœur et je voudrais dire au noyau Linux d'éviter simplement certains cœurs, sauf indication explicite de les utiliser.
L'idée est que je pourrais mettre de côté une poignée de cœurs (la machine a 6 cœurs physiques) pour l'analyse comparative et utiliser le masque cpu pour autoriser uniquement des processus de référence sur les cœurs donnés.
Est-ce faisable?
linux-kernel
cpu
benchmark
Lajos Nagy
la source
la source
Réponses:
Vous pouvez isoler certains cœurs de processeur de la planification du noyau en utilisant le
isolcpus
paramètre. Ajoutez ce paramètre à votre grub.conf et redémarrez pour prendre effet.la source
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 commexen-linux-system-amd64
,xen-hypervisor-amd64
,xen-utils
etc (j'utilise sur Debian / Sidxen-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 utilisantbatch
ouat
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).la source
at
oubatch
) lorsque vous n'êtes pas connecté (donc ne lancez aucune session consommatrice).