Estoy tratando de ejecutar algunos puntos de referencia en una máquina multinúcleo y me gustaría decirle al kernel de Linux que simplemente evite ciertos núcleos a menos que se indique explícitamente que los use.
La idea es que podría dejar de lado un puñado de núcleos (la máquina tiene 6 núcleos físicos) para la evaluación comparativa y usar la máscara de CPU para permitir solo procesos de evaluación comparativa en los núcleos dados.
¿Es esto factible?
linux-kernel
cpu
benchmark
Lajos Nagy
fuente
fuente
Respuestas:
Puede aislar algunos núcleos de CPU de la programación del kernel usando el
isolcpus
parámetro. Agregue este parámetro a su grub.conf y reinicie para que surta efecto.fuente
Desea cierta afinidad de procesador (o afinidad de CPU ).
El syscall relevante es sched_setaffinity (2) , pero debe usarlo a través de pthread_set_affinity_np (3) si desea codificar sus puntos de referencia para eso.
El comando relacionado es el conjunto de tareas (1) y puede usarlo en los comandos que desea comparar (o en su shell).
Si es posible, tenga cuidado de que la máquina no se cargue mucho por otras tareas no relacionadas con el punto de referencia.
Alternativamente, use un hipervisor como Xen y arranque su Linux como un SO huésped para ese hipervisor. Luego configure
xen
para usar solo un conjunto restringido de núcleos de CPU (no sé los detalles exactos, debe averiguarlo). En Debian (y relacionados) distribuciones, es posible instalar paquetes comoxen-linux-system-amd64
,xen-hypervisor-amd64
,xen-utils
etc (estoy usando en Debian / Sidxen-hypervisor-4.5-amd64
,xen-linux-system-4.0.0-1-amd64
,xen-utils-4.5
etc ...).Puede haber alguna forma de configurar (quizás en el momento de la compilación del núcleo, o pasando argumentos específicos al núcleo a través del cargador Grub) su núcleo Linux para restringir la cantidad de núcleos utilizables.
Por supuesto, es mejor, cuando la evaluación comparativa de algún programa -por ejemplo en un escritorio Linux en PC, para cuidar para evitar tener muchos procesos fuera de funcionamiento (uso
ps auxw
,pstree -p
,top
encontrar estos). Al menos, cierre y cierre la mayoría de las aplicaciones interactivas (navegador como Firefox, correo electrónico, editor, IDEs como Eclipse) y mantenga solo un pequeño número de terminales como punto de referencia. Incluso puede realizar una evaluación comparativa en modo por lotes (utilizandobatch
oat
para ejecutar las evaluaciones comparativas) mientras ni siquiera ha iniciado sesión (por lo que no tiene ninguna sesión de GUI al estilo Gnome o KDE o Xfce , etc.).fuente
at
obatch
) mientras no esté conectado (por lo tanto, no ejecute ninguna sesión de consumo).