2011-09-25 45 views
7

Duplicar posible:
how to set CPU affinity of a particular pthread?¿Cómo ejecutar diferentes hilos en diferentes núcleos?

Estoy escribiendo un programa en C++, usando el compilador g ++ en Ubuntu. Tengo 4 hilos en mi programa y 4 núcleos en mi CPU. Quiero estar seguro de que cada hilo se ejecutará en un núcleo diferente. Raramente estoy familiarizado con pthread.

+2

¿Puedo preguntar por qué quieres hacer esto? Si se asegura de que las bandas de rodamiento no se hinquen entre sí (para que puedan correr al mismo tiempo), el sistema operativo se encargará de programarlas siempre que cualquier núcleo tenga tiempo libre. – James

+0

@autopulated, en realidad tener afinidad con el núcleo y el socket puede afectar enormemente el rendimiento. imagine fork/join, normalmente le gustaría que los hilos adicionales se programen en núcleos libres, no se inicie en el mismo (como suele ser más rápido) para ejecutarlos en paralelo. También preferiría estar programado en el mismo socket 1 para utilizar la localidad. – bestsss

+0

La localidad es una buena razón, pero como lo señala David a continuación, los resultados no son necesariamente tan buenos como cabría esperar. – James

Respuesta

13

no hacen esto. Deje que el sistema programe los hilos. Si afinitiza los subprocesos a núcleos distintos, simplemente hiere el planificador. Cuando su aplicación es la única que consume CPU, el planificador naturalmente programará cada hilo en un núcleo separado.

+8

Este es un comentario, no una respuesta. Probablemente sea correcto, pero si la idea del ejercicio es averiguar qué sucede cuando se fijan los hilos, entonces estás desalentando el aprendizaje. ¿Por qué no grabar los manuales de Linux mientras lo hace? El conocimiento es peligroso; - p –

+0

+1 para su opinión útil – Saeed

Cuestiones relacionadas