【问题标题】:fast user space inter-process notify approach on Linux?Linux上的快速用户空间进程间通知方法?
【发布时间】:2014-01-22 18:42:04
【问题描述】:

我们有两个 Linux 进程与域套接字通信,性能目标是通过单域套接字连接实现 5k iops 和 4k 请求大小,为了降低 cpu 成本,我们将域套接字替换为 io-ring(基于共享内存),但关键的“通知”步骤仍然由域套接字实现,似乎开销仍然太大。

PS:目前io深度一般为2-4,表示每次“notify”需要1k iops

信号量、pthread_condvars、基于 futex 的锁、eventfd、inotify,你更喜欢哪一个(或其他任何人),我非常关心性能和开销。谢谢!

【问题讨论】:

  • 虽然这个问题 在要求“最佳”方法方面可能相当广泛,但我认为它足够具体(IPC、通知、Linux、列出机制的比较)以防止关闭。
  • 是否需要立即发送每个通知?有一种众所周知的方法(例如用于外部设备的中断生成)在前一个之后一段时间内抑制通知生成,因此全速率不会超过某个最大值。您可以使用例如10 毫秒的最小间隔,每秒发出不超过 100 个通知,但在前一部分之后仍会在 10 毫秒内提供反应...
  • 好吧,延迟是主要目标,10 毫秒太大了。

标签: linux performance ipc broadcast futex


【解决方案1】:

你可以使用linuxsignals

看看 SIGALRM 或者你可以使用 SIGUSR1

【讨论】:

  • 你真的读过这个问题吗?虽然信号是进程间通知的一种形式...您没有提供基准数据,但 OP 没有理由考虑这种方法而不是其他方法(OP 的主要关注点是批量吞吐量和延迟)。
猜你喜欢
  • 2011-01-18
  • 2011-12-20
  • 2015-03-27
  • 2010-11-25
  • 2011-02-10
  • 1970-01-01
  • 2016-08-08
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多