中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

壓測ESSD云盤性能的方法

發布時間:2020-08-28 11:42:33 來源:億速云 閱讀:222 作者:小新 欄目:建站服務器

這篇文章主要介紹壓測ESSD云盤性能的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

如何壓測 ESSD 云盤的性能

ESSD 云盤,又稱增強型(Enhanced) SSD 云盤,是阿里云全新推出的超高性能的云盤產品。由于壓測云盤的性能時,云盤本身以及壓測條件都起著重要的作用,因此本文提供了如何配置合適的條件壓測 ESSD 云盤性能的示例,并測試出 100 萬 IOPS。

警告:

測試裸盤可以獲得真實的塊存儲盤性能,但直接測試裸盤會破壞文件系統結構,請在測試前提前做好數據備,例如,創建磁盤快照。建議您只在新購無數據的 ECS 實例上使用工具測試塊存儲性能,避免造成數據丟失。

準備工作

為了充分發揮出多核多并發的系統性能,壓測出 100 萬 IOPS 性能指標,您可以參閱以下建議測試 ESSD 云盤的性能。

鏡像推薦

您可以使用阿里云官方 鏡像 中高版本的 Linux 鏡像版本。例如,CentOS 7.4/7.3/7.2 64 位和 AliyunLinux 17.1 64 位操作系統。由于對應的驅動還不夠完善,不推薦使用其他低版本的 Linux 鏡像和 Windows 鏡像。

工具推薦

您可以使用 FIO 作為云盤性能標準的測試工具。

實例規格推薦

目前只有存儲增強型 g5se 實例規格族支持掛載 ESSD 云盤,您需要 申請 加入使用存儲增強型 g5se 實例規格族白名單。申請審核完成后,您便可以同時選購存儲增強型 g5se 實例規格族和 ESSD 云盤。

操作示例

以實例規格 ecs.g5se.18xlarge 為例,同時 ESSD 云盤的設備名為 /dev/vdb,示范通過隨機寫(randwrite)測試 ESSD 云盤的性能。

遠程連接 并登錄到 Linux 實例。

運行以下命令安裝 libaio 和 FIO。

sudo yum install libaio –y
sudo yum install libaio-devel –y
sudo yum install fio -y

運行 cd /tmp 切換路徑。

運行 vim test100w.sh 新建腳本文件,并粘貼以下內容,腳本為隨機寫 randwrite IOPS 性能測試示例。

function RunFio
{
 numjobs=$1  # 實例中的測試線程數,如示例中的 8
 iodepth=$2  # 同時發出I/O數的上限,如示例中的 64
 bs=$3       # 單次I/O的塊文件大小,如示例中的 4K
 rw=$4       # 測試時的讀寫策略,如示例中的 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_affinity
sleep 5
RunFio 8 64 '4k' 'randwrite' '/dev/vdb'

注意:

因測試環境而異,腳本中您需要修改的命令行有:

命令行 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。

直接測試裸盤會破壞文件系統結構,如果云盤上的數據丟失不影響業務,可以設置 filename=[設備名,如本示例中的/dev/vdb]。否則,請設置為 filename=[具體的文件路徑,比如/mnt/test.image]。

運行 sh test100w.sh 開始測試 ESSD 云盤性能。

壓測ESSD云盤性能的方法

腳本解讀

塊設備參數

測試實例時,腳本 test100w.sh 中的命令echo 2 > /sys/block/vdb/queue/rq_affinity 是將 ECS 實例中的塊設備中的參數 rq_affinity 值修改為 2:

參數 rq_affinity 的值為 1 時,表示塊設備收到 I/O 完成(I/O Completion)的事件時,這個 I/O 被發送回處理這個 I/O 下發流程的 vCPU 所在 Group 上處理。在多線程并發的情況下,I/O Completion 就可能集中在某一個 vCPU 上執行,這樣會造成瓶頸,導致性能無法提升。

參數 rq_affinity 的值為 2 時,表示塊設備收到 I/O Completion 的事件時,這個 I/O 會在當初下發的 vCPU 上執行。在多線程并發的情況下,就可以完全充分發揮各個 vCPU 的性能。

綁定對應的 vCPU

普通模式下,一個設備(Device)只有一個請求列表(Request-Queue)。在多線程并發處理 I/O 的情況下,這個唯一的 Request-Queue 就是一個性能瓶頸點。

最新的多隊列(Multi-Queue)模式下,一個設備(Device)可以擁有多個處理 I/O 的 Request-Queue,可以充分發揮后端存儲的性能。如果您有 4 個 I/O 線程,您需要將 4 個線程分別綁定在不同的 Request-Queue 對應的 CPU Core 上,這樣就可以充分利用 Multi-Queue 提升性能。

為了充分發揮設備(Device)的性能,需要將 I/O 線程分發到不同的 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 分別將幾個 jobs 綁定不同的 CPU Core 上,其中 vd* 為您的云盤設備名,例如,/dev/vdb。

FIO 提供了參數 cpus_allowed 以及 cpus_allowed_policy 用來綁定 vCPU。以上命令一共運行了幾個 jobs,分別綁定在幾個 CPU Core上,分別對應著不同的 Queue_Id。

關于如何查看 Queue_Id 綁定的 cpu_core_id,您可以:

運行 ls /sys/block/vd*/mq/ 查看設備名為 vd* 云盤的 Queue_Id,例如 vdb。

運行 cat /sys/block/vd*/mq/*/cpu_list 查看對應設備名為 vd* 云盤的 Queue_* 綁定到的 cpu_core_id。

以上是壓測ESSD云盤性能的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 遂宁市| 衡阳市| 元谋县| 朝阳市| 松阳县| 洪雅县| 河池市| 沈丘县| 德兴市| 砀山县| 屯留县| 保亭| 汉寿县| 旺苍县| 宜城市| 泰兴市| 永清县| 华宁县| 蒙城县| 安顺市| 法库县| 呈贡县| 衡水市| 中牟县| 庆城县| 精河县| 怀仁县| 靖江市| 洪泽县| 炎陵县| 成都市| 咸阳市| 永和县| 彰武县| 依兰县| 乌兰察布市| 平邑县| 资源县| 泰顺县| 赤峰市|