2014-01-05 32 views
4

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

PS:目前io的深度通常为2-4,这表明1K IOPS每个 “通知”

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

+4

虽然这个问题*是*可能相当广泛,我认为这是不够具体(IPC,通知,Linux,列出机制的比较)以防止关闭。 –

+0

您是否需要立即发送每个通知?有一种众所周知的方法(例如在外部设备产生中断时使用)来抑制前一次通知产生一段时间,所以全速率不会超过某个最大值。您可以使用例如10毫秒的最小时间间隔,每秒不超过100次通知,但仍然在前一部分之后提供10毫秒的反应... – Netch

+1

嗯,延迟是主要目标,10毫秒太大。 – drewlu

回答

0

您可以使用Linux signals

看SIGALRM或者你可以要求“最好”的方式使用SIGUSR1

+1

你真的读过这个问题吗?尽管信号是进程间通知的一种形式,但您没有提供任何基准测试数据,OP没有理由将此方法考虑为其他方法(其中OP的主要问题是批量吞吐量以及延迟)。 –

相关问题