Code Monkey home page Code Monkey logo

fiosynth's Introduction

fiosynth

FB fio Synthetic Benchmark Suite for Flash ver 3.6.0

Examples

Run workload suite on a single device:

fiosynth -d /dev/sdc -w LE_Flash -f LE_Flash_sdc

Run workload suite on all data devices:

fiosynth -d ALL -w LE_Flash -f LE_Flash_noRAID

Run workload suite on all mdraid devices:

fiosynth -d ALLRAID -w LE_Flash -f LE_Flash_MDRAID

Run workload suite on all data devices while collecting smartctl logs

fiosynth -d ALL -w LE_Flash -f LE_Flash_noRAID -t "./smartAll.sh"

Run a dry run of workload suite for all mdraid devices:

fiosynth -d ALLRAID -w LE_Flash -f LE_Flash_MDRAID -r y

Run a workload suite across multiple servers:

fiosynth -d ALL -w LE_Flash -f LE_Flash_server -s <server1> -s <server2>

Run a workload suite from a server list:

fiosynth -d ALL -w LE_Flash -f LE_Flash_server -l '/path/servers.txt'

Requirements

fiosynth should work

  • Linux (CentOS, RedHat, Ubuntu)

Installing fiosynth

To install fiosynth simply git clone this repo and have the latest versions of pip with setuptools installed

Installing into Python environment

$ git clone https://github.com/facebookincubator/FioSynth
$ sudo apt install python3 python3-pip fio
$ cd FioSynth
$ sudo python3 setup.py install
$ fiosynth -h

Executing fiosynth without installing

Simply execute the fiosynth.py entry script.

$ cd FioSynth
$ python3 fiosynth.py -h

Note: You may require sudo if installing to System's Python environment

Note: We recommend using a virtualenv to avoid polluting the Systems dependencies.

How fiosynth works

Requires the use of workload suite files (in JSON format). Workload suite files can be edited to adjust the number of precondition cycles, number of runs, number of workloads and individual workload parameters. Use the dry run option to verify that benchmark suite executes as expected. All workloads are normalized on a per TB bases. If capacity is not specified, capacity will be based on capacity of the first specified device. If specified, a vendor specific health monitor tool will be executed before and after each benchmark suite executes and logged in "health.log" file. Log can be used to calculate write amplification factor. Raw results are stored in individual JSON files but are also parsed into single a csv file for easy visualization in Excel. Prefix for result filename must be specified. This will define the name of the result files directory and csv filename.

Input arguments (3 of arguments are required):

 -d
      (Required) device path for single device target, ALL for all
      all data devices, or ALLRAID for all mdraid devices
 -w
      (Required) filename for workload suite (default = )
 -f
      (Required) Results filename (default = )
 -c
      (Optional) specify capacity in TB (default = <device capacity>)
 -r
      (Optional) Set to y to do dry run (default = n)
 -t
      (Optional) Enter Health Monitoring Tool Syntax (default = )
 -p
      (Optional) Set to n to skip drive prep (default = y)
 -n
      (Optional) Specific the number of run cycles (default = 3 )
 -g
      (Optional) Set to y to enable flash configuration logging (default = n)
 -s
      (Optional) Add a server for workload to run on when in server mode.
      For multiple servers add multiple times. (default = )
 -l
      (Optional) Add a text file listing a server on each line (default = )

Workload suites

PeakWklds
      Executes workloads to measure the peak small block random and large
      block sequential performance of a single or multiple flash devices.

LE_Flash
      Executes rate limited workloads with similar I/O characteristics to
      applications that run on Type VIII (Low Flash) production hardware
      on a single or multiple flash devices. Workloads use a combination
      of read iops bins (low, medium, high) and write DWPD (Drive Writes
      Per Day) bins that correlate to various Type VIII flash application
      I/O profiles.  Workload alias names are a combination of read I/O
      block size, read iops bins and write DWPD bins.

HE_Flash
      Executes rate limited workloads with similar I/O characteristics to
      applications that run on Type VI and III (High Endurance Flash)
      production hardware on a single or multiple flash devices.
      Workloads use a combination of read iops bins (low, medium, high)
      and write DWPD (Drive Writes Per Day) bins that correlate to various
      Type VI flash application I/O  profiles.  Workload alias names are
      a combination of read I/O block size, read iops bins and write DWPD
      bins.

