性能瓶颈:IO–>IO调度–>IO调度算法–>1楼到顶楼,再从零楼下来,效率高–>IO调度目标–>IO算法–>电梯算法–linux6和Linux7算法不一样–>linux6 单队列 Linux7 多队列
inux6:
试用于不同的环境和介质。
noop 适合闪存,noop
对数据库而言,用deadline算法,缓解IO压力。
deadline :确保一个用户请求能得到及时的响应,避免被饿死,两个队列,分别建立 R IO 写 IO, 读一个队列,写一个队列,读规定时间片500毫秒 写规定5S 这样子交替进行。防止NOOP和CFQ的缺点。
cfq: 为每个进程单独创建一个队列。需要一定的IO带宽。进程调度有优先级,IO也有优先级。优先级低的可能一直往后排。整个SAS盘吞吐量提高了,但是先来可能不被满足,优先级,被饿死。同步队列中的请求不足一个量,让队列空闲一下,处理其他队列的请求。
noop :数据库发出的请求,做一个简单的排序,FIFO,先进先出。先来,先处理,交给磁盘。倾向于 饿死读R 倾向于写W操作,读直接读,写是异步写。写的放进缓存,当缓存达到一定数量,往下提交,写IO请求,异步写。
读一般是同步读,读完一个读下一个。两个读操作间,可能会被写,写是异步写,是批量的,有可能写很多,然后读就一直等着。
linux7:
mq_deadline(deadline上的优化)
在deadline上做升级,优化。计时器,读和写的均衡。
bfq(cfq上的优化)
none(noop 上的优化)
查询当前磁盘算法,更换磁盘算法