fio工具

IO 工具是一款用于测试硬件存储性能的辅助工具,兼具灵活性、可靠性。磁盘的 I/O 是衡量硬件性能的最重要的指标之一,而 FIO 工具通过模拟 I/O负载对存储介质进行压力测试,并将存储介质的 I/O 数据直观的呈现出来。

根据实际业务的场景,一般将 I/O 的表现分为四种场景,随机读、随机写、顺序读、顺序写。FIO 工具允许指定具体的应用模式,配合多线程对磁盘进行不同深度的测试。

1、安装fio工具包到待测试服务器上

方法一:rpm -i ./fio-2.12-1.fc25.x86_64.rpm

如果报错依赖包告警,可以强制安装rpm -ivh ./fio-2.12-1.fc25.x86_64.rpm --nodeps --force

image.png

方法二:在fio官网下载fio-2.1.10.tar文件,解压后./configure、make、make install

2、fio参数解释

nameFIO 运行任务的名称 (可选)

filename=/dev/sdc1

测试设备名称,通常选择设备名/dev/sdc或挂载点下的文件。

-direct=1

使用direct IO,测试过程绕过OS自带的buffer,结果更加真实。

-rw=read

IO模型:

·  read - 顺序读                           ·  write - 顺序写                    ·  trim - 顺序裁剪

·  randread - 随机读                    ·  randwrite - 随机写            ·  randtrim - 随机裁剪

·  rw, readwrite - 混合顺序读写   ·  randrw - 混合的随机读写   ·  trimwrite - 顺序的裁剪 + 顺序写

-bs=4K

单次IO大小

-size=100G

指定单个线程读写的数据量

-iodepth

IO队列深度

-ioengine

指定IO引擎的方式:

libaio - Linux 原生的异步 I/O,这也是通常我们这边用的最多的测试盘吞吐和延迟的方法

psync是使用同步方式,用多线程模拟同时批量给内核提交IO请求,线程中一个IO提交完成后才能提交下一个IO

libaio采用Kernel Native AIO可以达到单次批量给内核提交IO请求的目的,相比psync的多线程,libaio的开销更小,性能更好,更加合适评估内核块子系统的性能

·  sync - 也就是最通常的 read / write 操作

·  vsync - 使用 readv / writev,主要是会将相邻的 I/O 进行合并

·  psync - 对应的 pread / pwrite

·  pvsync / pvsync2 - 对应的 preadv / pwritev,以及 preadv2 / p writev2

-thread  

使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。

-numjobs=1

每个任务的线程数

-name=sqe_100read_4k

指定的任务名称

-runtime

测试时间/s

-group_reporting

显示结果中汇总每个进程的信息,不会输出每个线程的信息,易于查看。

-runtime=1000

测试时间为1000秒,如果不设置则一直将100g文件分4k每次,写完为止

3、实例

对硬盘施压时,需要先定位施压的硬盘,比如sdb

fio --name=test --filename=/dev/sdb --ioengine=libaio --direct=1 --bs=1024k --iodepth=192 --rw=randread --runtime=604800 --time_based

FIO任务名称test,测试设备sdb,引擎方式libaio,使用direct绕过buffer,大小为1024k,IO队列深度192,随机读,测试时间604800

如果压力不够,可以修改队列

cat /sys/block/sdb/queue/nr_requests

echo 1024 > /sys/block/sdb/queue/nr_requests

查看压力情况

iostat -x 1 /dev/sdb

[tecs@host-69 ~]$ fio -name=test -filename=/dev/sdi -ioengine=libaio -direct=1 -bs=8k -iodepth=16 -rw=randread -runtime=604800 -time_based
[root@host-69 tecs]# iostat -x 1 /dev/sdi
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdi               0.00     0.00  258.00    0.00  2064.00     0.00    16.00    16.01   62.00   62.00    0.00   3.88 100.10

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.23    0.00    1.76    0.00    0.00   96.01

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdi               0.00     0.00  266.00    0.00  2128.00     0.00    16.00    16.00   61.45   61.45    0.00   3.76 100.00

以上各列的含义如下:

rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并

wrqm/s: 每秒对该设备的写请求被合并次数

r/s: 每秒完成的读次数

w/s: 每秒完成的写次数

r*B/s: 每秒读数据量(*B为单位)

w*B/s: 每秒写数据量(*B为单位)

avgrq-sz:平均每次IO操作的数据量(扇区数为单位),每个请求平均大小,单位是扇区数,一般在200~400之间算是正常和理想的状态,如果这个值比较小,比方说只在100左右,