TrimRate
      Executes a workload that evaluates the raw trim performance of a
      flash device.

LE_Flash_Short
      Short version of LE_Flash.  Executes a limited set of rate limited
      workloads to provide a high level view of performance in a few hours.

HE_Flash_Short
      Short version of HE_Flash.  Executes a limited set of rate limited
      workloads to provide a high level view of performance in a few hours.

readhammer
      Executes a workload that evaluates a flash device ability to
      continually read from a small LBA range on a single or multiple
      flash devices.
      See README-READHAMMER.txt for more information.

prep
      Executes two full capacity writes on a single or multiple flash
      devices to get the flash close to steady state.

Creating/Modifying Workload Suites

Workload suites are json formatted files with a list of run rules for fio. Follow the formatting used in other workload suites. Generally, if all parameters in the workload suite workload file is note defined, it will not run.

The following parameters need to be defined globally:

run_cycles
      Number of times the entire workload suite will run.

precondition_cycles
      Number of times the flash will be preconditioned before each
      run cycle.  A full TRIM of the flash device will complete before
      the flash is preconditioned.  Each precondition consist of 2 full
      sequential writes of the flash device.

devices_in_global
      Specifies if the devices should be defined in the global field or
      within jobs.  Most fio job files should define devices_in_global
      parameter to Y and can scale to multiple drives using the numjob fio
      parameter.  Some jobfiles will not run properly with the devices
      defined in the global section.  These jobfiles need to create
      new job section for each device and the device_in_global parameter
      should be set to N.
      For more on fio job file format, see section 4 of
      https://github.com/axboe/fio/blob/master/HOWTO

The following parameters are workload specific:

template
      Fio jobfile name that should be used.

alias
      Name of the workload.  Use a name that describes the workload that
      is being executed.

TIME
      Sets the "runtime" parameter in the fio job file (where applicable).

BLKSIZE
      Sets the "blocksize" and "blockalign" parameter in the fio job file
      (where applicable).

DEPTH
      Sets the "iodepth" parameter in the fio job file (where applicable).

RRATE
      Sets the "rate_iops" parameter in the fio job file (where applicable).

SIZE
      Sets the "size" parameter in the fio job file (where applicable).

W1THINK, W2THINK, W3THINK & W4THINK
      Sets the "thinktime" parameter in the fio job file (where applicable).
      W1THINK and W2THINK are the think time in between each write. The smaller
      the number, the higher the write rate. 6pDWPD writes at a rate of about
      72 MB/s per TB. W3THINK and W4THINK are typically used as the think
      time in between each trim command.

Client/Server Mode

To run in client/server mode, ensure that the following requirements are met:

  • Both your client and all of your servers must have the same version of fio

  • Any devices you want to test on the clients must be unmounted from the filesystem

  • You may want to prepend "nohup" to the command when you call this tool, that way if your ssh session ends, the test will continue to run on your devserver.

Join the fiosynth community

See the CONTRIBUTING file for how to help out.

License

MIT License

Copyright (c) Facebook, Inc. and its affiliates.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

fiosynth's People

Contributors

amyreese avatar darryleg avatar davide125 avatar facebook-github-bot avatar mh2022-meta avatar sfirsov-fb avatar thatch avatar venkatrag1 avatar vmill avatar vnbalakrishnan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fiosynth's Issues

rsw_cp_precon.fio "loop" typo ??

Hi there~ in FioSynth/jobfiles/rsw_cp_precon.fio

Copyright (c) Facebook, Inc. and its affiliates.

[global]
size=100%
ioengine=libaio
direct=1
loops=10000 <------------------------ loops is set here
invalidate=1
norandommap
randrepeat=0
ramp_time=${RAMPTIME}
group_reporting=1
random_generator=tausworthe64
percentile_list=1:5:10:20:25:30:40:50:60:70:75:80:90:95:99:99.9:99.95:99.99:99.999:99.9999
filename=${DEV}
loops=1 <------------------------------ but, here again

Question: Is loops runs 1 times or 10000 times ?

Creating rpm built distributions fails with error "fiosynth-3.5.39.tar.gz: No such file or directory"

