性能分析新机器

当我在新机器上工作时,我想了解它的局限性。 在这篇文章中,我将研究机器的抖动以及忙于等待本周末构建的新PC的影响。 机器的规格很有趣,但不是发布目的。 永远不要少:

  • i7-3970X六核,运行频率为4.5 GHz(打开HT)
  • 32 GB的PC-1600内存
  • OCZ RevoDrive 3,PCI SSD(实际写入带宽为600 MB / s)
  • Ubuntu 13.04

注意: OCZ RevoDrive在Linux上不受官方支持,但比其模型便宜得多。

测试抖动

我的微抖动采样器查看正在运行的线程的中断。 它与jHiccup相似,但是它没有测量线程唤醒的延迟,而是测量了线程一旦开始运行如何延迟的时间。 令人惊讶的是,线程的运行方式会影响唤醒后将看到的延迟类型。

该图表有点密集。 它示出了一个CPU小时内发生的平均(每次测试运行多于两个时钟小时)有原始数据是可用的范围内的时间的中断的数量该处

有趣的区别在于操作系统如何处理与隔离的CPU和/或繁忙的等待线程的绑定。

忙碌中

在繁忙等待的情况下,绑定到隔离的内核确实有助于减少较高的延迟差距。

这些测试同时运行。 唯一的区别是“绑定”线程绑定到“ isolcpus” CPU,该内核的其他CPU也被隔离。 即整个核心都是孤立的。

相当忙-50%

在这种情况下,线程在采样1毫秒和休眠1毫秒之间交替

未绑定的50%繁忙线程的延迟要低得多,只有2微秒,但更长的延迟要多得多。

有点忙– 10%

在此测试中,采样器运行0.111毫秒,睡眠1毫秒。 即使在这种情况下,绑定到隔离的CPU也会有所不同。

绑定但不隔离– 10%

在这种情况下,未隔离绑定线程。 它被绑定到一个CPU上,在该CPU上内核不是免费的,并且也不是孤立的。 与该测试中的未结合相比,单独结合似乎没有什么区别。

比较绑定线程和隔离线程

我以前见过的东西,但我发现有点奇怪,就是如果您放弃CPU,则线程唤醒时性能会很差。 以前,我已将缓存降低为未预热的时间,但是代码对内存的访问很少,并且代码非常短,因此仍然可能但不太可能。 以每小时一百万的速度在20微秒处达到峰值可能是由于每次唤醒时都会发生延迟。 这大约是90,000个时钟周期,对于高速缓存未命中来说似乎很多。

比较未绑定的线程

在此图表中,它暗示即使您没有被约束,对CPU的贪婪也确实有帮助。 繁忙的线程较少被中断。 很难说50%的忙比10%的忙更好。 可能是这样,但是需要更长的测试时间(我说这是在误差范围之内)

结论

在不隔离CPU的情况下使用线程相似性在此系统上似乎无济于事。 我怀疑其他Linux版本甚至Windows都是如此。 在亲和力和隔离性有帮助的地方,繁忙的等待仍然有意义,因为调度程序似乎会减少中断线程的次数(如果您这样做的话)。

参考:来自Vanilla Java博客的JCG合作伙伴 Peter Lawrey的微抖动,繁忙等待和绑定CPU 。

翻译自: https://www.javacodegeeks.com/2013/07/micro-jitter-busy-waiting-and-binding-cpus.html

