【问题标题】:Fast inter-process (inter-threaded) communications IPC on large multi-cpu system大型多 CPU 系统上的快速进程间(线程间)通信 IPC
【发布时间】:2011-02-10 11:33:45
【问题描述】:

对于进程间通信来说,最快的便携式双向通信机制是什么,其中一个应用程序的线程需要与同一台计算机上另一个应用程序中的多个线程通信,并且通信线程可以位于不同的物理 CPU 上)。

我假设它会涉及共享内存和循环缓冲区以及共享同步机制。

但是当线程在不同的物理 CPU 上运行时,共享互斥锁非常昂贵(而且数量也有限)。

【问题讨论】:

  • 您希望在这些进程和线程之间进行什么通信?
  • 我看到的另一个可能影响性能的问题:一旦消息被传递,调度程序将不得不进行上下文切换以传递消息。大量的 RPC 消息会对性能产生巨大影响。而且它看起来不像在不可扩展的线程之间直接添加通信设施(在更糟糕的情况下,一个线程可以将消息传递给多个远程线程)。
  • 我正在尝试传递大量相对较小的可变长度 RPC 消息。

标签: algorithm multithreading ipc multicore mutex


【解决方案1】:

您可能希望首先查看现有的库,例如 MPI 和 OpenMP。它们往往调整得相当好。

如果您愿意接受更前沿的方法,那么您可以尝试 Barrelfish 正在做的事情,请参阅 http://www.barrelfish.org/barrelfish_sosp09.pdf

【讨论】:

  • 谢谢,我会看看他们的实现。
【解决方案2】:

如果你打算使用 C++,boost 有一个可移植的非常低级的 IPC 库。它允许您在进程之间同步和共享内存。

http://www.boost.org/doc/libs/1_42_0/doc/html/interprocess.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多