我们有两个Linux进程与域套接字通信,性能目标是通过单域套接字连接的4k请求大小的5k iops,为了降低cpu成本,我们用一个io-ring(基于共享内存)替换域套接字,但关键的“通知”步骤仍由域套接字实现,似乎开销仍然过多。Linux上的快速用户空间进程间通知方法?
PS:目前io的深度通常为2-4,这表明1K IOPS每个 “通知”
信号灯,pthread_condvars,futex的基础锁,eventfd,inotify的,哪一个你喜欢(或其他任何人),我非常关心性能和开销。谢谢!
虽然这个问题*是*可能相当广泛,我认为这是不够具体(IPC,通知,Linux,列出机制的比较)以防止关闭。 –
您是否需要立即发送每个通知?有一种众所周知的方法(例如在外部设备产生中断时使用)来抑制前一次通知产生一段时间,所以全速率不会超过某个最大值。您可以使用例如10毫秒的最小时间间隔,每秒不超过100次通知,但仍然在前一部分之后提供10毫秒的反应... – Netch
嗯,延迟是主要目标,10毫秒太大。 – drewlu