微抖动,繁忙的等待和绑定CPU相关推荐

  1. cpu 抖动_微抖动,繁忙的等待和绑定CPU

    cpu 抖动 性能分析新机器 当我在新机器上工作时,我想了解它的局限性. 在这篇文章中,我将研究机器的抖动以及忙于等待本周末构建的新PC的影响. 该机器的规格很有趣,但不是发布目的. 永远不要少于它们 ...

  2. taskset 查询或设置进程绑定CPU(亲和性)

    前言 taskset命令用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或 线程)调度到 ...

  3. 获取redis实例绑定cpu的情况

    redis是一个单线模型的nosql类型的数据库,而目前接触到的服务器大都是多核的,比如8c,16c,32c,64c等等.为了充分利用主机,在一台主机上必然会部署多个redis实例,默认情况cpu会随 ...

  4. 一文读懂 | 进程怎么绑定 CPU

    昨天在群里有朋友问:把进程绑定到某个 CPU 上运行是怎么实现的. 首先,我们先来了解下将进程与 CPU 进行绑定的好处. 进程绑定 CPU 的好处:在多核 CPU 结构中,每个核心有各自的L1.L2 ...

  5. Linux 线程优先级设置(内含C语言版线程创建、绑定CPU和优先级设置代码)

    参考链接: https://blog.csdn.net/wushuomin/article/details/80051295 //详细讲解pthread_create 函数 https://blog. ...

  6. python绑定内核_进程绑定CPU

    进程绑定CPU 本文所讲述内容仅适用于linux环境 1. CPU亲和性 CPU亲和性是指进程在某个给定的CPU上长时间运行,尽可能少的迁移到其他处理器的倾向性.linux内核的进程调度器天生就具有这 ...

  7. lotus同一台机拆分P1、P2绑定CPU

    lotus同一台机拆分P1.P2绑定CPU 创建目录 运行P1,绑定cpu 0-15 运行P2,绑定cpu 16-31 创建目录 /tmp01 /tmp02 /seal/worker01 /seal/ ...

  8. 绑定CPU逻辑核心的利器——taskset

    在工作中,我们可能遇到这样的需求:如何评估程序在一核和多核下的工作效率差距?最简单的想法是找一台只有一个CPU逻辑核的机器和一台有多个逻辑核的机器.(转载请指明出于breaksoftware的csdn ...

  9. Redis实例绑定CPU物理核优化Redis性能

    进入本次Redis性能调优之前,首先要知道CPU结构也会影响Redis的性能.接下来,具体了解一下! 为什么CPU结构也会影响Redis的性能? 主流的 CPU 架构 一个 CPU 处理器中一般有多个 ...

最新文章

  1. 从事嵌入式开发需要掌握哪些知识?从事嵌入式软件开发的前景如何?
  2. “池哥昼”的一件趣事
  3. 非proguard无法发现jar(已编译)的外部引用错误,(javac + proguard 则会检查)
  4. qt添加资源文件后编译失败,提示Qt:Error:No rule to make target ’ … /…/??.png’,needed by ‘debug/qrc_qrc.cpp’ stop
  5. qtdesigner 组件全吗_显示屏种类这么多,你知道怎么分类吗?
  6. C语言 | 内存对齐01 - 什么是内存对齐
  7. JavaScript 复杂判断的更优雅写法借鉴
  8. python搭建微信小程序卖货要收费用吗_个人的微信小程序做店铺收费吗?要收多少...
  9. hue 用oozie调度shell(sqoop)脚本问题
  10. 深度学习笔记(五):LSTM
  11. android studio定位gps
  12. html广告代码自适应,很实用的对联广告代码(自适应高度)
  13. linux检测扩容卡,怎么检测SD卡是否被扩容过?对SD卡进行扩容检测的方法
  14. 注册FaceBook和购买FaceBook小白号的区别
  15. 《算法竞赛进阶指南》 荷马史诗
  16. 《自然语言处理技术综述(第三版)》(1)----正则表达式
  17. vpu测试_单独编译IMX6Q的VPU示例程序:mxc_vpu_test.out
  18. 计算机培训普通话是什么,计算机二级培训开课+普通话证书领取+普通话测试练习资料(二)...
  19. 计算机丢失GetU,u盘启动引导文件丢失如何修复
  20. Webots中常用的函数(C版)

热门文章

  1. 时代银通笔试20181023
  2. ue4 运行禁用鼠标_[UE4] VS code使用LuaPanda断点调试
  3. 摘要算法与加密(以MD5算法为例)
  4. MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据
  5. XML——StAX Streaming API for XML(read+write)
  6. JavaSE图画一览
  7. react 线程_React式服务中的线程本地状态可用性
  8. jvm与非jvm语言优劣_都灵JVM编程语言:使用ANTLR构建高级词法分析器
  9. jsf 单元测试_构建和测试JSF.next
  10. java wcf_尝试将WCF映射到Java术语