Sie möchten eine gewisse Prozessoraffinität (oder CPU-Affinität ).
Der relevante Systemaufruf ist sched_setaffinity (2) , aber Sie sollten ihn über pthread_set_affinity_np (3) verwenden, wenn Sie Ihre Benchmarks dafür codieren möchten.
Der zugehörige Befehl ist Task-Set (1) und kann für die Befehle verwendet werden, die Sie vergleichen möchten (oder für Ihre Shell).
Achten Sie nach Möglichkeit darauf, dass die Maschine durch andere Aufgaben, die nicht mit dem Benchmark zusammenhängen, nicht stark belastet wird.
Verwenden Sie alternativ einen Hypervisor wie Xen und starten Sie Ihr Linux als Gastbetriebssystem für diesen Hypervisor. Konfigurieren Sie dann xen
, dass nur einige eingeschränkte CPU-Kerne verwendet werden (ich kenne die genauen Details nicht, die Sie herausfinden müssen). Auf Debian (und verwandte) Distributionen, können Sie Pakete wie installieren xen-linux-system-amd64
, xen-hypervisor-amd64
, xen-utils
etc. (Ich verwende auf Debian / Sid xen-hypervisor-4.5-amd64
, xen-linux-system-4.0.0-1-amd64
, xen-utils-4.5
etc ...).
Möglicherweise gibt es eine Möglichkeit, Ihren Linux-Kernel zu konfigurieren (möglicherweise zum Zeitpunkt der Kernel-Kompilierung oder durch Übergabe bestimmter Argumente an den Kernel über den Grub-Loader), um die Anzahl der verwendbaren Kerne zu beschränken.
Natürlich ist es besser, wenn irgendein Programm -zB auf einem Desktop - Linux - PC, Benchmarking darauf zu achten, die viele außerhalb laufenden Prozessen (Verwendung zu vermeiden ps auxw
, pstree -p
, top
diese zu finden). Schließen und beenden Sie zumindest die meisten interaktiven Anwendungen (Browser wie Firefox, E-Mail, Editor, IDEs wie Eclipse) und behalten Sie nur eine kleine Anzahl von Terminals zum Benchmarking bei. Sie können sogar im Batch-Modus ein Benchmarking durchführen (mit batch
oder at
zum Ausführen der Benchmarks), während Sie noch nicht einmal angemeldet sind (es werden also keine GUI-Sitzungen à la Gnome oder KDE oder Xfce usw. ausgeführt).