首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux2.6.18上IPC延迟测试的有趣结果

Linux2.6.18上IPC延迟测试的有趣结果
EN

Stack Overflow用户
提问于 2014-03-01 09:37:05
回答 1查看 416关注 0票数 3

我正在Linux2.6.18下对unix套接字进行性能(延迟)测试,

进程A在每10 ms上向进程B写入1024字节,结果表明平均延迟为20 us,标准差较小(2~3 us)。

当我与进程A&B同时运行一些额外的CPU绑定进程时,这个测试变得很有趣,这些新进程对缓存非常友好,比如一个繁忙的简单数学计算循环,但结果令我吃惊的是,IPC延迟突然下降,平均达到15 us。

据我所知,为了提高交互性,O(1)调度器(2.6.23之前的2.6)通过一些启发式方法奖励IO绑定过程,但这不能解释为什么速度比第一种情况更快。

我还考虑过,如果Linux在进程A得到奖励时做了一些繁忙循环的特殊情况,但似乎没有经过进一步的测试。

这真的让我很困惑。

我的配置: Intel(R) Xeon(R) CPU E5-2609 0@ 2.40GHz,带10M L3缓存MEM: 32G操作系统: Linux 2.6.18-308.el5 SMP x86_64

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-07 17:23:22

我怀疑硬件的一些省电功能在这里起作用。10毫秒的睡眠时间足以让现代硬件进入低功耗状态。当你在微秒水平上观察事物的时候,有一个真正的,可测量的延迟,从一个省电的状态出来。

我的猜测是,并行运行“繁忙”程序可以防止硬件进入低功耗状态。标准的尝试:

  • 在BIOS级别,禁用任何和所有省电功能,包括C状态。
  • 在操作系统级别,禁用cpuspeed (或您的发行版使用的任何频率缩放程序)
  • 尝试使用"idle=poll“内核参数引导

最后一个建议对于Sandy (这就是您所拥有的)特别重要,至少对于RHEL/CentOS5.x(我猜您正在运行)。我发现Linux内核仍然会覆盖一些BIOS设置。其他可能帮助您的Linux内核参数:

  • intel_idle.max_state=0
  • processor.max_cstate=0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22112608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档