壓測ESSD云盤性能的方法

發(fā)布時(shí)間:2024-02-07
建站服務(wù)器
這篇文章主要介紹壓測essd云盤性能的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
如何壓測 essd 云盤的性能
essd 云盤,又稱增強(qiáng)型(enhanced) ssd 云盤,是阿里云全新推出的超高性能的云盤產(chǎn)品。由于壓測云盤的性能時(shí),云盤本身以及壓測條件都起著重要的作用,因此本文提供了如何配置合適的條件壓測 essd 云盤性能的示例,并測試出 100 萬 iops。
警告:
測試裸盤可以獲得真實(shí)的塊存儲(chǔ)盤性能,但直接測試裸盤會(huì)破壞文件系統(tǒng)結(jié)構(gòu),請?jiān)跍y試前提前做好數(shù)據(jù)備,例如,創(chuàng)建磁盤快照。建議您只在新購無數(shù)據(jù)的 ecs 實(shí)例上使用工具測試塊存儲(chǔ)性能,避免造成數(shù)據(jù)丟失。
準(zhǔn)備工作
為了充分發(fā)揮出多核多并發(fā)的系統(tǒng)性能,壓測出 100 萬 iops 性能指標(biāo),您可以參閱以下建議測試 essd 云盤的性能。
鏡像推薦
您可以使用阿里云官方 鏡像 中高版本的 linux 鏡像版本。例如,centos 7.4/7.3/7.2 64 位和 aliyunlinux 17.1 64 位操作系統(tǒng)。由于對應(yīng)的驅(qū)動(dòng)還不夠完善,不推薦使用其他低版本的 linux 鏡像和 windows 鏡像。
工具推薦
您可以使用 fio 作為云盤性能標(biāo)準(zhǔn)的測試工具。
實(shí)例規(guī)格推薦
目前只有存儲(chǔ)增強(qiáng)型 g5se 實(shí)例規(guī)格族支持掛載 essd 云盤,您需要 申請 加入使用存儲(chǔ)增強(qiáng)型 g5se 實(shí)例規(guī)格族白名單。申請審核完成后,您便可以同時(shí)選購存儲(chǔ)增強(qiáng)型 g5se 實(shí)例規(guī)格族和 essd 云盤。
操作示例
以實(shí)例規(guī)格 ecs.g5se.18xlarge 為例,同時(shí) essd 云盤的設(shè)備名為 /dev/vdb,示范通過隨機(jī)寫(randwrite)測試 essd 云盤的性能。
遠(yuǎn)程連接 并登錄到 linux 實(shí)例。
運(yùn)行以下命令安裝 libaio 和 fio。
sudo yum install libaio –ysudo yum install libaio-devel –ysudo yum install fio -y運(yùn)行 cd /tmp 切換路徑。
運(yùn)行 vim test100w.sh 新建腳本文件,并粘貼以下內(nèi)容,腳本為隨機(jī)寫 randwrite iops 性能測試示例。
function runfio{ numjobs=$1 # 實(shí)例中的測試線程數(shù),如示例中的 8 iodepth=$2 # 同時(shí)發(fā)出i/o數(shù)的上限,如示例中的 64 bs=$3 # 單次i/o的塊文件大小,如示例中的 4k rw=$4 # 測試時(shí)的讀寫策略,如示例中的 randwrite filename=$5 # 指定測試文件的名稱,如示例中的 /dev/vdb nr_cpus=`cat /proc/cpuinfo |grep "processor" |wc -l` if [ $nr_cpus -lt $numjobs ];then echo "numjobs is more than cpu cores, exit!" exit -1 fi let nu=$numjobs 1 cpulist="" for ((i=1;i<10;i )) do list=`cat /sys/block/vdb/mq/*/cpu_list | awk '{if(i<=nf) print $i;}' i="$i" | tr -d ',' | tr '\\\\n' ','` if [ -z $list ];then break fi cpulist=${cpulist}${list} done spincpu=`echo $cpulist | cut -d ',' -f 2-${nu}` echo $spincpu fio --ioengine=libaio --runtime=30s --numjobs=${numjobs} --iodepth=${iodepth} --bs=${bs} --rw=${rw} --filename=${filename} --time_based=1 --direct=1 --name=test --group_reporting --cpus_allowed=$spincpu --cpus_allowed_policy=split}echo 2 > /sys/block/vdb/queue/rq_affinitysleep 5runfio 8 64 '4k' 'randwrite' '/dev/vdb'注意:
因測試環(huán)境而異,腳本中您需要修改的命令行有:
命令行 list=cat /sys/block/vdb/mq/*/cpu_list | awk '{if(i<=nf) print $i;}' i="$i" | tr -d ',' | tr '\\\\n' ',' 中的 vdb。
命令行 runfio 8 64 '4k' 'randwrite' '/dev/vdb' 中的 8、64、4k、randwrite 和 /dev/vdb。
直接測試裸盤會(huì)破壞文件系統(tǒng)結(jié)構(gòu),如果云盤上的數(shù)據(jù)丟失不影響業(yè)務(wù),可以設(shè)置 filename=[設(shè)備名,如本示例中的/dev/vdb]。否則,請?jiān)O(shè)置為 filename=[具體的文件路徑,比如/mnt/test.image]。
運(yùn)行 sh test100w.sh 開始測試 essd 云盤性能。
腳本解讀
塊設(shè)備參數(shù)
測試實(shí)例時(shí),腳本 test100w.sh 中的命令echo 2 > /sys/block/vdb/queue/rq_affinity 是將 ecs 實(shí)例中的塊設(shè)備中的參數(shù) rq_affinity 值修改為 2:
參數(shù) rq_affinity 的值為 1 時(shí),表示塊設(shè)備收到 i/o 完成(i/o completion)的事件時(shí),這個(gè) i/o 被發(fā)送回處理這個(gè) i/o 下發(fā)流程的 vcpu 所在 group 上處理。在多線程并發(fā)的情況下,i/o completion 就可能集中在某一個(gè) vcpu 上執(zhí)行,這樣會(huì)造成瓶頸,導(dǎo)致性能無法提升。
參數(shù) rq_affinity 的值為 2 時(shí),表示塊設(shè)備收到 i/o completion 的事件時(shí),這個(gè) i/o 會(huì)在當(dāng)初下發(fā)的 vcpu 上執(zhí)行。在多線程并發(fā)的情況下,就可以完全充分發(fā)揮各個(gè) vcpu 的性能。
綁定對應(yīng)的 vcpu
普通模式下,一個(gè)設(shè)備(device)只有一個(gè)請求列表(request-queue)。在多線程并發(fā)處理 i/o 的情況下,這個(gè)唯一的 request-queue 就是一個(gè)性能瓶頸點(diǎn)。
最新的多隊(duì)列(multi-queue)模式下,一個(gè)設(shè)備(device)可以擁有多個(gè)處理 i/o 的 request-queue,可以充分發(fā)揮后端存儲(chǔ)的性能。如果您有 4 個(gè) i/o 線程,您需要將 4 個(gè)線程分別綁定在不同的 request-queue 對應(yīng)的 cpu core 上,這樣就可以充分利用 multi-queue 提升性能。
為了充分發(fā)揮設(shè)備(device)的性能,需要將 i/o 線程分發(fā)到不同的 request-queue 上處理。腳本 test100w.sh 中通過 fio –ioengine=libaio –runtime=30s –numjobs=${numjobs} –iodepth=${iodepth} –bs=${bs} –rw=${rw} –filename=${filename} –time_based=1 –direct=1 –name=test –group_reporting –cpus_allowed=$spincpu –cpus_allowed_policy=split 分別將幾個(gè) jobs 綁定不同的 cpu core 上,其中 vd* 為您的云盤設(shè)備名,例如,/dev/vdb。
fio 提供了參數(shù) cpus_allowed 以及 cpus_allowed_policy 用來綁定 vcpu。以上命令一共運(yùn)行了幾個(gè) jobs,分別綁定在幾個(gè) cpu core上,分別對應(yīng)著不同的 queue_id。
關(guān)于如何查看 queue_id 綁定的 cpu_core_id,您可以:
運(yùn)行 ls /sys/block/vd*/mq/ 查看設(shè)備名為 vd* 云盤的 queue_id,例如 vdb。
運(yùn)行 cat /sys/block/vd*/mq/*/cpu_list 查看對應(yīng)設(shè)備名為 vd* 云盤的 queue_* 綁定到的 cpu_core_id。
以上是
上一個(gè):優(yōu)酷視頻里的廣告怎么屏蔽(優(yōu)酷如何取消廣告)
下一個(gè):辦理營業(yè)執(zhí)照歸哪里管

信偉慧誠國產(chǎn)?CST毛細(xì)吸水時(shí)間測試儀產(chǎn)品簡介
6款寶藏級(jí)office插件,你真的會(huì)高效率地使用它們嗎英文(office插件大全)
查網(wǎng)址的ip地址(如何查詢網(wǎng)址ip)
數(shù)控機(jī)床實(shí)際移動(dòng)距離與顯示的坐標(biāo)值不一致
魅藍(lán)2怎么分辨真假,如何分別魅族真假
風(fēng)華0402B562K500NT貼片電容
智能手環(huán)原理
股權(quán)轉(zhuǎn)讓本人可以不去嗎
廣州森林旅游節(jié)免費(fèi)開放啦 時(shí)間+地點(diǎn)+內(nèi)容
小米手機(jī)相機(jī)亮度太暗怎么調(diào)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos