磁盤的基準(zhǔn)測試

參考

摘抄自 對永久性磁盤的性能進(jìn)行基準(zhǔn)化分析

正文

如需對永久性磁盤的性能進(jìn)行基準(zhǔn)化分析,請使用 FIO,而不是 dd 等其他磁盤基準(zhǔn)化分析工具。默認(rèn)情況下赚瘦,dd 使用非常低的 I/O 隊(duì)列深度浅浮,因此難以確鼻。基準(zhǔn)生成足夠數(shù)量的 I/O 和字節(jié)來準(zhǔn)確測試磁盤性能次哈。

此外,與 dd 配合使用的特殊設(shè)備的運(yùn)行速度通常非常慢颠悬,無法準(zhǔn)確反映永久性磁盤的性能。一般而言定血,請避免在永久性磁盤的性能基準(zhǔn)中使用 /dev/urandom赔癌、/dev/random/dev/zero 等特殊設(shè)備。

如需衡量正在運(yùn)行的實(shí)例上正在使用的磁盤的 IOPS 和吞吐量糠悼,請使用預(yù)期的配置對文件系統(tǒng)進(jìn)行基準(zhǔn)化分析届榄。使用此選項(xiàng)可測試實(shí)際工作負(fù)載,而不會丟失現(xiàn)有磁盤上的內(nèi)容倔喂。請注意铝条,在對現(xiàn)有磁盤上的文件系統(tǒng)進(jìn)行基準(zhǔn)化分析時,有很多特定于開發(fā)環(huán)境的因素可能會影響基準(zhǔn)化分析結(jié)果席噩,并且您可能不會達(dá)到磁盤性能限制班缰。

如需衡量永久性磁盤的原始性能,請直接對塊設(shè)備進(jìn)行基準(zhǔn)化分析悼枢。使用此選項(xiàng)可將原始磁盤性能與磁盤性能限制進(jìn)行比較埠忘。

以下命令適用于安裝了 apt 軟件包管理器的 Debian 或 Ubuntu 操作系統(tǒng)。

對正在運(yùn)行的實(shí)例上的磁盤的 IOPS 和吞吐量進(jìn)行基準(zhǔn)化分析

如果要衡量正在運(yùn)行的實(shí)例上活躍磁盤的實(shí)際工作負(fù)載的 IOPS 和吞吐量馒索,而不丟失磁盤的內(nèi)容莹妒,請對照現(xiàn)有文件系統(tǒng)上的新目錄進(jìn)行基準(zhǔn)化分析。

  1. 連接到您的實(shí)例绰上。

  2. 安裝依賴項(xiàng):

sudo apt update
sudo apt install -y fio
  1. 在終端中旨怠,列出掛接到虛擬機(jī)的磁盤,并找到要測試的磁盤蜈块。如果您的永久性磁盤尚未格式化鉴腻,請格式化并裝載該磁盤迷扇。
sudo lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   10G  0 disk
└─sda1   8:1    0   10G  0 part /
sdb      8:32   0  2.5T  0 disk /mnt/disks/mnt_dir
在此示例中,我們測試的是一個設(shè)備 ID 為 `sdb` 的 2500 GB SSD 永久性磁盤爽哎。
  1. 在磁盤上創(chuàng)建一個新目錄 fiotest蜓席。在此示例中,該磁盤裝載在 /mnt/disks/mnt_dir
TEST_DIR=/mnt/disks/mnt_dir/fiotest
sudo mkdir -p $TEST_DIR
  1. 使用 1 MB 的 I/O 塊大小和至少 64 的 I/O 深度课锌,通過執(zhí)行具有多個(8 個或更多)并行數(shù)據(jù)流的順序?qū)懭雭頊y試寫入吞吐量:
sudo fio --name=write_throughput --directory=$TEST_DIR --numjobs=8 \
--size=10G --time_based --runtime=60s --ramp_time=2s --ioengine=libaio \
--direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \
--group_reporting=1
  1. 使用 4 KB 的 I/O 塊大小和至少 64 的 I/O 深度厨内,通過執(zhí)行隨機(jī)寫入來測試寫入 IOPS:
sudo fio --name=write_iops --directory=$TEST_DIR --size=10G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randwrite --group_reporting=1
  1. 使用 1 MB 的 I/O 塊大小和至少 64 的 I/O 深度,通過執(zhí)行具有多個(8 個或更多)并行數(shù)據(jù)流的順序讀取來測試讀取吞吐量:
