计算机性能
Gaodes
成功来自点滴的坚持
展开
-
CPU的了解
CPU内存缓存:为了提高内存I/O性能,处理器提供好了多种硬件缓存。缓存的大小关系,越小则速度越快(一种权衡),并且越靠近CPU。缓存的存在与否,以及是在处理器里(集成)还是在处理器外,取决于处理器的类型。CPU运行队列:对于多处理器系统,内核通常为每个CPU提高了一个运行队列,并尽量使得线程每次都被放到一个队列里面。这意味着线程有可能在同一个CPU上运行,因为CPU缓存里保存了他们的数据。时钟频率:时钟是一个驱动所有处理器的数字信号,每个CPU指令都可能花费一个或者多个时钟周期。有些处理器可以原创 2020-10-18 16:40:08 · 153 阅读 · 0 评论 -
应用程序方法与分析
应用程序性能方法:线程状态分析,CPU分析,系统调用分析,I/O分析,工作负载特征归纳,USE方法,向下挖掘分析法,锁分析,静态性能调优。线程状态分析:目的是分辨应用程序线程的时间用在了什么地方,这能用来很快地解决某些问题,并给其他问题的研究指明方向。通常将应用程序的时间分成几个具有实际意义的状态。线程通常分为两个状态on-CPU和off-CPU。系统调用分析:有时候为了让线程状态分析更加实用,会基于系统调用的执行来研究下面的状态。执行:CPU上的用户模式。系统调用:系统调用的时间。工作负载特征原创 2020-10-18 16:32:12 · 443 阅读 · 0 评论 -
编程语言
编程语言可能是编译的或是解释的,也有可能是通过虚拟机执行的。许多语言都将“性能优化”作为一个特性,但是严格来讲,这个特性是执行该语言的特性,而不是语言的本身。比如,Java HotSpot虚拟机软件就是用所包含的JIT编译器来动态提高性能的。编译语言:编译在运行之前将程序生成机器指令,保存在二进制可执行文件里。这些文件可以在任何时间运行,无需再编译。编译语言C/C++,还有些语言既有解释器也有编译器。编译过的代码总体来说是高性能的,在被CPU执行之前不需要进一步转换。解释语言:解释语言程序的执行时将原创 2020-10-18 16:23:02 · 121 阅读 · 0 评论 -
应用程序
应用程序可以通过这些资源来理解:操作,CPU模式,配置,指标,日志,版本,BUGS,社区,书,专家。应用程序的性能,需要从应用程序实现的目标入手,目标可能有:延时,吞吐量,资源使用率。延时:低应用程序的程序响应时间。吞吐量:高应用程序操作率或者数据传输率。资源使用率:对于给定应用程序工作负载,高效地使用资源。提高应用程序性能的常用技术:选择I/O大小,缓存,缓冲区,轮询,并发,并行,非阻塞I/O和处理器绑定。...原创 2020-10-18 16:07:31 · 865 阅读 · 1 评论 -
系统性能(八)
统计:理解如何统计并且了解统计的局限性是很重要的。量化性能:要比较问题和对于问题排优先级,需要对问题和问题修复后所带来的性能的潜在提升做量化。用于观测:1.选择可靠的指标 2.估计解决的问题带来的性能效益监视:系统性能监视记录一段时间内的性能统计数据,过去的记录可以和现在的做比较,这样能够找出基于时间的使用规律。可视化:可视化指的是用看得见的方式来对数据做检查。通常用于检查一段时间的性能指标,X轴上的标记显示的是时间。热图:热图通过把X和Y轴的区域进行分组量化,能够解决散点图的扩展问题,原创 2020-06-14 18:43:23 · 185 阅读 · 0 评论 -
系统性能(七)
容量规划:该方法是指研究在负载之下会成为系统瓶颈的资源:1.测量服务器请求的频率,并监视请求频率随时间的变化。2.策略可硬件和软件的使用。监视使用率随时间的变化。3.用资源的使用来表示服务器的请求情况。4.根据每个资源来推断服务器请求的极限。对于未来的系统,可以用微基准测试或者负载生成工具在测试环境里仿真要施加的请求:硬件:CPU使用率,内存使用,磁盘IOPS,磁盘吞吐量,网络吞吐量软件:虚拟内存使用情况,进程/任务/线程,文件描述符...原创 2020-06-14 18:35:52 · 163 阅读 · 0 评论 -
系统性能(六)
Amdahl扩展规律:由计算机架构师Gene Amdahl的名字进行命名,该定律对系统的扩展性进行建模,所考虑的是串行构成的不能执行的工作负载。这个定律可以用于cpu,线程,工作负载等更多事务的扩展性研究。Amdahl扩展定律认为早期的扩展特性是竞争,主要是对串行的资源或工作负载的竞争。可以描述成一个公式:C(N) = N/1 +a(N-1)容量是C(N),N是扩展的维度,如CPU的数目或者用户负载。Amdahl扩展定律的应用步骤:1.无论是观测现有的系统,还是实验性地使用微基准,或者用负载原创 2020-06-14 18:30:45 · 146 阅读 · 0 评论 -
系统性能(五)
建模:建立系统分析模型有很多的模型,特别是对一些可扩展型分析,研究当负载或者资源扩展时候性能会如何变化,这里的资源可以是硬件,如CPU的核心,也可以是软件,如进程或者线程。企业VS云:虽然建模可以让我们不用实际有一个大型的企业系统就可以对其进行仿真,但是大型的环境的性能常常是复杂。利用云技术,任意规模的环境都可以短期租用,用于基准测试。不用建立模型来预测性能,工作负载可以在不同的云上进行特征归纳,仿真,测试。可视化识别:当通过实验收集到足够多的数据,就可以把它们绘制成性能规模变化的曲线,这样的曲线也原创 2020-06-14 18:14:17 · 209 阅读 · 0 评论 -
系统性能(四)
基础线统计:把当前的性能指标与之前的数值,对分析问题常常有启发作用。静态性能调整:静态性能调整使脚骨配置问题。在一些静态性能调整可能发现的问题:1.网络接口协商:选择100m而不是1G2.建立RAID池失败3.使用操作系统,应用程序或固件是旧的软件4.文件系统记录的尺寸和工作负载I/O的尺寸不一致5.文件系统记录的尺寸和工作负载I/O的尺寸不一致6.服务器意外配置了路由7.服务器使用的资源,诸如认证,来自远端的数据中心,而不是本地缓存调优:1.缓存的大小尽量和栈的原创 2020-05-23 17:38:58 · 204 阅读 · 0 评论 -
系统性能(三)
性能分析有两个视角1)负载分析:对系统软件栈自上而下的分析适用负载分析的对象:请求:所施加的工作负载延时:应用程序的响应时间完成度:查找错误2)资源分析:自低向上的分析适合资源分析的指标:IOPS,吞吐量,使用率,饱和率方法:街灯讹方法,随机变动讹方法,Ad Hoc核对清单法,问题陈述法,科学法,延时分析,R方法,事件跟踪...原创 2020-05-23 17:30:10 · 222 阅读 · 0 评论 -
系统性能(二)
1)使用率术语“使用率”常用于操作系统描述设备,诸如CPU和磁盘设备。2)饱和度随着工作量的增加而对资源的请求超过资源所能处理的程度叫做饱和度。3)剖析剖析的本意是指对目标对象绘图以用于研究和理解。4)缓存缓存被频繁用来提高性能。一般使用的是多层缓存,cpu利用多层的硬件作为主缓存。一个了解缓存性能的重要指标就是每个缓存的命中率,另外一个就是缓存的失效率。这两个直接影响缓存是否能够提供性能。5)算法缓存管理算法和策略来决定在有限的缓存空间存放哪些数据。MRU(最近原创 2020-05-23 17:10:57 · 229 阅读 · 0 评论 -
系统性能(一)
系统性能一些常用名词:1)延时:延时是指操作执行之前所花的等待时间。响应时间是包括连接延时和数据传输时间。例如网站的载入时间从不同点测得的不同时间组成:DNS延时,TCP连接延时和TCP数据传输时间。2)应用程序性能差通常是因为软件配置和硬件的问题,也就是架构问题。负载的问题可能会使一个多线程程序在所有cpu上忙碌,但是请求都在排队的情况。3)拓展性CPU接近100%使用率的时候,由于CPU的调度延时添加,性能开始下降。4)指标性能指标是由系统,应用程序,或者其他工具产生原创 2020-05-23 16:51:44 · 1276 阅读 · 0 评论