【发布时间】: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