Necesito ejecutar pruebas de rendimiento para mi programa concurrente y mi requisito es que se ejecute en un solo núcleo de CPU. (No quiero hilos cooperativos; quiero tener siempre un cambio de contexto).
Entonces tengo dos preguntas:
La mejor solución: cómo firmar y reservar solo un núcleo de CPU solo para mi programa (para forzar al sistema operativo a no usar este núcleo de CPU). Supongo que no es posible, pero tal vez me equivoque ...
¿Cómo configurar Linux (Fedora 24) para usar solo un núcleo de CPU?
linux
cpu
parallelism
peter55555
fuente
fuente
Respuestas:
En Linux, la llamada del sistema para establecer la afinidad de la CPU para un proceso es
sched_setaffinity
. Luego está lataskset
herramienta para hacerlo en la línea de comando.Para que ese único programa se ejecute en una sola CPU, creo que querría algo como
(establezca cualquier número de CPU como argumento para el
-c
conmutador).Eso debería estar lo suficientemente cerca de un sistema de procesador único, siempre y cuando sus otros procesos no se ejecuten demasiado en comparación con el que desea medir, o se programen en otras CPU. Si desea dedicar una CPU solo a ese proceso único y evitar que otros procesos se ejecuten en esa CPU, también necesitará establecer su afinidad.
Eso, no sé cómo hacerlo correctamente. Tendrá que configurar la afinidad del procesador
init
desde muy temprano en el proceso de arranque para asegurarse de que se herede a todos los procesos del sistema. Como solución alternativa, puede usartaskset -c -p 0 $PID
para todos los demás procesos para forzarlos a ejecutarse solo en la CPU # 0.systemd también tiene
CPUAffinity=
que controlar la afinidad en los archivos de la unidad y hay un par de preguntas sobre cómo establecer la afinidad predeterminada aquí en unix.SE, pero no encontré ninguna con una buena solución.Aunque como @Kamil Maciorowski comentó y respondió a otra pregunta en superuser.com , la configuración
isolcpus=1
en la línea de comando del núcleo debería "aislar esa CPU de los algoritmos de programación generales", que es algo que puede desear.fuente