¿Cómo se configura la afinidad del procesador en Snow Leopard en un MacBook Pro? Sé que en Windows puedes cambiarlo en el Administrador de tareas.
¿Cómo se configura la afinidad del procesador en Snow Leopard en un MacBook Pro? Sé que en Windows puedes cambiarlo en el Administrador de tareas.
Respuestas:
OS X ha admitido una API de afinidad de subprocesos desde la versión 10.5. Aquí hay material relevante de la página web a la que me vinculé.
Un conjunto de afinidad es una colección de hilos que comparten recursos de memoria y desean compartir un caché L2. Los conjuntos de afinidad distintos representan afinidades separadas, es decir, los subprocesos que pertenecen a un conjunto diferente deben usar un caché L2 separado y, por lo tanto, ejecutarse en procesadores lógicos diferentes.
Un conjunto de afinidad se identifica con una "etiqueta". Los hilos se asignan a un conjunto de afinidad particular asignándole la etiqueta que identifica ese conjunto. Un hilo puede pertenecer como máximo a un conjunto de afinidad; es decir, tiene una etiqueta de afinidad.
Por ejemplo, una aplicación que desea ejecutar 2 subprocesos en cachés L2 separados establecería los subprocesos con diferentes etiquetas de afinidad. En una máquina de doble núcleo, esta afinidad será efectivamente ignorada. Sin embargo, en una MacPro de 4 núcleos, el planificador intentará ejecutar subprocesos en paquetes separados. Del mismo modo, en una MacPro de 8 núcleos, el planificador intentará ejecutar estos subprocesos en troqueles separados (que pueden o no estar en el mismo paquete de CPU física).
Una aplicación que quiera colocar un hilo en cada procesador disponible haría lo siguiente:
- Obtenga el número de procesadores en el sistema usando sysctl (3).
- Crea esa cantidad de hilos.
- Establezca cada hilo con una etiqueta de afinidad distinta.
- Comience todos los hilos.
Los hilos con política de afinidad predeterminada se programarán más libremente en cualquier procesador. Estos hilos se migrarán preferentemente para ejecutarse en un procesador inactivo. Los hilos con etiquetas de afinidad tenderán a permanecer en su lugar.
Consulte la fuente para obtener listas de códigos e información sobre el intercambio de etiquetas de afinidad entre procesos primarios y secundarios, obtener la configuración de caché de la CPU y más.
http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/
Mac OS X no exporta interfaces que identifiquen procesadores o controlen la colocación de subprocesos; no se admite el enlace explícito de subprocesos a procesadores . En cambio, el núcleo gestiona la colocación de todos los hilos. Las aplicaciones esperan que el planificador, en la mayoría de las circunstancias, ejecute sus subprocesos utilizando una buena ubicación del procesador con respecto a la afinidad de caché.
De http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf
• Hilos de kernel eficientes. Cada hilo POSIX se pone en cola en una CPU particular, lo que mejora la afinidad y la escalabilidad del procesador al tiempo que reduce la contención de bloqueo. Los subprocesos se ajustan a POSIX (1c), incluido el soporte para cancelación y mutexes compartidos.
Me parece un anuncio, mi iMac corriendo Lion parece respetar eso la mayor parte del tiempo, pero no 'fija' un proceso a un núcleo.
De todos modos, no pude encontrar ninguna API para controlar la afinidad del proceso por Darwin.