$ sudo python3 setup.py bdist_rpm
running bdist_rpm
running egg_info
creating fiosynth.egg-info
writing fiosynth.egg-info/PKG-INFO
writing dependency_links to fiosynth.egg-info/dependency_links.txt
writing entry points to fiosynth.egg-info/entry_points.txt
writing top-level names to fiosynth.egg-info/top_level.txt
writing manifest file 'fiosynth.egg-info/SOURCES.txt'
reading manifest file 'fiosynth.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'fiosynth.egg-info/SOURCES.txt'
creating build
creating build/bdist.linux-i686
creating build/bdist.linux-i686/rpm
creating build/bdist.linux-i686/rpm/SOURCES
creating build/bdist.linux-i686/rpm/SPECS
creating build/bdist.linux-i686/rpm/BUILD
creating build/bdist.linux-i686/rpm/RPMS
creating build/bdist.linux-i686/rpm/SRPMS
writing 'build/bdist.linux-i686/rpm/SPECS/fiosynth.spec'
running sdist
running check
warning: check: missing required meta-data: url

creating fiosynth-3.5.39
creating fiosynth-3.5.39/fiosynth.egg-info
creating fiosynth-3.5.39/fiosynth_lib
creating fiosynth-3.5.39/jobfiles
creating fiosynth-3.5.39/wkldsuites
copying files to fiosynth-3.5.39...
copying CODE_OF_CONDUCT.md -> fiosynth-3.5.39
copying CONTRIBUTING.md -> fiosynth-3.5.39
copying LICENSE -> fiosynth-3.5.39
copying MANIFEST.in -> fiosynth-3.5.39
copying README-READHAMMER.txt -> fiosynth-3.5.39
copying README.md -> fiosynth-3.5.39
copying Release_Notes.txt -> fiosynth-3.5.39
copying fiosynth.py -> fiosynth-3.5.39
copying setup.cfg -> fiosynth-3.5.39
copying setup.py -> fiosynth-3.5.39
copying smartAll.sh -> fiosynth-3.5.39
copying fiosynth.egg-info/PKG-INFO -> fiosynth-3.5.39/fiosynth.egg-info
copying fiosynth.egg-info/SOURCES.txt -> fiosynth-3.5.39/fiosynth.egg-info
copying fiosynth.egg-info/dependency_links.txt -> fiosynth-3.5.39/fiosynth.egg-info
copying fiosynth.egg-info/entry_points.txt -> fiosynth-3.5.39/fiosynth.egg-info
copying fiosynth.egg-info/top_level.txt -> fiosynth-3.5.39/fiosynth.egg-info
copying fiosynth_lib/init.py -> fiosynth-3.5.39/fiosynth_lib
copying fiosynth_lib/fio_json_parser.py -> fiosynth-3.5.39/fiosynth_lib
copying fiosynth_lib/fiosynth.py -> fiosynth-3.5.39/fiosynth_lib
copying fiosynth_lib/flash_config.py -> fiosynth-3.5.39/fiosynth_lib
copying fiosynth_lib/health_tools.py -> fiosynth-3.5.39/fiosynth_lib
copying jobfiles/70_30.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/70_30_HE.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/70_30_LE.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/DRAMwTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/FLeaf_noTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/FLeaf_wTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/FLeaf_wTRIM_2H19.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/HDD_70_30.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/HDD_randread.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/HDD_randwrite.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/HDD_seqread.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/HDD_seqwrite.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/MyRocks_noTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/MyRocks_noTRIM_2H19.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/MyRocks_wTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/MyRocks_wTRIM_2H19.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/RR_SW_HE.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/RR_SW_LE.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVI.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVI90.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVI90_precon.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIII_Messenger_Movement.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIII_Messenger_Movement_precon.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIII_Messenger_Movement_wTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIII_Messenger_Movement_wTRIM_precon.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVI_Read.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIwTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIwTRIM_2H19.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIwTRIM_SIT.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/TypeVIwTRIM_precon.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/backup.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/backup_write_journal.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/bcache.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/bursttrim.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/coldstorage.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/idyno.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/idyno_sweep.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/prep.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/prep_flash.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/prep_flash_rand.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/prep_rand.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/randread.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/randwrite.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/readhammer.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/rsw_burst.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/rsw_cp.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/rsw_cp_precon.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/rsw_cp_vtrim.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/rsw_cp_wtrim.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/search2.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/search3.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/searchdoc_noTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/searchdoc_wTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/searchindex_noTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/searchindex_wTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/searchlm_wTRIM.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/seqread.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/seqwrite.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/seqwrite_write_journal.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/stacking.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/trim.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/trimrate.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/twfeed.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/twi_iris.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/twi_iris_precon.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/twshared-pkg.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/twshared.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/udb_boot.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wildcard.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wildcard_normal.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/writehammer.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/ws_hxfs_hdd.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/ws_hxfs_hdd_heavy.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/ws_hxfs_ssd.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/ws_xfs_hdd.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wscache_1H22.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wsf-t.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wsf-tl.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wsf-tl_1H22.fio -> fiosynth-3.5.39/jobfiles
copying jobfiles/wsf-tl_2H21.fio -> fiosynth-3.5.39/jobfiles
copying wkldsuites/Boot_SSD -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/BurstTrim -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Cache -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Cache_2H20 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Cache_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HDDPeakWklds -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_90 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_noTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM_1H20 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM_2H19 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM_2H20 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM_RAM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM_SIT -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_Short_wTRIM_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_noTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/HE_Flash_wTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Idyno_Boot -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Idyno_Boot_Full_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/LE_Flash -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/LE_Flash_Short -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/LE_Flash_Short_wTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/LE_Flash_Short_wTRIM_SIT -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/LE_Flash_Single -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Low_Latency_Short_wTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Messenger_Movement_noTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Messenger_Movement_wTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/MyRocks -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/MyRocks_Full_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/PeakWklds -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/PeakWklds_RAM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/RAIDPeakWklds -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/RTL -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Rsw_Cp -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Rsw_Cp_wTRIM -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Search -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Search_2H19 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Search_2H20 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Search_Full_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Search_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/SpinCycle -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/SpinCycleFlash -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Stacking -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/TrimRate -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Twfeed_Boot -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Twi_Iris -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Twshared_Boot -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Twshared_Pkg_Boot -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Twshared_Pkg_Boot_Full_Sweep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/UBOOTT_Workload_loop -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/UDB_Boot -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/USSDT_Workload_loop -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/WSCACHE_1H22 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/WSF -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/WSF_1H22 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/WSF_2H21 -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Warmstorage_HDD -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Warmstorage_HXFS_HDD -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Warmstorage_HXFS_SSD -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Wedge_Boot -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Wildcard -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/Wildcard_Normal -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/backup -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/iocost -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/precondition_full -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/prep -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/readhammer -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/write_journal -> fiosynth-3.5.39/wkldsuites
copying wkldsuites/writehammer -> fiosynth-3.5.39/wkldsuites
Writing fiosynth-3.5.39/setup.cfg
creating dist
Creating tar archive
removing 'fiosynth-3.5.39' (and everything under it)
copying dist/fiosynth-3.5.39.tar.gz -> build/bdist.linux-i686/rpm/SOURCES
building RPMs
rpmbuild -ba --define __python python3 --define _topdir /home/sushrut/FioSynth/build/bdist.linux-i686/rpm --clean build/bdist.linux-i686/rpm/SPECS/fiosynth.spec
error: Bad source: /home/sushrut/FioSynth/build/bdist.linux-i686/rpm/bld/fiosynth/fiosynth-3.5.39.tar.gz: No such file or directory
error: command 'rpmbuild' failed with exit status 1

