¿Cómo puedo asegurarme de que se esté ejecutando exactamente un proceso en un procesador/núcleo determinado?

¿Cómo puedo asegurarme de que se esté ejecutando exactamente un proceso en un procesador/núcleo determinado?

Me gustaría hacer esto para poder probar con precisión mis procesos y poder tener la ilusión de control.

Quizás quiera reservar un procesador para programas especiales. Quizás quiera escribir mi propio optimizador de procesos. Quién sabe. Las posibilidades son infinitas en mi mente.

¿Es esto posible en cualquier sistema operativo? ¿Si no, porque no? Si se nos permite compartimentar la memoria, ¿por qué no podemos tener ese control sobre los procesadores?

Gracias.

Respuesta1

En Linux,conjuntos de CPUdebería funcionar para esto.

Respuesta2

En teoría, esto es posible. La forma más sencilla de lograr algo parecido a esto sería con una plataforma de virtualización que le permita asignar CPU/núcleos específicos a una máquina virtual específica. Luego, podría ejecutar solo el proceso que desee en una máquina virtual determinada (por supuesto, con la mínima sobrecarga del sistema operativo).

Respuesta3

La forma más sencilla de hacerlo es configurar la afinidad del procesador para un proceso determinado o decirle al sistema operativo en qué CPU lógicas (núcleos) se permite ejecutar ese proceso. Si hace clic derecho en un proceso en el Administrador de tareas de Windows y selecciona Set Affinity..., encontrará una ventana similar a esta:

Configurar la afinidad del procesador en Windows

En sistemas basados ​​en Linux, puedehaz lo mismo con la tasksetutilidado configurando el indicador de máscara de CPU apropiado en la /procentrada de los procesos.

Lamentablemente, no existe una manera fácil de eliminar todos los procesos de un determinado procesador o de establecer automáticamente una máscara específica en un proceso cuando se inicia; necesitará una secuencia de comandos para monitorear nuevos procesos en el sistema y establecer la afinidad adecuada. que deseas.

información relacionada