2015-12-31 145 views
0

我已經使用fio來測試磁盤性能一段時間了。但就在最近,我發現了一個我不明白的棘手問題。如所描述的,如下 (fio man page)大小選項:爲什麼fio尺寸參數會影響性能結果

大小= INT

的這個工作的I/O總大小。 fio會一直運行,直到傳輸了很多字節爲止,除非受到其他選項(例如運行時)的限制。除非給出nrfiles和文件大小選項,否則該數量將在作業的可用文件之間分配。如果未設置,fio將使用給定文件或設備的全尺寸。如果文件不存在,則必須給出大小。也可以將尺寸設置爲1到100之間的百分比。如果size = 20%,則fio將使用給定文件或設備的全尺寸的20%。

只要我能理解,尺寸不能太小,以收集足夠的還算可以,但我我的測試,我設置大小爲128MB,2GB,800GB,結果不同:

size=128M, average iops = 165 
size=2GB, average iops = 145 
size=800GB, average iops = 78 

在我看來,對於4KB塊,128MB大小足以獲得足夠數量的IO來做測試,性能不應該受到大小的影響。但爲什麼大小較大,性能較差。

回答

0

您在測試期間是否禁用了文件系統緩存?

direct=1 
invalidate=1 
randrepeat=0 
do_verify=0 
verify_fatal=0 
0

如果您正在測試一個旋轉驅動器,檢測能力的較大面積指頭上有尋求更遠的覆蓋所有的數據: 幾個參數,我在我的測試(http://linux.die.net/man/1/fio)時總是使用。這需要更長的時間,而更長的查找時間會導致更低的IOPS。

0

在到磁盤的路徑中,可能有多個「最大」塊大小,並且它不會超過它們。例如,您可能認爲您提交了一個10MB的塊,但幕後真正發生的是,10MB的塊正在被分割成64個大小的塊,因爲這是驅動程序將接受的限制。這10MByte I/O不能被標記爲已完成,直到它的每個單獨的部分已被返回,因此您正在創建不必存在的阻塞,並且您還爲分割的層創建了額外的工作。因此,如果您測試512個以上的區塊大小,您通常會看到吞吐量的最初優勢,然後在實際開始變慢之前回報遞減。

不:,的Linux有時暴露了一個「最佳塊大小」(見「/ SYS /塊//隊列/ optimal_io_size」在https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-block),其可以是或可以不是該磁盤的真實最佳塊大小。

相關問題