Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
31.3. 数据效率测试过程
VDO 的成功验证取决于遵循结构良好的测试过程。本节提供一系列要执行的步骤,以及预期的结果,作为参与评估时需要考虑的测试示例。
测试环境
下一节中的测试案例对测试环境进行以下假设:
- 一个或多个 Linux 物理块设备可用。
- 目标块设备(如
/dev/sdb
)大于 512 GB。 - 安装了灵活的 I/O 测试器(
fio
)版本 2.1.1 或更高版本。 - 已安装 VDO。
在每次测试开始时记录以下信息,以确保测试环境被完全理解:
- 使用的 Linux 构建,包括内核构建号。
- 从 rpm -qa 命令获取安装的软件包的完整列表。
- 完整的系统规格:
- CPU 类型和数量(可在
/proc/cpuinfo 中使用
)。 - 安装的内存和基础操作系统运行后可用的内存(可在
/proc/meminfo 中使用
)。 - 使用的驱动器控制器的类型。
- 使用的磁盘类型和数量.
- 运行中进程的完整列表(来自 ps aux 或类似列表)。
- 物理卷的名称和为 VDO 创建的卷组的名称(pvs 和 vgs 列表)。
- 在格式化 VDO 卷时使用的文件系统(如果有)。
- 挂载的目录的权限。
/etc/vdoconf.yaml 的内容
。- VDO 文件的位置。
您可以通过运行 sosreport 来捕获大部分所需信息。
工作负载
有效测试 VDO 需要使用模拟实际工作负载的数据集。数据集应在数据之间取得平衡,这些数据可以重复数据删除和/或压缩,不能用于在不同的条件下演示性能。
有多种工具可以组合生成具有可重复特征的数据。建议在测试期间使用两个实用程序,特别是 VDbench 和
fio
。
本指南使用
fio.
了解参数对于成功评估至关重要:
表 31.1. FIO 选项
参数 | 描述 | 值 |
---|---|---|
--size | 每个作业的数据 fio 将发送到目标的数量(请参阅以下 numjobs )。 | 100 GB |
--bs | fio 生成的每个读/写请求的块大小。红帽建议使用 4 KB 块大小来匹配 VDO 的 4 KB 默认 | 4k |
--numjobs |
fio 为运行基准而创建的作业数量。
每个作业发送由
--size 参数指定的数据量。
第一个作业根据
--offset 参数指定的偏移向设备发送数据。除非提供了 --offset_increment 参数,否则后续作业会写入磁盘相同的区域(覆盖),这会将上一个作业从该值开始的作业偏移。若要在闪存时达到峰值性能,建议至少有两个作业。一个作业通常足以饱和旋转型磁盘(HDD)吞吐量。
|
1 (HDD)
2 (SSD)
|
--thread | 指示 fio 作业在线程中运行,而不是被分叉,这可以通过限制上下文切换来提供更好的性能。 | <N/A> |
--ioengine |
Linux 中有多种 I/O 引擎可以使用 fio 进行测试。红帽测试使用异步非缓冲引擎(
libaio )。如果您对其他引擎感兴趣,请与红帽销售工程师讨论该引擎。
Linux
libaio 引擎用于评估一个或多个进程同时发出随机请求的工作负载。libaio 允许在检索任何数据之前从单个线程异步发出多个请求,这将限制请求通过同步引擎提供的多个线程所需的上下文切换数量。
| libaio |
--direct |
设置后,Direct 允许将请求提交到设备中,绕过 Linux 内核的页面缓存。
libaio Engine:
libaio 必须与启用 direct 一同使用(=1),或者内核可能为所有 I/O 请求使用 sync API。
| 1(libaio) |
--iodepth |
任意时刻的 I/O 缓冲数。
高
iodepth 通常会提高性能,特别是对于随机读取和写入而言。高深度可确保控制器始终具有批处理请求。但是,设置 iodepth 太大(通常大于 1K)可能会导致不必要的延迟。虽然红帽建议 128 到 512 之间的 iodepth ,但最终值是一个权衡,它取决于您的应用程序如何容忍延迟。
| 128(最小) |
--iodepth_batch_submit | iodepth 缓冲区池开始为空时创建的 I/O 数量。此参数限制任务从 I/O 切换为缓冲创建。 | 16 |
--iodepth_batch_complete | 在提交批处理(iodepth_batch_complete )前要完成的 I/O 数量。此参数限制任务从 I/O 切换为缓冲创建。 | 16 |
--gtod_reduce | 禁用日常调用来计算延迟。如果启用(=0),此设置将降低吞吐量,因此应启用(=1),除非需要测量延迟。 | 1 |
31.3.1. 配置 VDO 测试卷
1.在 512 GB 物理卷中,创建逻辑大小为 1 TB 的 VDO 卷
- 创建 VDO 卷。
- 要在同步存储之上测试 VDO
async
模式,请使用--writePolicy=async
选项创建一个异步卷:# vdo create --name=vdo0 --device=/dev/sdb \ --vdoLogicalSize=1T --writePolicy=async --verbose
- 要在同步存储之上测试 VDO
同步
模式,请使用--writePolicy=sync
选项创建一个同步卷:# vdo create --name=vdo0 --device=/dev/sdb \ --vdoLogicalSize=1T --writePolicy=sync --verbose
- 使用 XFS 或 ext4 文件系统格式化新设备。
- 对于 XFS:
# mkfs.xfs -K /dev/mapper/vdo0
- 对于 ext4:
# mkfs.ext4 -E nodiscard /dev/mapper/vdo0
- 挂载格式化的设备:
# mkdir /mnt/VDOVolume # mount /dev/mapper/vdo0 /mnt/VDOVolume && \ chmod a+rwx /mnt/VDOVolume