当前位置:   article > 正文

新版本!SPDK 发布 v18.07(文末有彩蛋)

查询spdk版本

SPDK社区近期发布了SPDK v18.07,快来看一看都有哪些功能吧!

(温馨提示:英文函数名较长,为了获得更佳的阅读体验,手机上建议横屏阅读~)

bdev

引入了新的公共头文件 bdev_module.h,以便于开发新的bdev模块。此头文件包含 spdk_bdev_part 和 spdk_bdev_part_base 对象的接口,以便在单个基本bdev之上创建多个虚拟bdev,并且应该充当模块作者的主API。

添加了spdk_bdev_get_opts() 和 spdk_bdev_set_opts() 以设置bdev-wide选项。

添加了一种机制,用于处理从bdev层的I/O提交请求返回的内存不足情况错误(ENOMEM)。请参见spdk_bdev_queue_io_wait()。

spdk_bdev_get_io_stat()函数现在返回累计总数,而不是在每次调用时重新置零。这允许多个caller同时查询I/O统计信息而不会相互冲突。 现有用户需要调整其代码以记录先前的I/O统计信息,以计算调用之间的增量。

添加了I/O队列深度跟踪和样本选项。请参见spdk_bdev_get_qd(),spdk_bdev_get_qd_sampling_period()和spdk_bdev_set_qd_sampling_period()。

RAID模块

添加了一个名为“raid”的新bdev模块作为实验模块,它聚合了底层NVMe bdev并公开了一个raid bdev。 请注意,vhost不能与此模块一起使用,因为它还不支持多元素io向量。

Log

多个SPDK应用程序上可用的调试日志组件标志已从-t重命名为-L,以防止与跟踪点混淆,并允许将选项添加到已使用-t表示其他内容的工具中。

Blobstore

添加了一个新函数spdk_bs_dump(),它将blobstore的所有内容转储到文件指针中,包括元数据,这对于调试非常有用。

为精简配置的blob添加了两个新操作:spdk_bs_inflate_blob() 与spdk_bs_blob_decouple_parent() 。

前者将为blob中所有精简配置区域分配集群,并通过从备份blob中读取正确的数据来填充它们;

后者的工作方式类似,但只会分配与blob的直接父节点中的数据相对应的集群。 分配给祖父节点的集群或根本没有被分配的集群将保持精简配置。

BlobFS

将spdk_file_truncate()的返回类型从void更改为int,以允许传递ENOMEM错误。

NVMe驱动

为NVMe错误模拟添加了新的API函数spdk_nvme_qpair_add_cmd_error_injection () 和spdk_nvme_qpair_remove_cmd_error_injection ()。 用户可以将指定的命令设置为失败,并显示特定的错误状态。

将spdk_nvme_ctrlr_register_timeout_callback()中的timeout_sec参数名称更改为timeout_us,并将类型从uint32_t更改为uint64_t。这将为用户提供对超时期限的更细粒度的控制。

NVMe Over Fabrics

spdk_nvmf_tgt_destroy() 函数现在是异步的,并将回调作为参数。

添加了spdk_nvmf_qpair_disconnect() 以允许用户断开qpairs。

添加了spdk_nvmf_subsystem_get_max_namespaces() 以查询给定子系统的最大允许命名空间数。

编译系统

编译系统现在生成一个组合共享库(libspdk.so),可以用它来替代单个静态库(libspdk_* a)。组合库包含SPDK的所有组件,旨在使与SPDK的链接更容易。静态库还提供给那些只链接所需的最小组件集的用户。

git pre-commit与pre-push hooks

pre-commit hook将运行scripts / check_format.sh,并在允许git commit运行之前验证没有格式化错误。在允许git push运行之前,使用gcc和clang编译器运行pre-push hook使CONFIG_WERROR=y在有CONFIG_DEBUG=y和没有CONFIG_DEBUG=y的情况下运行。 在每个DEBUG构建test/ unit / unittest.sh之后运行并验证。结果记录在make.log文件中。

要启用类型:'git config core.hooksPath .githooks'。 要在配置后覆盖,请使用git --no-verify标志。

RPC

start_nbd_disk RPC方法现在返回到内核NBD设备节点的路径,而不总是返回true。

DPDK 18.05

DPDK子模块基于DPDK 18.05版本上进行了重新构建。 DPDK 18.05支持动态内存分配,但由于在DPDK 18.05发布之后发现了一些问题,因此SPDK 18.07未启用该支持。 因此,SPDK 18.07将继续使用传统内存分配模型。 计划在DPDK 18.08版本之后启用动态内存分配,以解决这些问题。

环境抽象层和事件框架

spdk_mem_map_translate()函数现在采用size参数来指示内存区域的大小。 环境实现可以使用它来验证请求的转换。

I/O通道实现已移至其自己的库 - lib / thread。 先前在spdk / io_channel.h中的公共API现在位于spdk / thread.h中。文件spdk / io_channel.h保留并包含spdk / thread.h。

添加了spdk_reactor_get_tsc_stats以返回每个反应器的有趣统计信息。

640?wx_fmt=png

写在最后

本季度的新版本发布包含了来自51位不同作者的757次代码提交 —— 这刷新了SPDK单次发布版本贡献者数量的记录! 在此,我们特别要感谢所有第一次提交代码的贡献者:

Aneesh Pachilangottil

Jakub Radtke

John Barnard

Kunal Sablok

Leonid Ravich

Mike Playle

 Patrick Ohly

Sai Tallamraju

Senthil Kumar V

Shahar Salzman

Srikanth Kaligotla

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

640?wx_fmt=png

640?wx_fmt=png

转发抽奖啦

640?wx_fmt=png

送!京东电子卡

活动规则:带文字将本文转发至朋友圈,并将截图发至公众号后台,小编将随机抽取十位,每人送出一张京东十元电子卡!中奖名单见下期推送。

领取方式:后台发送卡号及卡密。

 推荐阅读 

640?wx_fmt=jpeg

DPDK与SPDK

开源社区

长按识别左侧二维码,关注我们

640?wx_fmt=gif

进入SPDK Github页面查看更多

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/705906
推荐阅读
相关标签
  

闽ICP备14008679号