几句话说清楚21:Skylake微架构(Microarchitecture)剖析(6)

OOO Once More这里对OOO(Out-Of-Order)乱序执行再简单讲两句。深入乱序执行的难点不在于“不按指令顺序执行”,而是如何做到“按指令顺序退出”。 这里面的关键是,所有执行过的指令都先被“缓存”起来,并不把执行之后的结果真正写到寄存器或者内存里。从用户角度看,这个指令其实并没有被“执行”,因为它没有引起任何数据方面的变化。等到它可以确定是需要被执行的指令,并且它前面的指令...

Continue Reading →

在控制台水平滚动

在CLI下操作,很多时候会因为屏幕尺寸的原因导致格式化输出的字符变成一副惨不忍睹的样子。比如你在有很多CPU核的环境下打印cat /proc/interrupts的时候。 当然你可能有很多方式能够处理这种情形,比如使用awk或者重定向到某个文件再打开。 但要始终相信Linux总有更好的办法,不可能在如此常见的场景中留下没有人看管的尾巴。 经过一番尝试和搜索,终于发现一个最简单的方法: cat...

Continue Reading →

商业供稿1:消除虚拟化环境网络盲点

原载于云杉网络 www.yunshan.net 微信公众号 网络盲点是引起虚拟化环境中业务中断、服务质量下降以及遭受安全威胁的最主要原因。当公司或组织缺乏网络可见性,无法完全掌握其虚拟化环境中业务的网络运行情况时,将必然面临频繁的业务中断、客户投诉以及恶意攻击带来的损失。据Gartner预测,到2019年,实现适当的网络可见性和控制工具的60%的企业将减少三分之一的安全故障。 随着业务规模的...

Continue Reading →

几句话说清楚20:eBPF的机制

怎么出来的eBPF用Linux Kernel Module来做一个类比说明eBPF诞生的目的。 Kernel Module的主要目的就是让用户可以通过这种机制,实现对内核的“赋能”,动态添加一些内核本身不支持的功能,比如硬件的驱动能力,新的文件系统或是系统调用。当然也可以融合到现有的内核处理流程中,比如在netfilter的某个hook点中添加包处理方法等。 Kernel Module的优点...

Continue Reading →

几句话说清楚19:描述性能优化成果的正确姿势

从10秒到1秒周末了说点不硬的技术。 自从摩尔定律不那么好使了之后,人们才真正开始关注软件性能。各类开源或者商业产品也经常以性能提升XXX作为卖点宣传。如果在搜索引擎以“性能提升[9, 8, 7, 6]0%”为关键字搜索一下,能看到连篇累牍的精确匹配的信息。但这些信息本身却并不“精确”,甚至都不正确。 经常能看到的一个错误与下面这个简化的例子相似: 一辆汽车以前行驶100米需要10秒钟,新...

Continue Reading →

几句话说清楚18:PCIE带宽单位GT/s到Gbps转换方法

PCIE的表达方式PCIE使用GT/s这个单位表达自己的带宽,这并不是为了标新立异,而是为了更好(直接)地表达PCIE的工作方式。 原始的数据在采用PCIE总线传输的时候,需要重新编码。因为PCIE是一种串行总线所以总线时钟要嵌入在串行的数据里。为了保证数据接收方能够正确地还原出时钟,需要提供足够多的信号电位变化(Level Transitions),电位的高低其实代表的就是传输的比特(0或...

Continue Reading →

几句话说清楚17:用Makefile.am和configure.ac构建一个专业的Hello World

首先感谢GUN的良好教程,这里主要是做一点点加工。 GNU Autotool现在写开源项目,如果只提供一个Makefile可能会令别人怀疑你项目的专业程度:D虽然其实并没有什么关系,但看着别的项目目录下面的configure, configure.ac, Makefile.in, Makefile.am, aclocal.m4等文件还是会觉得有必要也用这些东西“装点”一下。 这些文件其实都是...

Continue Reading →

几句话说清楚16:如何构建零干扰CPU Benchmark环境

CPU性能测试对环境的要求即便是硬件配置完全一样,操作系统相同,工作负载也相同的硬件平台,性能测试的结果也可能会因为各项配置的不同出现较大出入。 除了硬件的Hyper Thread/Turbo等特性之外,OS对进程的调度、中断等等也可能会产生影响。当然如果你要测试的工作负载还要和网络、存储交互的话,那么就还需要把他们放在一起综合考虑。 这里的讨论只限于Linux系统。 几种手段识别系统架构先...

Continue Reading →

测来测去7:筛法求素数Loop Unrolling性能优化实例

筛法求素数最近拿到一段筛法求素数的代码,希望能够在不改变原有算法的基础上提高性能。 关于筛法求素数的算法,网络上有很多介绍。算法之间的效率存在差异,但我们的重点不在这里,而是如何在不改动现有算法的前提下提升性能。 关于不同筛法算法可以参见这里,这段程序里使用的是埃拉托斯特尼筛法。 核心代码段: 12345678910111213count = 0; for (i=2; i <= 8...

Continue Reading →

© 2020 DecodeZ All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero