SPDK发布21.07版本

编程入门 行业动态 更新时间:2024-10-24 20:11:14

SPDK发布21.07<a href=https://www.elefans.com/category/jswz/34/1771446.html style=版本"/>

SPDK发布21.07版本

SPDK v21.07

近期,SPDK团队正式发布了21.07版本,一起来看看都有哪些新功能吧!(温馨提示:由于英文函数名较长,为了获得更佳的阅读体验,手机上建议横屏阅读~)

新功能

-内核DSA:在IDXD库添加了对内核DSA驱动的支持。

-Init 库:添加Init库,实现SPDK子系统初始化。

-用户态DTrace:添加了在SPDK应用程序运行bpftrace的支持。详情请访问.html。

- zipf实用程序:添加了可以产生幂律概率分布的zipf随机数发生器。配合使用bdevperf 和nvme perf工具,既可生成覆盖所有LBA的块,同时会更频繁地选择小的LBA地址。

请访问.07,查看本次发布的完整原文。

特别感谢

此版本包括711个提交,35,000个行代码更改,由56位作者共同完成。

在此特别感谢首次提交代码的以下几位贡献者:

               Curt Bruns

               Jakub Wyka

               John Levon

               Jonathan Teh

               Matt Dumm

               Matthew Burbridge

               Rajarshi Chowdhury

               Scott Peterson

               Swapnil Ingle

               Tyler Sun

               Wu Mengjin

               Yuri Kirichok

SPDK开源社区衷心感谢大家的参与、贡献和努力!

详细的发布说明如下:

accel_fw

  • 添加了API spdk_accel_submit_copy_crc32c,在拷贝数据时运行CRC32C。

  • 添加了API spdk_accel_batch_prep_copy_crc32c,分批处理CRC32C和拷贝命令。

  • 添加了API spdk_accel_submit_copy_crc32cv,提交链式CRC32C和拷贝命令。

bdev

  • 将spdk_bdev_read_blocks_with_md arg偏移量定义从int64_t更改为uint64_t。

  • 使用红黑树统一组织bdev名称和别名,实现更快查找。

  • 删除了ZCOPY模拟:可以检查bdev模块是否支持ZCOPY,若不支持则执行现有READ/WRITE命令。

  • 对spdk_bdev_zcopy_start添加了iov。

dpdk

  • DPDK子模块更新至DPDK 21.05。

idxd

  • 移除spdk_idxd_probe 函数中的probe_cb参数。删除spdk_idxd_probe_cb函数指针的定义。应该在idxd_user.c中执行。

  • 添加了API spdk_idxd_submit_copy_crc32c,在拷贝数据的同时运行CRC32C。

  • 添加了API spdk_idxd_batch_prep_copy_crc32c,以编写批处理操作,在拷贝数据的同时运行CRC32C。

  • 我们已经支持accel_engine库(module/accel/idxd/accel_engine)下的用户态idxd驱动程序。此次在accel_engine 库添加了对内核态idxd驱动程序的使用。此方法可实现包装库功能,通过SPDK idx库(lib/idxd)的内核DSA驱动程序,使用IDXD设备。随后,用户可使用RPC,通过用户态驱动程序或内核态驱动程序使用DSA设备,进行相应配置。

init

  • 添加了新的init库,实现SPDK 子系统初始化,SPDK子系统之前位于应用程序框架内部。此功能已公开,不使用SPDK应用程序框架的应用程序可执行该功能。

iscsi

  • 在RPC iscsi_set_options添加了新参数:pdu_pool_size, immediate_data_pool_size, 和data_out_pool_size,以便在不同可用的内存情况下运行iSCSI target。

json

  • 添加了API spdk_json_write_named_uint128和spdk_json_write_uint128,执行uint128相关数据。

net

  • 删除了弃用的net库。

  • 添加了对ZCOPY的支持。如果bdev模块支持ZCOPY且已启用ZCOPY,则ZCOPY会先于READ和WRITE被执行。

