欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    分享下關(guān)于linux磁盤I/0方面的優(yōu)化,中間插一個rac方面的報錯解決。


    文件系統(tǒng)優(yōu)化

    ** 動態(tài)調(diào)整請求隊列數(shù)來提高效率,默認請求隊列數(shù)為:128, 可配置512 **

    [root@bo queue]# cat /sys/block/sda/queue/nr_requests
    128
    

    ** read_ahead, 通過數(shù)據(jù)預(yù)讀并且記載到隨機訪問內(nèi)存方式提高磁盤讀操作,默認值 128,ceph配置:8192 **

    [root@bo queue]# cat /sys/block/sda/queue/read_ahead_kb
    128
    

    ** 關(guān)閉最后一次訪問文件(目錄)的時間戳 **

    例如:

    mount -t xfs -o defaults,noatime,nodiratime /dev/sda5 /data

    ** 大文件,大容量,大量文件數(shù)建議使用xfs文件系統(tǒng) **


    調(diào)整I/O調(diào)度算法

    磁盤IO調(diào)度算法

    [root@bo queue]# cat /sys/block/sda/queue/scheduler

    noop anticipatory deadline [cfq]

    centos6.x默認為cfq

    調(diào)整為deadline

    [root@bo queue]# echo deadline > /sys/block/sda/queue/scheduler

    [root@bo queue]# cat /sys/block/sda/queue/scheduler

    noop anticipatory [deadline] cfq

    PS:這里在用redhat6部署rac的時候如果沒配置會提示I/0 scheduler的警告,按上面配置就可以解決了。

    I/0 scheduler報錯

    多少個盤寫多少個

    ** I/O調(diào)度算法介紹 **

    CFQ(完全公平排隊I/O調(diào)度程序) 默認
     特點:
     CFQ試圖均勻地分布對I/O帶寬的訪問,避免進程被餓死并實現(xiàn)較低的延遲,是deadline和as調(diào)度器的折中.
     CFQ賦予I/O請求一個優(yōu)先級,而I/O優(yōu)先級請求獨立于進程優(yōu)先級,高優(yōu)先級的進程的讀寫不能自動地繼承高的I/O優(yōu)先級.
     工作原理:
     CFQ為每個進程/線程,單獨創(chuàng)建一個隊列來管理該進程所產(chǎn)生的請求,也就是說每個進程一個隊列,各隊列之間的調(diào)度使用時間片來調(diào)度,
     以此來保證每個進程都能被很好的分配到I/O帶寬.I/O調(diào)度器每次執(zhí)行一個進程的4次請求.
    NOOP(電梯式調(diào)度程序)
     特點:
     在Linux2.4或更早的版本的調(diào)度程序,那時只有這一種I/O調(diào)度算法.
     NOOP實現(xiàn)了一個簡單的FIFO隊列,它像電梯的工作主法一樣對I/O請求進行組織,當有一個新的請求到來時,它將請求合并到最近的請求之后,以此來保證請求同一介質(zhì).
     NOOP傾向餓死讀而利于寫.
     NOOP對于閃存設(shè)備,RAM,嵌入式系統(tǒng)是最好的選擇.
     電梯算法餓死讀請求的解釋:
     因為寫請求比讀請求更容易.
     寫請求通過文件系統(tǒng)cache,不需要等一次寫完成,就可以開始下一次寫操作,寫請求通過合并,堆積到I/O隊列中.
     讀請求需要等到它前面所有的讀操作完成,才能進行下一次讀操作.在讀操作之間有幾毫秒時間,而寫請求在這之間就到來,餓死了后面的讀請求.
    Deadline(截止時間調(diào)度程序)
     特點:
     通過時間以及硬盤區(qū)域進行分類,這個分類和合并要求類似于noop的調(diào)度程序.
     Deadline確保了在一個截止時間內(nèi)服務(wù)請求,這個截止時間是可調(diào)整的,而默認讀期限短于寫期限.這樣就防止了寫操作因為不能被讀取而餓死的現(xiàn)象.
     Deadline對數(shù)據(jù)庫環(huán)境(ORACLE RAC,MYSQL等)是最好的選擇.
    AS(預(yù)料I/O調(diào)度程序)
     特點:
     本質(zhì)上與Deadline一樣,但在最后一次讀操作后,要等待6ms,才能繼續(xù)進行對其它I/O請求進行調(diào)度.
     可以從應(yīng)用程序中預(yù)訂一個新的讀請求,改進讀操作的執(zhí)行,但以一些寫操作為代價.
     它會在每個6ms中插入新的I/O操作,而會將一些小寫入流合并成一個大寫入流,用寫入延時換取最大的寫入吞吐量.
     AS適合于寫入較多的環(huán)境,比如文件服務(wù)器
     AS對數(shù)據(jù)庫環(huán)境表現(xiàn)很差.
     ** I/O調(diào)度算法總結(jié) **
     Anticipatory I/O scheduler 適用于大多數(shù)環(huán)境,但不太合適數(shù)據(jù)庫應(yīng)用
     Deadline I/O scheduler 通常與Anticipatory相當,但更簡潔小巧,更適合于數(shù)據(jù)庫應(yīng)用, DATA/SAS盤
     CFQ I/O scheduler 為所有進程分配等量的帶寬,適合于桌面多任務(wù)及多媒體應(yīng)用,默認IO調(diào)度器
     NOOP I/O scheduler 適用于SSD盤,有RAID卡,做了READ的盤
    

    ** sysctl.conf針對磁盤優(yōu)化 **

    vm.swappiness=[0 - 10] 默認是60,太高了,如果是緩存服務(wù)器建議配置為0


    針對固態(tài)硬盤優(yōu)化

    1、關(guān)閉日志功能

    2、fstab里加掛載參數(shù)data=writeback

    3、啟用 TRIM 功能

    Linux內(nèi)核從2.6.33開始提供TRIM支持,所以先運行“uname -a”命令,查看自己的內(nèi)核版本,如果內(nèi)核版本低于2.6.33的,請先升級內(nèi)核。

    然后運行“hdparm -I /dev/sda”查看自己的硬盤支不支持TRIM技術(shù),如果支持,你會看到

    Data Set Management TRIM supported

    如果上面兩個條件都滿足了,就可以在fstab中添加discard來開啟TRIM功能,如:

    原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1

    改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 discard,defaults,errors=remount-ro 0 1


    上面是針對oracle RAC做的一些磁盤IO優(yōu)化,建議大家在虛擬機先測試一波,后面會分享更多關(guān)于devops和DBA方面內(nèi)容,感興趣的朋友可以關(guān)注下!!

    概述

    在磁盤測試中我們一般最關(guān)心的幾個指標分別為:iops(每秒執(zhí)行的IO次數(shù))、bw(帶寬,每秒的吞吐量)、lat(每次IO操作的延遲)。

    當每次IO操作的block較小時,如512bytes/4k/8k等,測試的主要是iops。

    當每次IO操作的block較大時,如256k/512k/1M等,測試的主要是bw。


    一、dd命令

    dd是linux自帶的磁盤讀寫工具,可用于測試順序讀寫。

    一般而言,磁盤讀寫有兩種方式:BufferIO、DirectIO,DirectIO可以更好的了解純磁盤讀寫的性能。

    1、語法

    語法格式

    dd [option]
    

    dd指令選項詳解

    if=file:輸入文件名,缺省為標準輸入
    of=file:輸出文件名,缺省為標準輸出
    ibs=bytes:一次讀入 bytes 個字節(jié)(即一個塊大小為 bytes 個字節(jié))
    obs=bytes:一次寫 bytes 個字節(jié)(即一個塊大小為 bytes 個字節(jié))
    bs=bytes:同時設(shè)置讀寫塊的大小為 bytes ,可代替 ibs 和 obs
    cbs=bytes:一次轉(zhuǎn)換 bytes 個字節(jié),即轉(zhuǎn)換緩沖區(qū)大小
    skip=blocks:從輸入文件開頭跳過 blocks 個塊后再開始復(fù)制
    seek=blocks:從輸出文件開頭跳過 blocks 個塊后再開始復(fù)制。(通常只有當輸出文件是磁盤或磁帶時才有效)
    count=blocks:僅拷貝 blocks 個塊,塊大小等于 ibs 指定的字節(jié)數(shù)
    conv=ASCII:把EBCDIC碼轉(zhuǎn)換為ASCIl碼。
    conv=ebcdic:把ASCIl碼轉(zhuǎn)換為EBCDIC碼。
    conv=ibm:把ASCIl碼轉(zhuǎn)換為alternate EBCDIC碼。
    conv=block:把變動位轉(zhuǎn)換成固定字符。
    conv=ublock:把固定位轉(zhuǎn)換成變動位。
    conv=ucase:把字母由小寫轉(zhuǎn)換為大寫。
    conv=lcase:把字母由大寫轉(zhuǎn)換為小寫。
    conv=notrunc:不截短輸出文件。
    conv=swab:交換每一對輸入字節(jié)。
    conv=noerror:出錯時不停止處理。
    conv=sync:把每個輸入記錄的大小都調(diào)到ibs的大小(用NUL填充)。
    

    FLAGS參數(shù)說明:

    append -append mode (makes sense only for output; conv=notrunc sug-gested)
    direct:讀寫數(shù)據(jù)采用直接IO方式;
    directory:讀寫失敗除非是directory;
    dsync:讀寫數(shù)據(jù)采用同步IO;
    sync:同上,但是針對是元數(shù)據(jù)
    fullblock:堆積滿block(accumulate full blocks of input )(iflag only);
    nonblock:讀寫數(shù)據(jù)采用非阻塞IO方式
    noatime:讀寫數(shù)據(jù)不更新訪問時間
    

    注意:指定數(shù)字的地方若以下列字符結(jié)尾乘以相應(yīng)的數(shù)字:b=512, c=1, k=1024, w=2, xm=number m,kB=1000,K=1024,MB=1000*1000,M=1024*1024,GB=1000*1000*1000,G=1024*1024*1024

    2、dd測試DirectIO

    iops——寫測試 dd if=/dev/zero of=./a.dat bs=8k count=1M oflag=direct
    iops——讀測試 dd if=./a.dat of=/dev/null bs=8k count=1M iflag=direct
    bw——寫測試 dd if=/dev/zero of=./a.dat bs=1M count=8k oflag=direct
    bw——讀測試 dd if=./a.dat of=/dev/null bs=1M count=8k iflag=direct
    

    3、 dd測試BufferIO

    BufferIO主要出現(xiàn)在一些大文件讀寫的場景,由于使用內(nèi)存做Cache所以讀寫性能上和DirectIO相比,通常會高很多,尤其是讀,所以這個場景下我們僅關(guān)心bw即可。

    用dd測試BufferIO的寫時,需要增加一個conv=fdatasync,使用該參數(shù),在完成所有讀寫后會調(diào)用一個sync確保數(shù)據(jù)全部刷到磁盤上(期間操作系統(tǒng)也有可能會主動flush),否則就是主要在測內(nèi)存讀寫了;

    另外還有一個參數(shù)是oflag=dsync,使用該參數(shù)也是走的BufferIO,但卻是會在每次IO操作后都執(zhí)行一個sync。

    通常conv=fdatasync更符合大文件讀寫的場景,所以這里以其作為參數(shù)進行測試。

    bw——寫測試 dd if=/dev/zero of=./a.dat bs=1M count=8k conv=fdatasync
    bw——讀測試 dd if=./a.dat of=/dev/null bs=1M count=8k
    


    二、 fio工具

    fio是專門用于測試磁盤IO的工具,與dd相比那是要強大非常多,它可以用于測試順序讀寫、隨機讀寫、順序混合讀寫、隨機混合讀寫,并且可以調(diào)整IO并發(fā)量,在測試完成后還會生成一份測試報告,相當給力。

    1、測試場景:

    100%隨機,100%讀, 4K

    fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k
    

    100%隨機,100%寫, 4K

    fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k
    

    100%順序,100%讀 ,4K

    fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k
    

    100%順序,100%寫 ,4K

    fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k
    

    100%隨機,70%讀,30%寫 4K

    fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k
    

    三、iozone

    IOzone is a filesystem benchmark tool. The benchmark generates and measures a variety of file operations. Iozone has been ported to many machines and runs under many operating systems.

    iozone是一個文件系統(tǒng)的benchmark工具,可以測試不同的操作系統(tǒng)中文件系統(tǒng)的讀寫性能。 可以測試 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等等不同的模式下的硬盤的性能。 測試的時候請注意,設(shè)置的測試文件的大小一定要大過你的內(nèi)存(最佳為內(nèi)存的兩倍大小),不然linux會給你的讀寫的內(nèi)容進行緩存。會使數(shù)值非常不真實。

    例子:

    iozone -i 0 -i 2 -Rc -a -q 500k -g 1m -n 100k -b test_result.xls
    

    參數(shù)說明如下:

    • -i 代表測試場景,0 代表運行順序?qū)憸y試,1代表運行隨機讀寫測試。還有很多場景可選,具體可見iozone -h說明
    • -R 代表生成Excel報告文件。
    • -c 代表每次讀寫測試完畢都發(fā)送關(guān)閉連接的命令,主要用于測試NFS系統(tǒng)。
    • -a 代表自動模式。
    • -q 代表最大的記錄大小。
    • -g 代表最大的文件大小。
    • -n 代表最小的文件大小。
    • -b 輸出的生成的Excel報告文件名字。

    生成報告如下:


    后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注一下~

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有