Domanda

Ho intenzione di scrivere un sistema di messaggistica multi-threaded memoria condivisa per la consegna dei messaggi ultra high-volume tra i processi. I messaggi provengono dai thread di lavoro di un server web. Mi piacerebbe sfruttare la cache di località CPU che nuclei sulla stessa quota di CPU. In modo che quando mi sveglio un thread di lavoro sul lato di ricezione di questo sistema IPC, mi sveglio un thread sulla stessa CPU.

ho bisogno per Linux (POSIX prefferably in genaral) e le finestre delle chiamate API e il bitmasking ho bisogno di fare per estrarre le informazioni che mi permette di classificare l'esecuzione di thread-id - dal contesto di detto filo - con il seguente struct:

struct thread_core_id
{
    uint16_t cpu_Id;
    uint16_t core_Id;
};

Funzioni per entrambe le piattaforme sarà molto apprezzato. Spero che questo può essere fatto senza chiamate di sistema -. Cioè, contesto-switch

- Modifica -

mi sto concentrando su x86, al momento, ma altre architetture sarebbe utile pure.

È stato utile?

Soluzione

Per Linux specificamente si dovrebbe essere in grado di ottenere le informazioni richieste dalla /proc/cpuinfo e /sys/devices/system/cpu/cpu*/cache e l'uso che con le chiamate sched_{s|g}etaffinity(). Date un'occhiata a Ciò che ogni programmatore dovrebbe conoscere memoria , se non l'hai già, intorno paragrafo 5.3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top