微抖动,繁忙的等待和绑定CPU

性能分析新机器

当我在新机器上工作时,我想了解它的局限性。 在这篇文章中,我将研究机器的抖动以及忙于等待本周末构建的新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和/或繁忙的等待线程的绑定。

忙碌中

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

中断100

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

相当忙-50%

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

中断50

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

有点忙– 10%

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

中断10

绑定但不隔离– 10%

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

中断11

比较绑定线程和隔离线程

我以前见过的东西,但我发现有点奇怪,就是如果您放弃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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

函数的指定参数

def test(r,t,p) 形参 ret test(p等等,rere,tcsss) 实参,相等后位置上不用一一对应 默认值 def drive(name): temp name "开车" return temp ret drive("一个人") print(ret) ##应该输出为:一个人开车 def drice(p,name默认值…

Python快速搭建HTTP服务器

<wiz_tmp_tag id"wiz-table-range-border" contenteditable"false" style"display: none;"> 来自为知笔记(Wiz)转载于:https://www.cnblogs.com/linux-wang/p/8142848.html

mysql导入.sql文件及常用命令_MySQL导入.sql文件及常用命令

在MySQL Qurey Brower中直接导入*.sql脚本&#xff0c;是不能一次执行多条sql命令的&#xff0c;在mysql中执行sql文件的命令&#xff1a;mysql> source d:/myprogram/database/db.sql;另附mysql常用命令&#xff1a;一) 连接MYSQL&#xff1a;格式&#xff1a; mysql -…

浏览器如何生成URL

点击页面中的链接&#xff0c;浏览器会根据源码中相对URL路径作不同的处理&#xff1a; &#xff08;1&#xff09;有协议名称&#xff0c;但没有域名信息 对于这种形式的URL&#xff0c;它的协议&#xff0c;路径&#xff0c;查询字符串和片段ID都以它自身为准&#xff0c;但…

再见了古诺。 你好Drools工作台。

Drools 6.0发生了许多变化。 随着功能和功能的变化&#xff0c;我们对Guvnor github存储库进行了重组&#xff0c;以更好地反映我们的新架构。 历史上&#xff0c;Guvnor一直是Drools的Web应用程序。 它由Drools专用的编辑器&#xff0c;后端存储库和简化的资产管理系统组成。 …

接口聚合

1.设置pc ip 192.168.1.1 192.168.1.2 2.设置端口聚合&#xff08;两个交换机设置相同&#xff09; Switch(config)#inter range f 0/1-3 Switch(config-if-range)#channel-g 1 mode act Switch(config-if-range)#sw mode trunk Switch(config-if-range)#sw trunk allow vlan …

JAVA 框架-Spring

一.准备工作 1.下载spring工具插件&#xff0c;在STS官网找到与eclipse对应版本的下载链接地址&#xff0c;复制该地址打开eclipse里的Help菜单&#xff0c;选择Install new Software选项&#xff0c;将地址粘贴到work with输入框中&#xff0c;点击add按钮&#xff0c;此时Loc…

python while break try 无法中断_解码不能正常工作并且while循环不能正确中断python...

