【问题标题】:Use busy loop application on multicore box在多核机器上使用繁忙循环应用程序
【发布时间】:2012-07-03 03:00:22
【问题描述】:

在多核机器上可以使用忙循环应用程序吗?

我有几个应用程序,它们从 POSIX 消息队列中读取消息,进行处理并再次等待新消息。但是,据我了解,mq_timedreceive 是非常昂贵的操作,如果应用程序在 O_NONBLOCK 队列上执行 mq_receive,它的性能会更好(延迟更少)。因此,如果我保留几个 CPU(从 12 个)用于非阻塞消息处理,可以吗?

【问题讨论】:

  • 尽量避免这种情况,无论是美观(包括扩展计算能力)还是能源方面(服务器在忙等待时比空闲等待时消耗更多的电量)。

标签: c++ linux posix message-queue


【解决方案1】:

大家,可以在多核机器上使用忙循环应用程序吗?

不管设备如何,是的,可以使用忙等待。不,不建议这样做,不,很少需要,但可以肯定 - 这是您的计算机,您的应用程序,去吧!

但是,据我了解,mq_timedreceive 是相当昂贵的操作,如果应用程序在 O_NONBLOCK 队列上执行 mq_receive,它的性能会更好(延迟更少)。因此,如果我保留几个 CPU(从 12 个)用于非阻塞消息处理,可以吗?

您有一种只能用数据来解决的疑问。进行测量,看看它是否确实像您认为的那样昂贵。没有什么可以告诉你的价值是它的一半。您的应用程序的性能期限以毫秒、微秒或纳秒(或每秒数百/数千/百万次操作的吞吐量数字)为单位。这与您的目标硬件的能力相结合将决定哪些解决方案是合适的。

【讨论】:

    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 2013-12-05
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2021-12-20
    相关资源
    最近更新 更多