sudo fio --name=read_throughput --directory=$TEST_DIR --numjobs=8 \
--size=10G --time_based --runtime=60s --ramp_time=2s --ioengine=libaio \
--direct=1 --verify=0 --bs=1M --iodepth=64 --rw=read \
--group_reporting=1
  1. 使用 4 KB 的 I/O 塊大小和至少 64 的 I/O 深度产镐,通過執(zhí)行隨機(jī)讀取來測試讀取 IOPS:
sudo fio --name=read_iops --directory=$TEST_DIR --size=10G \
--time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 \
--verify=0 --bs=4K --iodepth=64 --rw=randread --group_reporting=1
  1. 清理:
sudo rm $TEST_DIR/write* $TEST_DIR/read*

對原始永久性磁盤的性能進(jìn)行基準(zhǔn)化分析

如果要在開發(fā)環(huán)境之外單獨(dú)衡量永久性磁盤的性能隘庄,請?jiān)谝淮涡杂谰眯源疟P和虛擬機(jī)上測試塊設(shè)備的讀寫性能。

以下命令假定您的虛擬機(jī)掛接了一個 2500 GB 的 SSD 永久性磁盤癣亚。如果您設(shè)備的容量大小不同丑掺,請修改 --filesize 參數(shù)的值。此磁盤大小是實(shí)現(xiàn) 32 個 vCPU 虛擬機(jī)吞吐量限制所必需的述雾。如需了解詳情街州,請參閱塊存儲性能

警告:本部分中的命令將覆蓋 /dev/sdb 的內(nèi)容玻孟。我們強(qiáng)烈建議使用一次性的虛擬機(jī)和磁盤唆缴。

  1. 連接到您的實(shí)例

  2. 安裝依賴項(xiàng):

sudo apt-get update
sudo apt-get install -y fio
  1. 使用非零數(shù)據(jù)填充磁盤黍翎。對于永久性磁盤而言面徽,從空白的磁盤塊讀取內(nèi)容的延遲配置文件與包含數(shù)據(jù)的磁盤塊不同。 我們建議您在運(yùn)行任何讀取延遲基準(zhǔn)化分析之前先填充磁盤匣掸。
# Running this command causes data loss on the second device.
# We strongly recommend using a throwaway VM and disk.
sudo fio --name=fill_disk \
  --filename=/dev/sdb --filesize=2500G \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=128K --iodepth=64 --rw=randwrite
  1. 使用具有多個(8 個或更多)并行數(shù)據(jù)流(I/O 大小為 1 MB趟紊,I/O 深度大于或等于 64)的順序?qū)懭雭頊y試寫入帶寬。
# Running this command causes data loss on the second device.
# We strongly recommend using a throwaway VM and disk.
sudo fio --name=write_bandwidth_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=1M --iodepth=64 --rw=write --numjobs=8 --offset_increment=100G
  1. 測試寫入 IOPS碰酝。如需達(dá)到永久性磁盤的 IOPS 上限霎匈,您必須維護(hù)一個較深的 I/O 隊(duì)列。例如送爸,如果寫入延遲時間為 1 毫秒铛嘱,則對于每個正在執(zhí)行的 I/O,虛擬機(jī)最多可以達(dá)到 1000 IOPS袭厂。 如需達(dá)到 15000 寫入 IOPS墨吓,虛擬機(jī)必須維護(hù)至少 15 個正在執(zhí)行的 I/O。如果您的磁盤和虛擬機(jī)能夠達(dá)到 30000 次寫入 IOPS纹磺,則正在執(zhí)行的 I/O 數(shù)量必須至少有 30 個肛真。如果 I/O 大小超過 4 KB,則虛擬機(jī)在達(dá)到 IOPS 上限之前可能會先達(dá)到帶寬上限爽航。
# Running this command causes data loss on the second device.
# We strongly recommend using a throwaway VM and disk.
sudo fio --name=write_iops_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=4K --iodepth=256 --rw=randwrite
  1. 測試寫入延遲時間蚓让。在測試 I/O 延遲時間時,請務(wù)必不要讓虛擬機(jī)達(dá)到帶寬或 IOPS 上限讥珍,否則觀察到的延遲時間將無法反映出實(shí)際的永久性磁盤 I/O 延遲時間历极。例如:如果在 I/O 深度為 30 時達(dá)到了 IOPS 上限,并且 fio 命令已將其加倍衷佃,則總 IOPS 將保持不變趟卸,并且所報(bào)告的 I/O 延遲時間將加倍。
