2010-04-21 2 views
4

Quel serait le mécanisme de communication bidirectionnelle portable le plus rapide pour la communication inter-processus où les threads d'une application doivent communiquer avec plusieurs threads dans une autre application sur le même ordinateur, et les threads communicants peuvent être sur des processeurs physiques différents). Je suppose que cela impliquerait une mémoire partagée et un tampon circulaire et des mécanismes de synchronisation partagés.Communications IPC inter-processus (inter-thread) rapides sur un grand système multi-cpu

Mais les mutex partagés sont très chers (et ils sont également en nombre limité) pour se synchroniser lorsque les threads s'exécutent sur des processeurs physiques différents.

+0

Qu'espérez-vous exactement de communiquer entre ces processus et les threads? – SamB

+0

Un autre problème que je vois qui peut affecter la performance: Une fois le message livré, le répartiteur devra faire un changement de contexte pour délivrer un message. Un grand nombre de messages RPC aura un énorme effet sur les performances. Et il ne semble pas que l'ajout d'une facilité de communication directement entre les threads ne soit pas scalable (dans le pire des cas, un thread peut envoyer des messages à plusieurs threads distants). – IPC

+0

J'essaie de fournir un grand nombre de messages RPC de longueur variable relativement petits. – IPC

Répondre

1

Vous voulez probablement commencer par regarder les bibliothèques existantes telles que MPI et OpenMP. Ils ont tendance à être assez bien accordés.

Si vous êtes prêt à recevoir davantage d'approches de pointe, vous pouvez essayer ce que fait Barrelfish, voir http://www.barrelfish.org/barrelfish_sosp09.pdf.

+0

Merci, je vais regarder leur mise en œuvre. – IPC