![¿Cómo puedo asegurarme de que se esté ejecutando exactamente un proceso en un procesador/núcleo determinado?](https://rvso.com/image/1313333/%C2%BFC%C3%B3mo%20puedo%20asegurarme%20de%20que%20se%20est%C3%A9%20ejecutando%20exactamente%20un%20proceso%20en%20un%20procesador%2Fn%C3%BAcleo%20determinado%3F.png)
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:
En sistemas basados en Linux, puedehaz lo mismo con la taskset
utilidado configurando el indicador de máscara de CPU apropiado en la /proc
entrada 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.