性能测试20--Analysis -- 内存与硬盘

上一节课给大家讲了内存和硬盘的比例,还有速度的差别,我们继续来补充一下演示,这个演示相对简单,直接打开一个工具,直接看一下内存和硬盘的速度是多少就可以了,我们直接利用一个工具叫做 EVEREST ,我们就简单测试一下内存和硬盘的速度是

怎么样的,打开软件,点击内存的读取,点击刷新

针对硬盘,我们工具底下有一个磁盘测试,


稍微有点问题后续修改



我们看一下随机读,随机读对硬盘的要求更高一点,因为他的寻址更频繁,那么直接开始,注意这里的 block size 是  4 kb,

这个对硬盘的读写速度要求更高,相当于读取的读取的文件都是 4K 大小的,速度所以会很慢,30多兆 ,大概先有个印象,我们先停止,我们把block size 设置成大一点的,我们设置成 1 M ,我们来看看结果又是怎样的,现在是 200 多兆,每一次读取的文件是一整块一整块的,每次读取的大一点,寻址的频率就低一点,这个速度会很快 200 多兆,这边是 5 G ,而且测试的固态硬盘,所以他会很快,如果是传统的硬盘基本上就是 60-80 m 的样子,如果是传统硬盘读取 4 KB 的话,我们固态硬盘的随机读是 30 多兆,这是很理想的状况,传统的机械硬盘读取 4KB 的话,速度可能就 1-2M ,很慢很慢,关于固态硬盘和机械硬盘的工作原理大家有必要去学习一下,有必要去了解一下,毕竟我们进行性能测试,对硬件是需要了解的,我们现在就能够直观的看到差别所在,就是内存和硬盘的读取速度,他们到底差别有多大,理解了这个,我们才能够理解为什么我们会想方设法利用好内存资源,尽量减少对硬盘的读写,减少与硬盘的交换,包括我们自己开发的系统,也一定要注意利用好内存,要把内存用到极致,而且如果我们的硬盘的读写频率太高,他对硬盘的损伤会很大,而内存不存在这个问题,因为内存随机的读写的机制无所谓很快,而且也不会对内存条有什么损伤,这种机械硬盘,特别是传统的磁道寻址的机械硬盘,写的次数太多了,或者寻址的次数太多了,他对硬盘的损伤都是很大的,包括现在的固态硬盘也是有这个问题,写的次数过多对控制器和盘片都会有一定的影响,所以我们利用好内存,利用好缓存就可以减少应用程序直接调用硬盘读写的操作,把一些东西一批辆的放在里面,然后一次性的写在硬盘上,不过好在硬盘也有自己的缓存,假设我们的应用程序每次 1M 的写,但是硬盘并不会忠诚的你让我写 1 M 我就会写 1 M ,而是他也利用自己的缓存机制,他会先把你让他写的东西缓存起来,然后到达一定程度在统一写到硬盘中,所以要考察一个硬盘的性能,除了寻址速度,除了转速,容量,很重要的一个指标就是缓存,其实包括 CPU 性能也是同样的,对一个 CPU 来说考察时钟频率、内核数量、还有一级缓存、二级缓存、三级缓存的大小,越大处理性能就越好,如果这些缓存越大意味着什么?因为 CPU 之前是直接跟内存交换数据的,现在相对于内存来说,CPU 的缓存的速度要远远的高于内存的速度,如果说我们在 CPU 和 内存之间加了缓存,相当于 CPU 不会跟内存进行交换数据了,(之前应用程序会放在内存里面,CPU  处理完的数据,CPU 暂时跟内存打交道),内存会把需要交换的数据放在缓存当中,缓存再去跟 CPU 打交道,所以 CPU 一直是高高在上的,不是那个人我话都不跟你讲,这样一级一级把数据存起来就可以提升性能,如果每一次我都这样提交,对于 CPU 来说,内存你好慢啊,每次从你内存拿东西太慢了,我很顺手的就从缓存这里拿,无论怎么拿,我一级缓存只和二级缓存交换数据,二级缓存只和内存交换数据,有了这个机制我们就能够感觉到每个硬件都是很忙的,而且都是可以从她的旁边拿到任务来做了,就是这么一个概念,如果是再把 CPU直接和硬盘进行数据交互,那这个系统就没有办法想象了,

    现在一个机械硬盘的缓存大小差不多是 16 M 、32 M 是主流,因为缓存比较贵,所以不会弄的很大,也有一些机械缓存达到 64 M ,但是一个固态硬盘的缓存就会达到 512 M 、1 G ,固态硬盘的容量可能就 256 G、 512 G ,但是缓存相比较传统的机械硬盘要大的多,这也是为了提升性能,好,理解一些这个缓存的作用,对于缓存我给大家提一点,在进行系统级别的调优的时候,重点利用缓存,针对某个具体的应用系统,一定要把缓存的机制利用起来,包括数据库也是一样的,数据库的缓存我们好好去利用,可以提升不少的性能,比如说 sql server 的数据库还有 oracle 他们都是可以配置内核参数的,这些内核参数配置好了对于性能的提升是很直观的,很直接的,我们马上可以看到效果的,实际上,性能的优化处理系统层面的优化还有代码层面的优化,比如针对一个 sql 语句我们也有很多优化的标准,比如说少用一些聚合函数,一定把索引用好,等等这些都是一些更细化的性能优化的方式了,这种我们称为,代码级性能优化,比如说 sql 语句、算法本身,而算法的优化的原则也是用好内存减少计算,我们就需要知道内存工作的原理,我们能花一次运算完成的不要用10次 就是算法的减少计算,运算次数决定了 CPU 的消耗,内存利用率决定了资源占用等等,作为一个程序员,高手和菜鸟的区别不在于能不能实现功能,在于更底层的性能的优化,和运算速度的关注,菜鸟可能就是用很烂的代码把这个功能实现而已,但是这个代码可能要话很长的时间才能执行完,高手可能用很简捷的代码把这个功能实现的很高效,所以我们了解一下这些基本的原理,   这是后端性能分析的标准的一点点,这是重要的一点点,很少的一部分做讲解,大家可以慢慢的积累,把这些问题讲明白了,后面没有什么难题你解决不了的,就是说你可以找到解决问题的正确的方向,就是前期你经验比较少,时间稍微长一点,我们想通过这几节课的介绍我们有清晰的思路,这是我们基本共的锻炼,到后面我们遇到问题了,方向保证是正确的,整个对于,系统后端的性能的分析和使用我们就说到这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值