What's the definition of Flash Types

In LE_Flash & HE_Flash sectors , the author metioned Type III, VI and VIII flash ,
I would like to know how to define the different types of flash
image

fiosynth fails with python issue: 'KeyError'

Traceback (most recent call last):
File "fiosynth.py", line 65, in
fiosynth.main()
File "/root/FioSynth/fiosynth_lib/fiosynth.py", line 752, in main
runSuite(args)
File "/root/FioSynth/fiosynth_lib/fiosynth.py", line 738, in runSuite
runCycles(dut_list, profile, args, rc, pc, lp, csvFolderPath)
File "/root/FioSynth/fiosynth_lib/fiosynth.py", line 686, in runCycles
rcycle)
File "/root/FioSynth/fiosynth_lib/fiosynth.py", line 671, in runTest
parseLocalResults(results)
File "/root/FioSynth/fiosynth_lib/fiosynth.py", line 36, in parseLocalResults
fio_json_parser.main(args)
File "/root/FioSynth/fiosynth_lib/fio_json_parser.py", line 402, in main
write_csv_file(csv_filepath, json_files)
File "/root/FioSynth/fiosynth_lib/fio_json_parser.py", line 382, in write_csv_file
new_csv(csv_out, ('percentile_list' in fio_data['jobs'][0]['job options']), 'percentile_list' in fio_data['global options'])
KeyError: 'job options'

