CPU 缓存及磁盘调度算法

RH442 - 性能调优学习笔记(九)_RH442

cache hit:应用程序访问的数据在CPU cache 中命中的比率叫cache 命中率;

cache miss:cache 丢失率;

cache line fill:如果CPU 要调取的数据在缓存中没有,就从内存中读取,这叫cache 的填充;

当数据在CPU 中已经被处理完,将移动到内存中,由内存写入到硬盘,永久保存;

从CPU 移动数据到内存,有两种方式:

透写式:一对一   数据在cpu cache 中修改完,立即写入到内存中,保证可靠性,但性能差;

回写式:数据在cpu cache 中修改完后,并不立即写入到内存中,而是等待该数据被更新时,才写入到内存中,性能好,但牺牲一部分可靠性。

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_02

RH442 - 性能调优学习笔记(九)_RH442_03

现在的cpu 通常都有三级缓存,如果只有二级缓存,那么一级缓存是每个核私有的,二级缓存是共享的;如果有三级缓存,那么一级、二级缓存是每个核私有的,三级缓存是共享的。

一级缓存又分为数据区和指令区;

不同级别的缓存和内存的读写速度是不一样的,用单位:周期(cycles)来衡量,数字越小,速度越快。

由于一级缓存在核心内部,通常不会很大。

所有一个程序在运行的时候,尽量让数据在缓存中命中,速度是最优的,特别是高并发类型的应用,像数据库。

RH442 - 性能调优学习笔记(九)_RH442_04

如果在缓存区cache 丢失,就从内存中回填,一个核的多个线程之间数据是同步的。

RH442 - 性能调优学习笔记(九)_学习笔记_05

RH442 - 性能调优学习笔记(九)_RH442_06

RH442 - 性能调优学习笔记(九)_学习笔记_07

RH442 - 性能调优学习笔记(九)_学习笔记_08

两个程序,实现的结果是一样的,执行速度有差异,通过valgrind 工具测试缓存的命中率可以判断哪个程序更优。

RH442 - 性能调优学习笔记(九)_学习笔记_09

读预取功能:当读取一个IO 时,顺序读取该IO 连续的数量

智能预取:当遇到连续IO 时,预取数据,当遇到随机数据,则不预取

固定预取:固定预取一定的数据量

倍数预取:根据IO 大小,比如64K,按照64K 的倍数进行预取

不预取:明确数据随机时

cd /sys/block/vda/queue

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_10

RH442 - 性能调优学习笔记(九)_RH442_11

RH442 - 性能调优学习笔记(九)_学习笔记_12

cd /sys/block/vda/queue
cat scheduler

RH442 - 性能调优学习笔记(九)_学习笔记_13

被中括号括起来的,就是默认的磁盘IO 调度算法,deadline

如果你要调整算法:

RH442 - 性能调优学习笔记(九)_学习笔记_14

RH442 - 性能调优学习笔记(九)_学习笔记_15

不同的调度算法,它的调优参数是不一样的:

RH442 - 性能调优学习笔记(九)_RH442_16

如果你把调度算法调成none,它没有调优参数,连iosched 文件夹都不存在了:

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_17

先从默认的开始:

RH442 - 性能调优学习笔记(九)_学习笔记_18

RH442 - 性能调优学习笔记(九)_学习笔记_19

以上参数分别是:一次处理的io 请求数量、读过期时间(单位:毫秒)、写过期时间(单位:毫秒)

RH442 - 性能调优学习笔记(九)_RH442_20

RH442 - 性能调优学习笔记(九)_RH442_21

RH442 - 性能调优学习笔记(九)_RH442_22

yum -y install fio

RH442 - 性能调优学习笔记(九)_RH442_23

RH442 - 性能调优学习笔记(九)_学习笔记_24

RH442 - 性能调优学习笔记(九)_学习笔记_25

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_26

RH442 - 性能调优学习笔记(九)_RH442_27

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_28

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_29

RH442 - 性能调优学习笔记(九)_学习笔记_30

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_31

RH442 - 性能调优学习笔记(九)_CPU缓存及磁盘调度算法_32

RH442 - 性能调优学习笔记(九)_RH442_33

RH442 - 性能调优学习笔记(九)_RH442_34


持续更新中...