这是一个使用Python中的TCP套接字的文件传输应用程序。文件传输协议将包含一个名为ftps.py文件一个客户打电话来ftpc.py文件. 在文件传输应用程序将使用一个简单的协议。前4个字节(按网络字节顺序)将包含后续文件中的字节数。接下来的20个字节将包含文件的名称(假设名称可以容纳…

HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点

1 . 相对定位relative:顾名思义,相对定位是相对于自己的位置来进行偏移,如下图: 以盒子中心为基准,为每条边的正方向,例: 向右移动20px :  代码为left:20px;或者right:-20px; 向下移动20px : 代码为top:20px;或者bottom:-20px; 2 . 绝对定位:absolute 以其第一个定位的…

JMeter定制功能实现

JMeter提供了可在采样器中使用的功能。 在编写复杂的测试计划时&#xff0c;您会感到JMeter缺少某些方法。 您使用Beanshell脚本定义自己的自定义方法。 JMeter调用Beanshell解释器来运行脚本。 只要您不产生高负载&#xff08;大量线程&#xff09;&#xff0c;此方法就可以正…

vue安装

1、查看版本 npm -v cnpm -v 升级 npm cnpm install npm -g 2、cnpm install vue 3、全局安装 vue-cli cnpm install --global vue-cli 4、创建一个基于webpack模板的新项目 vue init webpack my-project 5、运行项目 cd my-project cnpm install cnpm run dev 6、报错 解决办…

BZOJ.4516.[SDOI2016]生成魔咒(后缀自动机 map)

题目链接 后缀数组做法见这。 直接SAMmap。对于每个节点其产生的不同子串数为len[i]-len[fa[i]]。 //15932kb 676ms #include <map> #include <cstdio> #include <cctype> #include <algorithm> //#define gc() getchar() #define MAXIN 1500000 #de…

python运行结果图_[宜配屋]听图阁

首先使用内置模块os.>>> import os>>> code os.system("pwd && sleep 2")# /User/zhipeng>>> print code# 0问题是 os.system 只能获取到结束状态使用内置模块 subprocess>>> import subprocess>>> subproces…

母函数

首先是4个重要的泰勒展开式 1. 2. 3.(e(-x)e(x))/21x^2/2!x^4/4!x^6/6!...... 4.(e(x)-e(-x))/2xx^3/3!x^5/5!x^7/7!...... 之后是两类母函数的应用 总体思路&#xff1a;利用&#xff08;x^ax^bx^c&#xff09;指数表示对某一物品取用的数量&#xff0c;系数表示方案数 1.普通…

JDK 7的算法和数据结构

在定期检查JDK中是否存在一种或另一种标准算法时&#xff0c;我决定进行这种索引。 有趣的是&#xff0c;为什么其中包含一些著名的数据结构或算法&#xff0c;而另一些却没有&#xff1f; 此调查的格式仅涉及JDK的算法和数据结构的关键特性和功能&#xff0c;所有详细信息和完…

如何在本地运行查看github上的开源项目

看中了一款很多星星的github的项目&#xff0c;想把这个项目拉到自己的电脑上运行查看项目效果&#xff0c;该怎么做&#xff1f;示例&#xff1a;我们今天要看的 github项目地址&#xff1a;https://github.com/lzxb/vue-cnode1.克隆项目&#xff1a; git clone [https://gith…

box-shadow技巧分享

box-shadow box-shadow在定义里是这么说的&#xff1a;"box-shadow 属性向框添加一个或多个阴影。" 是的&#xff0c;和他的名字一样&#xff0c;这个属性固然是用来制造阴影效果让页面更有立体感的。 语法&#xff1a; box-shadow: h-shadow v-shadow blur sprea…

puppet enc mysql_精通Puppet配置管理工具

目  录第1章 开始使用Puppet11.1 什么是Puppet11.1.1 部署21.1.2 配置语言和资源抽象层31.1.3 事务层51.2 选择正确的Puppet版本51.3 我能混用Puppet的版本吗61.4 安装Puppet71.4.1 在Red Hat企业版Linux和Fedora上面安装Puppet71.4.2 在Debian和Ubuntu上安装Puppe…

Web测试实践——每日例会记录12.31(1)

姓名 主要负责部分 完成情况 储志峰 刘伟清 阶段一&#xff0c;软件评测。对华科软院和计院的网站展开对比分析&#xff0c;主要体现在功能、界面等方面。描述网站的缺陷。 √ 吕尚维 阶段二&#xff0c;用户调研。对使用华科软院网站的某个用户展开调研&#xff0c;采访…

Spring JPA数据+休眠+ MySQL + Maven

在Spring MVC的帮助下开发Web应用程序意味着要创建几个逻辑架构层。 层之一是DAO&#xff08;存储库&#xff09;层。 它负责与数据库进行通信。 如果您至少开发了DAO层一次&#xff0c;则应该知道它涉及许多样板代码。 Spring Data本身就是与DAO相关的日常工作的一部分。 在帖…