Incoherent licensing declaration for FioSynth

I was looking at this project and I noticed that the licensing declarations are incoherent.

The setuptools metadata indicates it's BSD+PATENTS which is generally not considered an OSS license, but further evaluation of the licensing data presents a different picture:

  • The LICENSE file is the standard 3-clause BSD license, which is an accepted OSS license
  • The PATENTS file is actually the MIT license instead of some kind of patent license document, which... makes no sense?

fio itself is GPLv2, so there were no clues from that for what this project is supposed to be licensed.

If I were to take a stab at this, I'd suggest this was probably intended to be just licensed under the BSD license (no PATENTS file). But I might suggest also just licensing it under the same terms that fio itself is licensed under (GPLv2).

TrimRate tests throttles scale when capacity is specified

I was running fiosynth and noticed that my performance while running the TrimRate tests were above the throttled limit based on the test suite configuration. I figured out that this was due to me specifying the capacity of the device using the -c flag. I've worked around the issue by not specifying the capacity, but believe the issue can be fixed in fiosynth.py, if this wasn't intended.

In the prepServers function the logic to check if a test scales by the factor could be moved up a level. This way it only uses a capacity factor if the test is supposed to scale with capacity. Currently it checks if you've specified a capacity first and if you do it always will scale any scalable variables in a test.

I would submit a PR myself, but cannot currently sign the contributor license due to company policy.

Proposed modification of code (lines 643 to 649 of fiosynth.py):

if (profile['scale_by_capacity'] != 'N'):
    if args.factor <= 0.0:
         dut.factor = getMultiplier(dut.capacity)
    else:
         dut.factor = args.factor
else:
    dut.factor = 1.0

IO jobs offsets

offset=${OFFSET2}m

Hey,
I was looking through your job files. It looks like only the first IO job (job0) has offset argument. It means that other IO jobs will share first 10% (as you are often hardcoding trim size to 10%) of a drive size with trims. I thought the idea was to have trim working on 10% of the drive and IO workloads on the rest of the drive. Are you sure those job files are doing what you intended?

Moreover,

"template":"TypeVIwTRIM.fio",
this suite is using TypeVIwTRIM job that requires OFFSET argument which is not provided in HE_Flash_short_wTRIM_SIT file.

UnboundLocalError: local variable 'tmp_file' referenced before assignment

root@ubuntu2004:~# python3 --version
Python 3.8.5

root@ubuntu2004:~# fdisk -l | grep sdb
Disk /dev/sdb: 96 GiB, 103079215104 bytes, 201326592 sectors

root@ubuntu2004:~# mount | grep sdb

root@ubuntu2004:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

root@ubuntu2004:~# fiosynth -d /dev/sdb -w HE_Flash_Short -c 0.1 -f HE_FlashShort_sd-bcde
Results are in directory: HE_FlashShort_sd-bcde-2020-12-22_11-20
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/fiosynth-3.5.39-py3.8.egg/fiosynth_lib/fiosynth.py", line 468, in createOffsetFile
PermissionError: [Errno 13] Permission denied: '/tmp/offset.txt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/fiosynth-3.5.39-py3.8.egg/fiosynth_lib/fiosynth.py", line 471, in createOffsetFile
UnboundLocalError: local variable 'tmp_file' referenced before assignment

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/fiosynth", line 11, in <module>
    load_entry_point('fiosynth==3.5.39', 'console_scripts', 'fiosynth')()
  File "/usr/local/lib/python3.8/dist-packages/fiosynth-3.5.39-py3.8.egg/fiosynth_lib/fiosynth.py", line 747, in main
  File "/usr/local/lib/python3.8/dist-packages/fiosynth-3.5.39-py3.8.egg/fiosynth_lib/fiosynth.py", line 732, in runSuite
  File "/usr/local/lib/python3.8/dist-packages/fiosynth-3.5.39-py3.8.egg/fiosynth_lib/fiosynth.py", line 474, in createOffsetFile
UnboundLocalError: local variable 'tmp_file' referenced before assignment

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.