亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

Fio引擎開發簡介

2023-05-12 10:11:52
239
0

1. Fio簡介

FIO是Linux kernel的IO部分維護者axobe開發:Github: //github.com/axboe/fio。

FIO一種IO系統的Benchmark和壓力測試工具,可以模擬不同IO場景下的IO負載。最初axobe設計FIO是為了節省為特定負載設計專門測試程序,進行性能測試,以及debug的時間。寫測試程序非常浪費時間,因為不同的測試負載的IO場景不同,他們都用自己的方式產生IO,故需要模擬這些IO負載,FIO需足夠靈活。

FIO支持 13種不同的 I/O 引擎, 包括:sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等等。 FIO 的引擎能識別簡單易懂的job file文本去進行測試,同時能提供各種 I/O 性能指標,如I/O 延遲、IOPS和帶寬等。因此被大量的制造商和廣泛的用戶認可,作為確認IO系統良好的測試工具。

2. 為什么要開發fio引擎

Fio支持多大13種I/O引擎,但是有時我們會自己開發存儲系統或封裝自己的IO接口。這時需要提供一個benchmark,而fio就是一個很好的選擇,這時就需要在fio上添加一個適配自己IO接口的引擎,然后就可以用fio測試我們自己的存儲系統了。

3.開發流程

Fio提供了一個引擎框架,要添加新的fio引擎,就需要在框架上填寫自己的邏輯。

添加引擎可以在fio代碼里添加,也可以以外部插件的形式添加,新加引擎代碼是一樣的:

  • 在代碼里添加:直接在fio/engines目錄里添加。
  • 以外部插件的形式添加:將新fio引擎編譯成動態庫,fio運行時通過“ioengine”參數指定動態庫引擎。

Fio引擎框架我分為3部分:

  • 注冊和注銷引擎框架
  • 引擎io流程框架
  • 引擎參數框架

 

在此已rbd引擎為例介紹。

3.1. 注冊和注銷引擎框架

通過“__attribute__”設置,可以讓fio啟動時,在調用main()前執行注冊,在main()后執行注銷。

3.2. 引擎io流程框架

流程框架里有一系列io過程需要調用的函數指針,不用全部實現,具體實現可以參考fio的rbd引擎。

3.3. 引擎參數框架

如果新加的引擎啟動需要參數,可以通過參數框架,設置參數,具體實現可以參考fio的rbd引擎。

0條評論
0 / 1000
星火
3文章數
0粉絲數
星火
3 文章 | 0 粉絲
星火
3文章數
0粉絲數
星火
3 文章 | 0 粉絲
原創

Fio引擎開發簡介

2023-05-12 10:11:52
239
0

1. Fio簡介

FIO是Linux kernel的IO部分維護者axobe開發:Github: //github.com/axboe/fio。

FIO一種IO系統的Benchmark和壓力測試工具,可以模擬不同IO場景下的IO負載。最初axobe設計FIO是為了節省為特定負載設計專門測試程序,進行性能測試,以及debug的時間。寫測試程序非常浪費時間,因為不同的測試負載的IO場景不同,他們都用自己的方式產生IO,故需要模擬這些IO負載,FIO需足夠靈活。

FIO支持 13種不同的 I/O 引擎, 包括:sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等等。 FIO 的引擎能識別簡單易懂的job file文本去進行測試,同時能提供各種 I/O 性能指標,如I/O 延遲、IOPS和帶寬等。因此被大量的制造商和廣泛的用戶認可,作為確認IO系統良好的測試工具。

2. 為什么要開發fio引擎

Fio支持多大13種I/O引擎,但是有時我們會自己開發存儲系統或封裝自己的IO接口。這時需要提供一個benchmark,而fio就是一個很好的選擇,這時就需要在fio上添加一個適配自己IO接口的引擎,然后就可以用fio測試我們自己的存儲系統了。

3.開發流程

Fio提供了一個引擎框架,要添加新的fio引擎,就需要在框架上填寫自己的邏輯。

添加引擎可以在fio代碼里添加,也可以以外部插件的形式添加,新加引擎代碼是一樣的:

  • 在代碼里添加:直接在fio/engines目錄里添加。
  • 以外部插件的形式添加:將新fio引擎編譯成動態庫,fio運行時通過“ioengine”參數指定動態庫引擎。

Fio引擎框架我分為3部分:

  • 注冊和注銷引擎框架
  • 引擎io流程框架
  • 引擎參數框架

 

在此已rbd引擎為例介紹。

3.1. 注冊和注銷引擎框架

通過“__attribute__”設置,可以讓fio啟動時,在調用main()前執行注冊,在main()后執行注銷。

3.2. 引擎io流程框架

流程框架里有一系列io過程需要調用的函數指針,不用全部實現,具體實現可以參考fio的rbd引擎。

3.3. 引擎參數框架

如果新加的引擎啟動需要參數,可以通過參數框架,設置參數,具體實現可以參考fio的rbd引擎。

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0