就是给fio做了个简陋的gui,fio在linux下都有gfio了,windows下也应该有个类似的gui。
设置的跑分项目完全cosplay crystaldiskmark,可以对比的看看。
下载地址:
链接:https://pan.baidu.com/s/14TZIRMLiLWks8zjQn7BwSg 密码:n9zs
源代码:链接:https://pan.baidu.com/s/1AiR9fazhCMVErgfdtUnTSA 密码:5lp6
鼓励大家修改。
用法很简单。
解压,用管理员权限运行FIO_GUI.exe,选择要测试的磁盘,选择fio.exe的位置(自带了fio 3.18),然后run就行了。
说实话我觉得fio和io meter是同一个玩意,但io meter太久没更新了,fio虽然一直在更新,但用起来又比较繁琐,于是做了这个傻瓜化的gui。
1.JPG (109.46 KB, 下载次数: 0)
2.JPG (159.21 KB, 下载次数: 0)
3.JPG (152.98 KB, 下载次数: 0)
说明:程序没有做多线程异步,所以运行时界面是freeze的,所以放着就行了,跑完后会弹出对话框。测试方法和cdm还是有区别,cdm是Space模式,也就是设定一个大小跑满为止,这个程序默认是跑30秒,可以通过手动调整为cdm的模式,不过个人认为fio还是用time模式比较准确。
kb base的换算模式和cdm保持一直,也就是跑的时候用1024(MiB)做单位,最后显示结果的时候用1000(MB)来换算。
评论
支持树导, 虽然Win下跑fio有点不太健康...
需要安装.Net Core
评论
wpf程序,要装.net core 3.1
评论
左边磁盘选择支持Raw吗, 我手上这台都有分区, 没法证实
评论
需要换其他的ioengine,还没做这个。主要是目前ioengine只写了支持windowsaio。反正对比的是cdm。
评论
了解
评论
第一排测到后面的写就跳出了, 不知为何, 试了两次都是如此
评论
是用管理员权限运行的么?
评论
哈还真是, Administrator账户还需要...
评论
这个还行,之前考虑过要做一个来取代iometer,然后没时间加上iometer很稳定就忘了。
这两天做了跨工具、系统的磁盘工具测试,其实win下iometer比fio还好点。。。感觉这种东西其实本身很简单,fio只是加了不少对应新标准新特性的功能,一般也用不着。等待epyc到货中。。。
8275CL_windows_HoffPoffCoff.JPG (256.72 KB, 下载次数: 0)
评论
昨天发你的两个东西咋样了
评论
其实可以用electron来做gui
评论
昨晚睡早了, 晚上跑
评论
感谢
评论
iometer太久没更新了。
fio其实不止磁盘测试,它支持的io engine太多了,可以做一个统一标准的io测试平台。
ioengine=str
Defines how the job issues I/O to the file. The following types are defined:
sync
Basic read(2) or write(2) I/O. lseek(2) is used to position the I/O location. See fsync and fdatasync for syncing write I/Os.
psync
Basic pread(2) or pwrite(2) I/O. Default on all supported operating systems except for Windows.
vsync
Basic readv(2) or writev(2) I/O. Will emulate queuing by coalescing adjacent I/Os into a single submission.
pvsync
Basic preadv(2) or pwritev(2) I/O.
pvsync2
Basic preadv2(2) or pwritev2(2) I/O.
io_uring
Fast Linux native asynchronous I/O. Supports async IO for both direct and buffered IO. This engine defines engine specific options.
libaio
Linux native asynchronous I/O. Note that Linux may only support queued behavior with non-buffered I/O (set direct=1 or buffered=0). This engine defines engine specific options.
posixaio
POSIX asynchronous I/O using aio_read(3) and aio_write(3).
solarisaio
Solaris native asynchronous I/O.
windowsaio
Windows native asynchronous I/O. Default on Windows.
mmap
File is memory mapped with mmap(2) and data copied to/from using memcpy(3).
splice
splice(2) is used to transfer the data and vmsplice(2) to transfer data from user space to the kernel.
sg
SCSI generic sg v3 I/O. May either be synchronous using the SG_IO ioctl, or if the target is an sg character device we use read(2) and write(2) for asynchronous I/O. Requires filename option to specify either block or character devices. This engine supports trim operations. The sg engine includes engine specific options.
null
Doesn’t transfer any data, just pretends to. This is mainly used to exercise fio itself and for debugging/testing purposes.
net
Transfer over the network to given host:port. Depending on the protocol used, the hostname, port, listen and filename options are used to specify what sort of connection to make, while the protocol option determines which protocol will be used. This engine defines engine specific options.
netsplice
Like net, but uses splice(2) and vmsplice(2) to map data and send/receive. This engine defines engine specific options.
cpuio
Doesn’t transfer any data, but burns CPU cycles according to the cpuload and cpuchunks options. Setting cpuload=85 will cause that job to do nothing but burn 85% of the CPU. In case of SMP machines, use numjobs=<nr_of_cpu> to get desired CPU usage, as the cpuload only loads a single CPU at the desired rate. A job never finishes unless there is at least one non-cpuio job.
guasi
The GUASI I/O engine is the Generic Userspace Asynchronous Syscall Interface approach to async I/O. See
http://www.xmailserver.org/guasi-lib.html
for more info on GUASI.
rdma
The RDMA I/O engine supports both RDMA memory semantics (RDMA_WRITE/RDMA_READ) and channel semantics (Send/Recv) for the InfiniBand, RoCE and iWARP protocols. This engine defines engine specific options.
falloc
I/O engine that does regular fallocate to simulate data transfer as fio ioengine.
DDIR_READ
does fallocate(,mode = FALLOC_FL_KEEP_SIZE,).
DDIR_WRITE
does fallocate(,mode = 0).
DDIR_TRIM
does fallocate(,mode = FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE).
ftruncate
I/O engine that sends ftruncate(2) operations in response to write (DDIR_WRITE) events. Each ftruncate issued sets the file’s size to the current block offset. blocksize is ignored.
e4defrag
I/O engine that does regular EXT4_IOC_MOVE_EXT ioctls to simulate defragment activity in request to DDIR_WRITE event.
rados
I/O engine supporting direct access to Ceph Reliable Autonomic Distributed Object Store (RADOS) via librados. This ioengine defines engine specific options.
rbd
I/O engine supporting direct access to Ceph Rados Block Devices (RBD) via librbd without the need to use the kernel rbd driver. This ioengine defines engine specific options.
http
I/O engine supporting GET/PUT requests over HTTP(S) with libcurl to a WebDAV or S3 endpoint. This ioengine defines engine specific options.
This engine only supports direct IO of iodepth=1; you need to scale this via numjobs. blocksize defines the size of the objects to be created.
TRIM is translated to object deletion.
gfapi
Using GlusterFS libgfapi sync interface to direct access to GlusterFS volumes without having to go through FUSE. This ioengine defines engine specific options.
gfapi_async
Using GlusterFS libgfapi async interface to direct access to GlusterFS volumes without having to go through FUSE. This ioengine defines engine specific options.
libhdfs
Read and write through Hadoop (HDFS). The filename option is used to specify host,port of the hdfs name-node to connect. This engine interprets offsets a little differently. In HDFS, files once created cannot be modified so random writes are not possible. To imitate this the libhdfs engine expects a bunch of small files to be created over HDFS and will randomly pick a file from them based on the offset generated by fio backend (see the example job file to create such files, use rw=write option). Please note, it may be necessary to set environment variables to work with HDFS/libhdfs properly. Each job uses its own connection to HDFS.
mtd
Read, write and erase an MTD character device (e.g., /dev/mtd0). Discards are treated as erases. Depending on the underlying device type, the I/O may have to go in a certain pattern, e.g., on NAND, writing sequentially to erase blocks and discarding before overwriting. The trimwrite mode works well for this constraint.
pmemblk
Read and write using filesystem DAX to a file on a filesystem mounted with DAX on a persistent memory device through the PMDK libpmemblk library.
dev-dax
Read and write using device DAX to a persistent memory device (e.g., /dev/dax0.0) through the PMDK libpmem library.
external
Prefix to specify loading an external I/O engine object file. Append the engine filename, e.g. ioengine=external:/tmp/foo.o to load ioengine foo.o in /tmp. The path can be either absolute or relative. See engines/skeleton_external.c for details of writing an external I/O engine.
filecreate
Simply create the files and do no I/O to them. You still need to set filesize so that all the accounting still occurs, but no actual I/O will be done other than creating the file.
filestat
Simply do stat() and do no I/O to the file. You need to set ‘filesize’ and ‘nrfiles’, so that files will be created. This engine is to measure file lookup and meta data access.
libpmem
Read and write using mmap I/O to a file on a filesystem mounted with DAX on a persistent memory device through the PMDK libpmem library.
ime_psync
Synchronous read and write using DDN’s Infinite Memory Engine (IME). This engine is very basic and issues calls to IME whenever an IO is queued.
ime_psyncv
Synchronous read and write using DDN’s Infinite Memory Engine (IME). This engine uses iovecs and will try to stack as much IOs as possible (if the IOs are “contiguous” and the IO depth is not exceeded) before issuing a call to IME.
ime_aio
Asynchronous read and write using DDN’s Infinite Memory Engine (IME). This engine will try to stack as much IOs as possible by creating requests for IME. FIO will then decide when to commit these requests.
libiscsi
Read and write iscsi lun with libiscsi.
nbd
Read and write a Network Block Device (NBD).
评论
不明觉厉~
评论
ioengine是很多,我记得30多种。在linux下选几个能跑的异步的跑了一遍基本没有差别,但是都比win下低几万iops。感觉要做跨系统测试还要调教。如果这个工程继续的话希望加上以下项目(读记录1000s写记录5000-15000s带宽及平均最大延迟每秒的散点图和统计数据)以及一个qd16x16的项目。另外家用游戏之类io我根据游戏解包和系统抓取做了2个,还在完善中。
profile.JPG (142.08 KB, 下载次数: 0)
目前测试情况看fio主要增强的是功能而不是性能,延迟方面测DCPM两者都没什么区别。所以要更新的话希望功能做的比iom更全,数据模型我可以提供
评论
树导源码放出来不呀?肯定很多人会PR
评论
另外iometer的可以试试那个傻瓜式的ez-iometer
评论
源码:
链接:https://pan.baidu.com/s/1AiR9fazhCMVErgfdtUnTSA 密码:5lp6
评论
目测C#开发的?支持树导
评论
是的,wpf小程序,简单快捷。不过我没用依赖属性,估计会被专业的吐槽。
评论
感觉我也应该学一下,py虽然可以封装但是很麻烦,有些东西也不好封
C# 开发win的本地小程序很快呀
评论
我基本上是哪种方便用哪个。
评论
感谢大佬分享
评论
这程序在笔记本上用正常,然后目录复制到台式机,就不能用,这正常吗?
评论
两个条件,安装.net core 3.1,用管理员权限运行。
评论
是这样的,就是点了运行没反应。 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?