必须要记住的几个关键性能参数

2023-11-01 13:59

本文主要是介绍必须要记住的几个关键性能参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

一秒钟是 1000 毫秒(ms),一毫秒是 1000 微秒(us),一微秒是 1000 纳秒(ns)。

 

存储

对所有的存储来说,有三个基本的性能指标。

IO 读写延迟。一般是用 4KB 大小的 IO 做基准来测试;

IO 带宽,一般是针对比较大的 IO 而言;

IOPS,就是每秒钟可以读写多少个小的随机 IO。

下面这个表格列出了几种存储介质和它们的性能数值。

CPU 和内存相关

 

说起 CPU 相关的性能数字,就必须先说 CPU 的时钟频率,也就是主频。主频反映了 CPU 工作节拍,也就直接决定了 CPU 周期大小。主频和周期大小。

比如基于英特尔 Skylake 微处理器架构的 i7 的一款,其主频为 4GHz,那么每一个时钟周期(Cycle)大约0.25 纳秒(ns)。

CPU 运行程序时,最基本的执行单位是指令。而每一条指令的执行都需要经过四步:指令获取、指令解码、指令执行、数据存入。这些操作都是按照 CPU 周期来进行的,一般需要好几个周期。

CPI(cycles per instruction)衡量平均每条指令的平均时钟周期个数。它的反面是 IPC(instructions per cycle)。虽然一个指令的执行过程需要多个周期,但 IPC 是可以大于 1 的,因为现代 CPU 都采用流水线结构。一般来讲,测量应用程序运行时的 IPC,如果低于 1,这个运行的系统性能就不是太好,需要做些优化来提高 IPC。

 

MIPS 就是每秒执行的百万指令数。

MIPS 越高,CPU 性能越高。MIPS 可以通过主频和 IPC 相乘得到,也就是说 MIPS= 主频×IPC。这个很容易理解,比如一个 CPU 频率再高,IPC 是 0 的话,性能就是 0。假设一个 CPU 的主频是 4GHz,IPC 是 1,那么这个 CPU 的 MIPS 就是 4000。注意的是,MIPS 是理论值,实际运行环境数量一般小于这个值。

 

CPU 缓存,一般 CPU 都有几级缓存,分别称为 L1、L2、L3,按这个顺序越来越慢,也越来越大,当然成本也越来越低。L3 有时候也称为 LLC(Last Level Cache),因为 L3 经常是最后一级缓存。多核 CPU 的情况下,一般 L1 和 L2 在核上,而 L3 是各个核共享的。

 

 

下面的表格来表示一款 2GHz 主频的 CPU,进行寄存器和缓存访问的一般延迟,分别用时钟周期数和绝对时间来表示,同时也给出在每个 CPU 核上面的字节大小。

 

现在的 NUMA(非统一内存访问,Non-Uniform Memory Access)处理器会有本地和远端内存的区别,当访问本地节点的内存是会快一些。

 

操作系统和应用程序相关

1. 指令分支延迟

CPU 需要先获取指令,然后才能执行。获取下一条指令时需要知道指令地址,如果这个地址需要根据现有的指令计算结果才能决定,那么就构成了指令分支。CPU 通常会采取提前提取指令这项优化来提高性能,但是如果是指令分支,那么就可能预测错误,预先提取的指令分支并没有被执行。指令分支判断错误(Branch Mispredict)的时间代价是很昂贵的。如果判断预测正确,可能只需要一个时钟周期;如果判断错误,就需要十几个时钟周期来重新提取指令,这个延迟一般在 10 纳秒左右。

2. 互斥加锁和解锁

互斥锁 Mutex(也叫 Lock)是在多线程中用来同步的,可以保证没有两个线程同时运行在受保护的关键区域。使用互斥锁的时候需要加锁和解锁,都是时间很昂贵的操作,每个操作一般需要几十个时钟周期,10 纳秒以上。

3. 上下文切换 [耗时最多]

多个进程或线程共享 CPU 的时候,就需要经常做上下文切换(Context switch)。这种切换在 CPU 时间和缓存上都很大代价;尤其是进程切换。在时间上,上下文切换可能需要几千个时钟周期,1 微秒(1us)级别。在缓存代价上,多级 CPU 缓存和 TLB 缓存都需要恢复,所以可能极大地降低程序线程和进程性能。

 

网络相关

