项目作者: riteshharjani

项目描述 :
Fio based filesystem performance utility
高级语言: Python
项目地址: git://github.com/riteshharjani/fioperf.git
创建时间: 2019-10-07T07:40:51Z
项目社区:https://github.com/riteshharjani/fioperf

开源协议:

下载


fioperf

Fio based filesystem performance utility

fioperf: Fio based filesystem :open_file_folder: performance tool

Author: Ritesh Harjani ritesh.harjani@gmail.com

About me
TODO

==========================================

Description:

fioperf is a simple fio based filesystem performance testing tool.
Main purpose for this is to test different filesystem mount options for
increasing number of threads. It also takes care by running each test 3 times
and updates the average read + write bandwidth in the sqlite table.

We use this sqlite3 table to then plot the bw graph to test for any scalability problems
w.r.t. filesystem mount options/patches.

It is still under development, so stay tuned.

TODO:-

  1. Implement small script to provide gnuplot based on sql tables.

Requirements:-

  1. pip3 install json
  2. pip3 install configparser
  3. pip3 install argparse
  4. pip3 install sqlite3

[local.config]:

  1. [global]
  2. BuildConfig=ilock
  3. SqlDatabase=fio_dioread_db.db
  4. [dioread_nolock] // Note don't use '-' in names. Sqlite3 gives error in creating column with that name
  5. mkfs=mkfs.ext4 -F -b 4096 testfs
  6. mount=mount -t ext4 -o loop,dioread_nolock testfs ./mountdir/
  7. mountdir=./mountdir/
  8. [dioread_lock]
  9. mkfs=mkfs.ext4 -F testfs
  10. mount=mount -t ext4 -o loop testfs ./mountdir/
  11. mountdir=./mountdir/

[Sample output database]:

  1. riteshh-> sqlite3 fio_dioread_db.db
  2. SQLite version 3.26.0 2018-12-01 12:34:55
  3. Enter ".help" for usage hints.
  4. sqlite> .headers on
  5. sqlite> .mode column
  6. sqlite> SELECT * from dioread_
  7. dioread_lock_dio_randrw_1M dioread_lock_dio_rw_1M dioread_nolock_dio_randrw_1M dioread_nolock_dio_rw_1M
  8. dioread_lock_dio_randrw_4K dioread_lock_dio_rw_4K dioread_nolock_dio_randrw_4K dioread_nolock_dio_rw_4K
  9. sqlite> SELECT * from dioread_nolock_dio_randrw_1M
  10. ...> ;
  11. threads ilock_read ilock_write
  12. ---------- ---------- -----------
  13. 1 646981.0 431321.0
  14. 2 357184.0 535776.0
  15. 4 803832.0 1087537.0
  16. 8 789727.0 1068454.0
  17. 12 780067.0 1055385.0
  18. 16 944303.0 1310750.0
  19. 24 699710.0 869733.0
  20. sqlite> SELECT * from dioread_nolock_dio_randrw_4K
  21. ...> ;
  22. threads ilock_read ilock_write
  23. ---------- ---------- -----------
  24. 1 113075.0 116300.0
  25. 2 147392.0 153744.0
  26. 4 144729.0 150671.0
  27. 8 170660.0 175185.0
  28. 12 178191.0 180034.0
  29. 16 187429.0 188052.0
  30. 24 183832.0 183808.0
  31. sqlite> .quit

Contribution:-

  1. In case if anyone would like to contribute to this project - please feel free to submit a pull request.

Example gnuplot from one such table

plot