nvme

  • spdk_nvme_map_prps和spdk_nvme_map_cmd已移至nvmf/vfio-user,充当内部API,因为vfio-user是上述两个API的唯一用户。

  • 添加了spdk_nvme_ns_cmd_copy新功能,为命名空间提交简单的拷贝命令。

  • 根据NVMe 1.4 spec的定义更新了spdk_nvme_generic_command_status_code结构,包括更新的状态代码。

  • 目前spdk_nvme_ctrlr_get_default_ctrlr_opts将use_cmb_sqs设置为false。这表明,如果控制器有CMB,并在CMB支持SQ,则SPDK默认不会将CMB用于SQ,即用户必须在acttch控制器操作之前将spdk_nvme_ctrlr_opts 结构中的use_cmb_sqs设置为true。

  • 添加了spdk_nvme_detach_poll新功能,简化了常见用例,可在所有分离完全前继续轮询。

  • 为spdk_nvme_ctrlr_register_timeout_callback添加了新参数timeout_admin_us,因此调用方可以给管理员命令或io命令指定不同的超时。

  • 更新了现有的spdk_nvme_detach_async功能,以便在活动上下文轮询时添加一到多个分离。

  • 重命名spdk_nvme_ctrlr_data结构下cmic成员的其一变量,将multi_host更改为multi_ctrlr。如果将该变量设置为1,则表明NVM子系统可能有两个以上的控制器。但multi_host 也曾指示过特殊用况,如NVM子系统被多个主机占用。

  • 对spdk_nvme_ctrlr_opts结构添加了新选项disable_read_ana_log_page,禁用ANA log页面读取。若结果为true,则上层会读取ANA log页面。默认设置为false。

  • 添加了新的API, spdk_nvme_ctrlr_reset_async 和 spdk_nvme_ctrlr_reset_poll_async,以异步重置控制器。

  • 添加了新的RPC bdev_nvme_reset_controller,以重置NVMe控制器。

  • 添加了spdk_nvme_ns_get_nguid 功能,以获取给定命名空间的NSUID。

  • 加了spdk_nvme_ctrlr_is_fabrics功能,以指示ctrlr句柄是否和fabrics控制器关联。

nvmf

  • 添加了min_cntlid和max_cntlid to nvmf_create_subsystem,限制控制器ID范围。

  • 添加了spdk_nvmf_subsystem_get_min_cntlid和spdk_nvmf_subsystem_get_max_cntlid,以请求参数。

  • 删除了spdk_nvmf_request_get_buffers_multi API。

  • 加了nvmf_set_crdt RPC,设置命令重试延时。

  • 扩展了spdk_nvmf_poll_group_stat,包含目前qpair count统计数据。

  • 删除了以下几项弃用的API:

spdk_nvmf_poll_group_get_stat (function in nvmf.h),

spdk_nvmf_transport_poll_group_get_stat (function in nvmf.h),

spdk_nvmf_transport_poll_group_free_stat(function in nvmf.h),

spdk_nvmf_rdma_device_stat (struct in nvmf.h),

spdk_nvmf_transport_poll_group_stat (struct in nvmf.h),

poll_group_get_stat (transport op in nvmf_transport.h),

poll_group_free_stat (transport op in nvmf_transport.h).

rpc

  • 添加了新的RPC bdev_rbd_register_cluster 和 bdev_rbd_unregister_cluster,允许创建并删除rados对象集群,用户即可选择集群,创建相关的rbd设备。

  • 修改了bdev_rbd_create参数,允许使用cluster-name可选参数,在已注册Rados Cluster Object基础上创建rbd bdev。

  • 添加了新的RPC bdev_rbd_get_clusters_info,允许获取已注册Rados Cluster 名称信息。

  • 对bdev_nvme_set_options RPC添加了可选参数timeout_admin_us。

  • 在scripts/rpc.py提供的 bdev_raid_create方法中,将参数stripe-size_kb修改为stripe-size-kb,以保持一致性。

  • 在RPC idxd_scan_accel_engine添加了新的可选参数config_kernel_mode,以启用内核态IDXD驱动程序。

  • 删除了RPC sock_impl_set_options的弃用参数enable-zerocopy-send,改用enable-zerocopy-send-server或enable-zerocopy-send-client。

  • 删除了RPC sock_impl_set_options的弃用参数disable-zerocopy-send,改用disable-zerocopy-send-server或disable-zerocopy-send-client。

rpm

  • 删除了已弃用的pkg/spdk.spec,请改用rpmbuild/spdk.spec。

  • 查看具体信息请访问RPM文档(.html)。

thread

  • 针对timer poller,使用红黑树来进行操作,从而提供更快的插入和删除操作,在io_devices实现更快查找。

  • 从公共头删除了spdk_io_channel结构,将其移至thread_internal.h。

trace

  • 添加了spdk_trace_register_description_ext功能,注册可变数目的跟踪点参数。

  • 添加了链接多个跟踪条目的功能,扩大参数缓冲区的规模。

util

  • 通过使用同个BSD许可协议下FreeBSD操作系统提供的宏,添加了红黑树宏指令。

  • 添加了新的宏SPDK_SIZEOF_MEMBER,用于获取结构体成员的大小。

  • 添加了spdk_crc32c_iov_update功能,支持iovs的crc32c计算。添加可产生幂律概率分布的zipf随机数生成器。应用于块设备的性能测试时,生成器会在全范围LBA进行选择,但会频繁选择小的LBA地址。

转载须知

DPDK与SPDK开源社区

公众号文章转载声明

推荐阅读

2021美国峰会系列一 | SPDK项目状态

2020中国峰会系列七 | 使用SPDK进行容器探索

SPDK | 每秒8千万次I/O性能实现

Release notes for VPP 21.06

点点“赞”“在看”,给我充点儿电吧~

更多推荐

SPDK发布21.07版本

本文发布于:2024-02-27 04:54:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1705245.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:版本   SPDK

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!