温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

《Tuning I/O Performance》读后笔记

发布时间:2020-08-15 15:39:20 来源:网络 阅读:781 作者:W小五 栏目:移动开发

《Tuning I/O Performance》,文章地址:http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.io.html


大家在读了原文后若有更好的见解,请不吝赐教,谢谢!


    文章以SUSE Linux Enterprise Server为例讲解了Linux系统的IO调度策略及调优,可适应于其他Linux操作系统,如CentOS、UBUNTU等。

    1、查看当前IO调度策略(大多数Linux发行版的默认策略是CFQ)

         命令:cat /sys/block/sda/queue/scheduler

         结果:noop anticipatory deadline [cfq]   #CentOS系统,可知可用的调度策略和当前调度策略,[]中的为当前系统采用的调度策略

    2、更改当前调度策略

         a、在系统启动时加入elevator=SCHEDULER 的内核参数

         b、直接修改内核参数:echo SCHEDULER > /sys/block/DEVICE/queue/scheduler

    3、策略调优

         各个策略均有参数可以调优,参数路径大致相同,在 /sys/block/DEVICE/queue/iosched/目录下

         命令:echo VALUE > /sys/block/DEVICE/queue/iosched/TUNABLE

     4、各主要策略调优

          a、CFQ(Completely Fair Queuing)

               i、CFQ是一个公平的算法,每个线程都有一个时间片来提交I/O请求,不同的任务也可以分配不同的I/O优先级(man 1 ionice)

               ii、可调优的参数

                   /sys/block/<device>/queue/iosched/slice_idle

                      #就算一个任务当前没有I/O请求了,采用此策略仍然会等待一段时间才切换到下一个线程。

                      #针对 SSDs、多磁盘SAN等当前磁道位置(不用额外花费时间寻址)不是特别重要的,只可以把此参数设置为0可以明显提高吞吐量。
                  

                  /sys/block/<device>/queue/iosched/quantum
                      #限制设备同时处理的请求数量,默认值是4
                      #调高此值虽然可以提高性能,但因为并发处理量增多了,可能会增加某些I/O的延时

                      #所以可调整/sys/block/<device>/queue/iosched/slice_async_rq(默认是2,限制同一时间片的异步写请求数量)


                 /sys/block/<device>/queue/iosched/low_latency
                      #对I/O延迟要求非常高的负载环境中,可以将此值设置为1会好一些


          b、NOOP

               i、它是一种非常普通的调度策略,有I/O请求时它就处理,它可以用来检测其它调度算法在复杂I/O环境下是否引起了I/O性能。

               ii、有自身的的调度算法的设备,如智能存储设备、SSDs等,虽然一般情况下DEADLINE更适合这些设备,但在较低负载下它的性能可能会更好。

      

          c、DEADLINE

               i、DEADLINE是为降低延时而设计的,每个I/O请求分配了一个结束时间,超时后便会暂存到队列(读和写两个队列)中,当没有超时的请求时再处理这些队                    列里的请求,这个算法对读的好处大于写。

               ii、在并发读写及优先级不是非常重要的情况下,此调试要比CFQ策略性能好许多。

               iii、调优参数

                    /sys/block/<device>/queue/iosched/writes_starved  

                      #控制在多少个读请求后可以处理一个写请求,设置为3表示处理3个请求后可以处理一个写请求


                    /sys/block/<device>/queue/iosched/read_expire
                       #以毫秒为单位,默认值是500,设置读操作的超时时间(当前时间往后推read_expire值便是超时的时间点)

                    /sys/block/<device>/queue/iosched/write_expire
                       #同上,控制写请求超时时间


     5、I/O Barrier调优

         Write Barriers 是一种内核机制,可以保证文件系统元数据正确有序地写入持久化存储,哪怕持久化存储掉电的情况也能保证。大多数文件系统(XFS、ext3、ext4、reiserfs)在fsync或事务提交的时候便会触发 Write Barriers 。可在有备用电池的磁盘关闭 Write Barriers 来提高性能。

        可在ext3、ext4、reiserfs文件系统挂载时加上barrier=0的选项,XFS挂载时使用nobarrier选项。        


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI