前言
前面的几篇文章,我们依次分析了CPU、内存、三级缓存、硬盘的硬件参数和性能情况。
从程序员视角浅入浅出了解计算机硬件——概述
从程序员视角浅入浅出了解计算机硬件——CPU
从程序员视角浅入浅出了解计算机硬件——内存
从程序员视角浅入浅出了解计算机硬件——硬盘
从程序员视角浅入浅出了解计算机硬件——总结
CPU
CPU的关键性能参数包括:
- 核心数量:CPU中的处理单元数量,影响多任务处理能力。
- 主频:CPU的时钟频率,用于衡量每秒钟处理指令的速度。
- 缓存:包括L1、L2和L3缓存,用于临时存储数据,加快数据访问速度。
- 制程工艺:制程工艺的纳米数,通常表示了CPU的能效和性能。
- 指令集:CPU支持的指令集架构,如x86、ARM等,影响软件的兼容性和性能表现。
- 总线速度:CPU与其他组件通信的速度,影响整体系统的数据传输速度。
- 动态频率调整:CPU能否动态调整频率以节能或提升性能。
内存
内存的关键性能参数包括:
- 容量:内存模块存储数据的容量,通常以GB为单位。
- 速度:内存的工作频率,通常以MHz或MT/s为单位,影响数据传输速度。
- 时序:内存访问延迟,通常以CL值(CAS延迟)表示,影响内存响应速度。
- 标准:内存模块的标准,如DDR3、DDR4等,决定了内存的兼容性和性能表现。
- 通道数:内存模块的通道数量,影响内存的并行处理能力。
- ECC(错误校正码):内存是否支持ECC,用于检测和纠正内存中的错误。
- 散热设计:内存模块的散热解决方案,影响内存的稳定性和超频能力。
硬盘
硬盘的关键参数包括:
- 类型:常见的有机械硬盘(HDD)和固态硬盘(SSD)。
- 容量:硬盘可以存储的数据量,通常以GB或TB为单位。
- 转速:机械硬盘的盘片旋转速度,通常以每分钟转数(RPM)表示,影响数据读写速度。
- 接口:硬盘与主板或控制器连接的接口类型,如SATA、SAS、NVMe等。
- 协议:双方交换数据的规则,比如如何识别对方的身份、如何建立断开连接、编码解码方式,常见的协议有AHCI、NVMe、SCSI等。
- 总线:计算机设备里各个部件之间交换数据、传输电信号等的通道,这个通道每秒能传输的数据量就叫做带宽,常见的总线有SATA、PCIe、SAS等。
- 块大小:硬盘的数据传输块大小,通常以KB为单位,影响数据传输效率。
- 缓存大小:硬盘内置缓存的容量,用于临时存储数据,提高数据读写性能。
- 寿命/耐用性:固态硬盘的写入寿命,通常以TBW(Total Bytes Written)表示。
- 响应时间:硬盘的平均寻道时间或访问时间,影响数据读取速度。
性能金字塔
根据各个性能测试软件的测试结果,我们可以等到以下的性能金字塔:
总结
从图中我们可以直观的知道各个硬件的延迟情况,也侧面体现了各个硬件的响应时间。当我们发现代码有性能问题时,可以分析主要的性能瓶颈在哪,是CPU还是内存,或者是硬盘。根据性能的瓶颈不同,优化的策略不同。
- 瓶颈在CPU,则需要考虑如何提供代码的效率,减少CPU的计算量,如果单核达到瓶颈,则考虑能否使用多线程来优化。
- 瓶颈在内存,则需要判断是内存容量不够,还是延迟太高,内存不够可以通过加内存条扩容。如果是延迟太高,则需要换时序更低的内存。(总结就是要加钱)
- 瓶颈在硬盘,也就是IO操作过于频繁,这个时候考虑的方向有很多,如果是机械硬盘,则考虑是否可以换固态硬盘。但即使是固态硬盘,速度跟内存相比有100倍以上的差距,可以使用内存缓存,随机读写改为顺序读写。
加钱可以解决99%的问题,但只有对各个硬件的性能释放情况有充分的了解,才能避免把钱花在刀把上的情况。