Pregunta

Voy a estar escribiendo un sistema de mensajería de memoria compartida con hilos múltiples para la entrega de mensajes de ultra alto volumen entre los procesos. Los mensajes se originan a partir de los subprocesos de trabajo de un servidor web. Me gustaría aprovechar la localidad caché de la CPU que los núcleos en la misma parte de la CPU. Así que cuando me despierto un subproceso de trabajo en el extremo receptor de este sistema CIP, me despierto un hilo en la misma CPU.

necesito para Linux (prefferably POSIX en genaral) y ventanas de las llamadas a la API y la bitmasking que necesito hacer para extraer la información que le permitirá clasificarme la ejecución de hilo-id - desde el contexto de dicha rosca - con ayuda de la siguiente struct:

struct thread_core_id
{
    uint16_t cpu_Id;
    uint16_t core_Id;
};

Funciones para ambas plataformas será apreciado considerablemente. Estoy esperando que esto se puede hacer sin las llamadas al sistema. - es decir, el contexto interruptores

- Editar -

Me estoy enfocando en x86 en el momento, pero otras arquitecturas sería útil también.

¿Fue útil?

Solución

Para Linux específicamente que debería ser capaz de obtener la información requerida de /proc/cpuinfo y /sys/devices/system/cpu/cpu*/cache y el uso que con llamadas sched_{s|g}etaffinity(). Echar un vistazo a Lo que todo programador debe saber sobre memoria , si no lo ha hecho, alrededor de la sección 5.3.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top