互联网服务最终是要面向终端客户的,客户和服务器的延迟对用户的服务体验至关重要。

网络的传输延迟是和地理距离相关的。网络的吞吐量又和网卡和交换机等设备相关.

 

网络信号传递速度不可能超过光速,一般光纤中速度是每毫秒 200 公里左右

如果考虑往返时间(RTT,Round Trip Time),那么可以大致说每 100 公里就需要一毫秒

北京到深圳约 2,000 公里,RTT 就是 20 毫秒

上海到乌鲁木齐或者美国的东西海岸之间距离差不多 4,000 公里,所以 RTT 是 40 毫秒左右;

中国到美国(比如北京到美国西海岸旧金山)差不多 10,000 公里,RTT 就是 100 毫秒。

 

 

 

不同的网卡传输速度不同. 所以我们还需要考虑一下网卡的传输性能

 

 

 

千兆网络,所以机器之间的传输就是1000M,换成字节就是110MB/s . 

不少公司的网络都是千兆网络,所以网络会是瓶颈,尤其是在做数据密集型传输&计算的时候. 

网卡性能跟不上,会拖垮/占用CPU , 影响硬盘的写入速度.

毕竟网络阻塞等因素会影响到CPU的资源和磁盘的写入读取的效率.

 

万兆网络根据网卡和交换机的差别,这个数字我测试整理整理在发出来. 不敢乱说.....
 

 

 

 

 

 

参考

性能工程高手课        - 庄振运

 

 

 

 

 

 

这篇关于必须要记住的几个关键性能参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323494

相关文章

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

Tomcat性能参数设置

转自:http://blog.csdn.net/chinadeng/article/details/6591542 Tomcat性能参数设置 2010 - 12 - 27 Tomcat性能参数设置 博客分类: Java Linux Tomcat 网络应用 多线程 Socket 默认参数不适合生产环境使用,因此需要修改一些参数   1、修改启动时内存参数、并指定J

Verybot的几个视频

1、Verybot的运动控制                 http://v.youku.com/v_show/id_XNjYxNjg4MTM2.html           2、Verybot比较初步的网络视频监控           http://v.youku.com/v_show/id_XNjYxNjkyMjg0.html           3、V

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

两轴直驱稳定云台的电源系统设计与关键要求

两轴直驱稳定云台,作为现代摄影、摄像及监控领域的高精尖设备,广泛应用于各种不稳定环境(如移动车辆、海上船只、空中飞机等),以提供相机、传感器等关键设备的稳定支持。其卓越的性能和可靠性,很大程度上依赖于其精心设计的电源系统。本文将对两轴直驱稳定云台的电源系统要求进行全面剖析,并深入探讨电压波动可能带来的不良影响及应对措施。 电源系统的核心要求 高容量与功率:

Java虚拟机垃圾回收的几个关键问题

20151008 GC的几个关键问题,触发条件,触发的机制 主线是数据的移动,从什么位置到什么位置,移动的条件是什么? 1 垃圾收集在什么时候触发? GC都是在带满了的时候触发的,每次触发都是把不会用的不可达的对象空间回收了,留下还在用的对象。 1) MinorGC的触发是伊甸园空间满的时候 2) FullGC的触发是在老年代满的时候 2 垃圾回收的时候做哪些工作? 1) 一个新的对象new出

[置顶] 你必须非常努力,才能看起来毫不费力!(愿与君共勉)

有一群人,他们积极自律,每天按计划行事,有条不紊;他们不张扬,把自己当成最卑微的小草,等待着人生开出花朵的那天。他们早晨5点多起来健身,你在睡觉;7点开始享受丰盛的早餐,蛋白质维生素淀粉粗纤维样样俱全,为新的一天起了一个好头,当他们收拾妥当准备开始一整天的工作时,你还在睡觉;          他们用上午的高效时间完成了一个又一个任务,甚至发现的新的商机,发现了有可能给人生带来改观的机遇

linux 使用ffpmeg 发现转化目标必须是一个路径

一直有个疑惑  就是使用ffpmeg转码时,源文件和目标文件到底可以传URL地址还是必须为路径    下面就将实验 请看如下代码: 当源文件为一个URL地址时 ,目录为地址时  转码不成功 /usr/local/ffmpeg/bin/ffmpeg --ss 00:00:00 -t 0.01 -i http://www.baidu.com/1.mp4 -y -q:v 2 -f image2 h