【问题标题】:How efficient is the Linux inotify API?Linux inotify API 的效率如何?
【发布时间】:2011-08-27 12:08:06
【问题描述】:

我了解inotify 最初是为了促进某些类型的文件系统管理任务(如索引、增量备份等)而开发的。

话虽如此。 inotify API 是否足够高效,可以用作简单但有效的进程间消息传递系统?

作为一个相对的参考点...当以这种方式使用时,它与诸如 JMS over ActiveMQ 之类的东西相比如何?

【问题讨论】:

  • (另外,D-Bus呢?)

标签: linux performance optimization linux-kernel message-queue


【解决方案1】:

如果您想做简单的消息传递,只需使用 msggetmsgsndmsgrcv

man mq_overview 获得介绍。这是自内核 2.6.6 和 Glibc 2.3.4 以来内置的操作系统。

这将提高性能,并且界面(如果有的话)非常简单。


这里有一个参考示例:http://www.cs.cf.ac.uk/Dave/C/node25.html

【讨论】:

    【解决方案2】:

    我不确定您对 inotify 的确切想法,但这有点滥用它们的用途,并且存在更好的 IPC 设施。假设您传递的是合理大小的有界消息,消息队列在性能和易用性方面很难被击败。

    我会建议 POSIX MQs 超过 SysV 变体 sehe 建议。他们有一个更干净的界面,队列是使用文件系统路径条目创建的,您不必弄乱 IPC 密钥;您可以从命令行 ls 或 rm 队列。它们可以与 select() 一起用作要监视的另一个文件描述符。当有新的队列条目时,mq_notify() 可以发出信号或创建一个新线程。它们非常灵活。

    【讨论】:

    • 消息队列描述符不一定是文件描述符。尽管 Linux 和 FreeBSD 使用文件描述符实现 POSIX 消息队列,但 Solaris 实现基于共享内存和健壮的互斥体,这可能更有效。
    • @jilles - 我知道,也许我应该明确指出,但 OP 有 linux 和 linux-kernel 标签,我并没有普遍考虑。不过很好的警告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多