SPDK Delay Bdev 介绍及应用实例

本文介绍了SPDK的Delay Bdev模块,用于模拟IO延迟,适用于测试和调试。通过RPC命令创建、删除和更新delay_bdev,调整读写延迟和P99延迟。此外,还展示了如何结合SPDK和Kernel进行延迟测试,通过实例解释了如何在不同场景下使用Delay Bdev来模拟网络和设备延迟,以分析其对系统性能的影响。
摘要由CSDN通过智能技术生成

温馨提示

由于英文函数名较长,为了获得更佳的阅读体验,建议在手机横屏或电脑网页阅读~

一、背景介绍

2019年3月,SPDK社区首次实现了Delay Bdev,如这个Bdev的名称,主要用来模拟IO的Delay,并在SPDK 19. 07版本中正式发布。本次发布添加了新的bdev 模块“延迟(Delay)”,delay_bdev基于base_bdev,用于模拟驱动设备的延迟,此模块更多用于测试和调试不同IO情况来使用。可以使用新的RPC命令‘bdev_delay_create’来创建delay_bdev。

该RPC测参数包括base_bdev的名称,读写操作的平均延迟和读写操作的P99延迟。平均延迟即性能测试工具比如fio提交到驱动程序的所有I/O的平均延迟。P99 延迟指的是所有I/O中最慢的1%的I/O的延迟。对于具有显著延迟的底层驱动程序来说,这个延迟是一个很好的附加。如果试图在nvme驱动程序或aio设备上实现人工延迟,应该考虑使用Delay Bdev。

二、SPDK为什么要使用Delay Bdev模块

Delay_bdev模块是基于底层的base_bdev之上预先定义的延迟。从而在SPDK应用程序的功能性测试及扩展性测试期间来模拟设备的延迟。例如,为了模拟处理I/O时驱动程序的时延的影响,我们可以基于NULL bdev配置一个delay_bdev来达到同样的效果。Delay Bdev模块不是为了提供特定NVMe驱动延迟的高度模拟,相反,其主要目的是从大的方向上了解我们一般来说的延迟对某些特定应用程序的影响。

三、SPDK Delay Bdev模块介绍

首先,我们介绍SPDK最新代码中几个和delay_bdev相关的函数。主要包括创建delay_bdev、删除delay_bdev和更新delay_bdev的延迟的函数。然后介绍通过使用bdev_nvme_set_options函数,设置spdk host端超时时间设置和超时操作等。

1.

Bdev_delay_create函数

使用bdev_delay_create RPC创建delay_bdev。这个rpc函数有6个参数,第一个表示delay_bdev的名称,第二个代表base_bdev的名称。其余四个参数表示以下延迟值:平均读延迟、平均写延迟、P99读延迟和P99写延迟。在delay_bdev的语境中,P99延迟表示在完成I/O并提交到上层协议之前,1%的I/O至少会达到P99延迟的值。这里所有的延迟都以微秒为单位。bdev_delay_create函数的返回值为新创建bdev的名称。示例命令如下:

rpc.py bdev_delay_create -b Null0 -d delay0 -r 10 --nine-nine-read-latency 50 -w 30 --nine-nine-write-latency 90

该命令将创建一个delay_bdev,平均读和写延迟分别为10微秒和30微秒,P99读和P99写延迟分别为50微秒和90微秒。

名字

可选参数

参数类型

描述

Base_bdev_name

Required

String

Bdev name

Avg_read_latency

Required

Number

平均读延迟(us)

P99_read_latency

Required

Number

P99读延迟(us)

Avg_write_latency

Required

Number

平均写延迟(us)

P99_write_latency

Required

Number

P99 写延迟(us)

表1 bdev_delay_create函数参数及说明

2.

Bdev_delay_delete函数

使用bdev_delay_delete RPC函数来删除delay bdev。示例命令如下:

rpc.py bdev_delay_delete delay0

此函数用于删除创建的delay_bdev,函数的返回值是 true 或者 false。

名字

可选参数

参数类型

描述

name

Required

String

Bdev name

表 2 bdev_delay_delete 函数参数和说明

3.

Bdev_delay_update_latency函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值