标签: fio

使用 FIO 了解 ZFS NVMe 基准测试

我正在尝试对全 NVMe ZFS 磁盘阵列进行基准测试。我熟悉极快的基准测试结果,由于高效的 ZFS 缓存,磁盘活动非常少。我遇到了相反的情况:大量的 ZFS 磁盘活动,但 FIO 仅显示很少的带宽。我该如何解释这种行为?

Zpool iostat -v 1仅显示一秒,但每秒输出一致:16 至 20 GiB/s 写入带宽

                capacity     operations     bandwidth
pool          alloc   free   read  write   read  write
------------  -----  -----  -----  -----  -----  -----
my_pool-10    1.92T  19.0T      2   155K  95.7K  16.9G
  mirror-0     329G  3.16T      0  26.2K  3.99K  2.84G
    nvme2n1       -      -      0  13.2K      0  1.42G
    nvme3n1       -      -      0  13.1K  3.99K  1.42G
  mirror-1     328G  3.16T      0  26.0K      0  2.83G
    nvme4n1       -      -      0  13.0K      0  1.41G
    nvme5n1       - …
Run Code Online (Sandbox Code Playgroud)

zfs benchmark nvme fio

9
推荐指数
1
解决办法
1365
查看次数

在 mdadm RAID10 之上使用 LUKS 的写入性能比没有使用 LUKS 时差 5 倍

我有很多 NVMe 磁盘的服务器。我正在fio使用以下方法测试磁盘性能:

fio --name=asdf --rw=randwrite --direct=1 --ioengine=libaio --bs=16k --numjobs=8 --size=10G --runtime=60 --group_reporting

对于单个磁盘,LUKS 对性能影响不大。

在此处输入图片说明

我尝试mdadmraid10+ 一个 XFS 文件系统中使用6 个磁盘。它表现良好。

在此处输入图片说明

但是当我在 mdadm 设备上创建一个 LUKS 容器时,我得到了糟糕的性能:

在此处输入图片说明

回顾一下:

  • 6 盘mdadmRAID10 + XFS = 正常性能的 116%,即与单盘 + XFS 相比,写入吞吐量和 IOPS提高16%
  • 6 盘mdadmRAID10 + LUKS + XFS = 正常性能的 33%,即与单盘 + XFS 相比,写入吞吐量和 IOPS67%

在所有其他场景中,我没有观察到 LUKS 和非 LUKS 之间的这种性能差异。这包括 LVM 跨越、条带化和镜像。换句话说,mdadm具有 6 个磁盘的 RAID10(我理解这是跨越 3 个 2 磁盘镜像)、一个 …

raid mdadm luks nvme fio

6
推荐指数
0
解决办法
796
查看次数

fio 3.23 对许多小文件进行基准测试时的核心转储

我被要求fio为这个测试数据集提供基准测试结果:1048576x1MiB。因此,整体大小为1TiB。该集合包含2^20 个 1MiB文件。服务器运行CentOS Linux release 7.8.2003 (Core)。它有足够的内存:

[root@tbn-6 src]# free -g
              total        used        free      shared  buff/cache   available
Mem:            376           8         365           0           2         365
Swap:             3           2           1
Run Code Online (Sandbox Code Playgroud)

它实际上不是物理服务器。相反,它是一个具有以下 CPU 的 Docker 容器:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                48
On-line CPU(s) list:   0-47
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85 …
Run Code Online (Sandbox Code Playgroud)

memory oom crash fio

6
推荐指数
1
解决办法
177
查看次数

为什么使用 O_DIRECT 标志时读取速度更快?

我在 SSD 中复制了一个 10GB 的文件,使用 fio 命令进行基准测试,其读取带宽约为 3.3GB/s。这是参考: https: //cloud.google.com/compute/docs/disks/benchmarking-pd-performance

我使用“sync; echo 3 > /proc/sys/vm/drop_caches”清除了缓存。之后,我尝试每次使用系统调用 open() 和 read() 以 3MB 的小块读取文件。如果我打开没有 O_DIRECT 和 O_SYNC 的文件,它会给我大约 1.2GB/s 的带宽。但是,如果我使用 O_DIRECT 和 O_SYNC,它会提供大约 3GB/s 的带宽。即使 O_DIRECT 也没有真正使用页面缓存,两次都会清除缓存。

我的问题是为什么 O_DIRECT 提供正常的 IO 带宽,而没有 O_DIRECT 我无法获得它。由于从 IO 到页面缓存的数据带宽为 3.3GB/s,从页面缓存到用户缓冲区的带宽假设约为 7GB/si。该管道还应提供正常的 3.3GB/s。为什么速度比较慢?

我每次都会读新的 3MB。我没有重用数据,因此缓存并不是很有用。但是管道应该是受IO约束的,为什么不呢?

CPU 为 Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz。我不确定 DRAM 的速度。但问题是,如果我多次重新读取相同的 3MB,那么我会获得约 8GB/s 的带宽。我想这应该是 DRAM 带宽。因为linux可以使用所有的空闲RAM作为页面缓存。

更新

我尝试了启用和不启用 O_DIRECT 的 fio 命令并记录了 iostat。

使用这个 fio 命令。“fio --name=read_throughput --directory=$TEST_DIR --numjobs=1 --size=10G --time_based --runtime=30s …

linux bandwidth read-only benchmark fio

5
推荐指数
1
解决办法
785
查看次数

RAID 10 XFS 的 FIO 随机 128 MB 读取值非常慢

我刚刚安装了两个 Samsung 970 EVO Plus 驱动器,并将最大分区配置为 RAID\xc2\xa010(远 2 布局)。问题是FIO仅报告读取速度为 72\xc2\xa0MB/s。我使用以下命令来构建数组;

\n
mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md/MyRAID10Array /dev/nvme0n1p3 /dev/nvme1n1p3\n
Run Code Online (Sandbox Code Playgroud)\n

这应该使我接近引用的读取速度 3500\xc2\xa0MB/s 的两倍。我已使用XFS的默认选项对其进行格式化,

\n
mkfs.xfs /dev/md127\n
Run Code Online (Sandbox Code Playgroud)\n

磁盘布局如下

\n
fdisk -l /dev/nvme0n1\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors\nDisk model: Samsung SSD 970 EVO Plus 1TB\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: …
Run Code Online (Sandbox Code Playgroud)

mdadm raid10 fio

1
推荐指数
1
解决办法
487
查看次数

标签 统计

fio ×5

benchmark ×2

mdadm ×2

nvme ×2

bandwidth ×1

crash ×1

linux ×1

luks ×1

memory ×1

oom ×1

raid ×1

raid10 ×1

read-only ×1

zfs ×1