这里可以测试一下看fio哪个参数可以影响avgrq-sz

avgqu-sz: 平均等待处理的IO请求队列长度(肯定约低越好)

await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

svctm: 平均每次IO请求的处理时间(毫秒为单位)

%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率(越低越好,越高性能约差)

 %user:在用户级别运行所使用 CPU 的百分比。

   %nice:nice操作所使用 CPU 的百分比。

   %system:在系统级别(kernel)运行所使用 CPU 的百分比。

   %iowait:CPU等待硬件 I/O 时,所占用 CPU 百分比。

   %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

   %idle:CPU 空闲时间的百分比。

 重点关注参数

1、iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题。

2、avgqu-sz 表示磁盘IO队列长度,即IO等待个数。

3、await 表示每次IO请求等待时间,包括等待时间和处理时间

4、svctm 表示每次IO请求处理的时间

5、%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态。

如果压力不够,可以修改队列

cat /sys/block/sdb/queue/nr_requests

echo 1024 > /sys/block/sdb/queue/nr_requests

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要卸载fio工具,可以按照以下步骤进行操作: 1. 首先,打开终端窗口,进入命令行界面。 2. 输入以下命令以确保fio工具已经安装在系统中: ``` fio --version ``` 3. 如果fio工具已经安装,可以使用以下命令卸载它: ``` sudo apt-get remove fio ``` 这个命令会提示输入管理员密码。 4. 输入管理员密码后,系统会自动开始卸载fio工具。在卸载过程中,系统会显示进度和相关信息。 5. 完成卸载后,可以再次输入以下命令来确认fio工具已被卸载: ``` fio --version ``` 如果系统显示“命令未找到”或类似的信息,则表示fio工具已成功卸载。 需要注意的是,以上命令适用于基于Debian或Ubuntu的Linux发行版,如果使用其他发行版,则可能需要使用不同的命令或包管理器进行卸载。在执行卸载前,建议先备份重要数据,以防意外发生。 ### 回答2: 要卸载fio工具,我们可以按照以下步骤进行操作: 首先,我们需要打开终端,并以管理员身份登录系统。在终端中,我们可以输入以下命令来启动linx卸载fio工具的过程。 1. 首先,我们需要找到fio工具的安装路径。我们可以使用以下命令来查找: ``` which fio ``` 2. 一旦我们找到了fio工具的安装路径,我们可以使用以下命令来删除fio工具的二进制文件: ``` sudo rm /path/to/fio ``` 3. 接下来,我们需要删除fio工具的配置文件和相关的数据文件。我们可以使用以下命令来删除它们: ``` sudo rm -rf /etc/fio ``` 4. 最后,我们需要从系统的环境变量中删除fio工具的路径。我们可以通过编辑bashrc文件来实现。运行以下命令以开始编辑bashrc文件: ``` sudo nano ~/.bashrc ``` 5. 在打开的文本编辑器中,我们可以找到并删除包含fio路径的行。然后按Ctrl + X键,然后按Y键保存并关闭文件。 现在,fio工具已经成功从linx系统中卸载。我们可以通过重新启动终端并尝试运行fio命令来验证它是否已从系统中删除。如果系统不再显示有关fio命令的任何输出或错误信息,则表示卸载成功。 ### 回答3: 要卸载fio工具,可以按照以下步骤进行操作: 1. 打开终端窗口,并以root用户身份登录。 2. 使用以下命令列出当前系统中已安装的fio软件包: ```shell dpkg -l | grep fio ``` 3. 根据命令的输出结果,找到相关的fio软件包及其版本号。 4. 使用以下命令卸载fio软件包及其相关依赖: ```shell apt-get remove <软件包名称> ``` 其中,<软件包名称>是步骤3中找到的fio软件包名称。请根据实际情况进行替换。 5. 在卸载过程中,终端可能会提示您确认是否删除相关依赖。根据需要选择是或否。 6. 等待卸载过程完成。 7. 使用以下命令确保fio软件包已被完全卸载: ```shell dpkg -l | grep fio ``` 如果命令的输出结果中不再包含任何关于fio的信息,说明fio已被成功卸载。 8. 可以关闭终端窗口,卸载过程结束。 请注意,上述步骤是基于Debian/Ubuntu系统的apt包管理器进行操作。如果您使用的是其他发行版的Linux系统,如CentOS或Fedora,可以根据其相应的包管理器进行类似的操作,如yum或dnf。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值