# Running this command causes data loss on the second device.
# We strongly recommend using a throwaway VM and disk.
sudo fio --name=write_latency_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=4K --iodepth=4 --rw=randwrite
  1. 使用具有多個(8 個或更多)并行數(shù)據(jù)流(I/O 大小為 1 MB氏义,I/O 深度等于 64 或更大)的順序讀取來測試讀取帶寬锄列。
sudo fio --name=read_bandwidth_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=1M --iodepth=64 --rw=read --numjobs=8 --offset_increment=100G
  1. 測試讀取 IOPS。如需達(dá)到永久性磁盤的 IOPS 上限惯悠,您必須維護(hù)一個較深的 I/O 隊(duì)列邻邮。例如,如果 I/O 大小超過 4 KB克婶,則虛擬機(jī)在達(dá)到 IOPS 上限之前可能會先達(dá)到帶寬上限筒严。如需達(dá)到 10 萬次讀取 IOPS 上限,請為該測試指定 --iodepth=256情萤。
sudo fio --name=read_iops_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=4K --iodepth=256 --rw=randread
  1. 測試讀取延遲時間鸭蛙。請務(wù)必用數(shù)據(jù)填充磁盤,以獲得真實(shí)的延遲時間測量結(jié)果筋岛。在此測試期間娶视,請確保不要讓虛擬機(jī)達(dá)到 IOPS 或吞吐量上限,因?yàn)橐坏┯谰眯源疟P達(dá)到其飽和上限睁宰,它將拒絕傳入的 I/O肪获,這將反映為 I/O 延遲時間的人為增加。
sudo fio --name=read_latency_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --bs=4K --iodepth=4 --rw=randread
  1. 測試順序讀取帶寬勋陪。
sudo fio --name=read_bandwidth_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --numjobs=4 --thread --offset_increment=500G \
  --bs=1M --iodepth=64 --rw=read
  1. 測試順序?qū)懭霂挕?/li>
sudo fio --name=write_bandwidth_test \
  --filename=/dev/sdb --filesize=2500G \
  --time_based --ramp_time=2s --runtime=1m \
  --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
  --numjobs=4 --thread --offset_increment=500G \
  --bs=1M --iodepth=64 --rw=write
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贪磺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诅愚,更是在濱河造成了極大的恐慌寒锚,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件违孝,死亡現(xiàn)場離奇詭異刹前,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)雌桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門喇喉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人校坑,你說我怎么就攤上這事拣技∏埽” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵膏斤,是天一觀的道長徐绑。 經(jīng)常有香客問我,道長莫辨,這世上最難降的妖魔是什么傲茄? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮沮榜,結(jié)果婚禮上盘榨,老公的妹妹穿的比我還像新娘。我一直安慰自己蟆融,他們只是感情好草巡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著振愿,像睡著了一般捷犹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冕末,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天萍歉,我揣著相機(jī)與錄音,去河邊找鬼档桃。 笑死枪孩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的藻肄。 我是一名探鬼主播蔑舞,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘹屯!你這毒婦竟也來了攻询?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤州弟,失蹤者是張志新(化名)和其女友劉穎钧栖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婆翔,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拯杠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了啃奴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潭陪。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出依溯,到底是詐尸還是另有隱情老厌,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布黎炉,位于F島的核電站梅桩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拜隧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一趁仙、第九天 我趴在偏房一處隱蔽的房頂上張望洪添。 院中可真熱鬧,春花似錦雀费、人聲如沸干奢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忿峻。三九已至,卻和暖如春辕羽,著一層夾襖步出監(jiān)牢的瞬間逛尚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工刁愿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绰寞,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓铣口,卻偏偏與公主長得像滤钱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脑题,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分件缸?它們有何意義? 聲明位于文檔中的最前面,處于 標(biāo)簽之前叔遂。告知瀏覽...
    空城皆是舊夢閱讀 621評論 0 3
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,028評論 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5他炊? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,422評論 1 45
  • 前端 前端:任何與用戶直接打交道的操作界面都可以稱之為前端比如:電腦界面 手機(jī)界面 平板界面 后端:后端類似于幕后...
    淺笑_7cad閱讀 806評論 3 1
  • html,body{height:100%}html{overflow-y:auto}body{font:12px...
    季嘉聊跨境閱讀 742評論 0 0