Volete un po 'di affinità del processore (o affinità della CPU ).
Il syscall rilevante è sched_setaffinity (2) , ma dovresti usarlo tramite pthread_set_affinity_np (3) se vuoi codificare i tuoi benchmark per questo.
Il comando correlato è tasket (1) e potresti usarlo sui comandi che vuoi confrontare (o sulla tua shell).
Se possibile, assicurarsi che la macchina non sia caricata molto da altre attività non correlate al benchmark.
In alternativa, usa un hypervisor come Xen e avvia il tuo Linux come SO guest per quell'hypervisor. Quindi configurare xen
per utilizzare solo un set limitato di core della CPU (non conosco i dettagli esatti, è necessario scoprirlo). Su Debian (e relativi) distribuzioni, si potrebbe installare i pacchetti come xen-linux-system-amd64
, xen-hypervisor-amd64
, xen-utils
ecc (sto usando su Debian / Sid xen-hypervisor-4.5-amd64
, xen-linux-system-4.0.0-1-amd64
, xen-utils-4.5
ecc ...).
Potrebbe esserci forse un modo per configurare (forse al momento della compilazione del kernel, o passando argomenti specifici al kernel tramite il caricatore Grub) il proprio kernel Linux per limitare il numero di core utilizzabili.
Naturalmente, è meglio, quando il benchmarking alcuni -EG programma su un desktop Linux da PC, per aver cura di evitare di avere molti processi in esecuzione al di fuori (uso ps auxw
, pstree -p
, top
trovare questi). Almeno, chiudere e chiudere la maggior parte delle applicazioni interattive (browser come Firefox, e-mail, editor, IDE come Eclipse) e mantenere un numero limitato di terminali da confrontare. Potresti anche eseguire il benchmark in modalità batch (utilizzando batch
o at
per eseguire i benchmark) mentre non hai nemmeno effettuato l'accesso (quindi non hai sessioni GUI à Gnome o KDE o Xfce , ecc ... in esecuzione).