Zoned Storage-Linux Kernel Support 之 Write Ordering Control

Write Ordering Control

从历史上看,Linux® 内核块 I/O 堆栈(即块层和 SCSI 层)从未保证块 I/O 请求的确切执行顺序。 由于块 I/O 请求在内核中执行的异步asynchronous性质以及设备请求队列的细粒度fine-granularity锁模型的必要性(以最小化锁- 多个上下文同时向块设备发出 I/O 请求时的争用开销)。

这种设计的直接结果是无法保证行为良好的 ZBD 兼容应用程序的写入命令将以递增的 LBA 顺序交付(匹配区域顺序写入约束)。
传入的LBA请求时间和空间上都是随机的,因此不适于ZNS的顺序写入规则

为了解决这个问题,内核 ZBD 支持添加了 zone write locking 区域写入锁定,以确保每个区域按顺序处理写入请求。

Zone Write Locking 区域写锁定

区域写入锁定实现了每个区域的写入锁定,以序列化针对同一区域的写入请求的执行。 这个特性不能保证写命令总是在区域写指针的位置发出:这是写 I/O 发出者的责任。 区域写入锁定仅保证应用程序、文件系统或设备映射器目标发出写入命令的顺序将受到块 I/O 堆栈的尊重。 因此,分区块设备的表现良好的用户将避免未对齐的写入命令失败。

区域写入锁定不会以任何方式影响读取命令。 读取请求的序列化和处理方式与常规块设备不同。

Initial Implementation

区域写锁定首先在内核 4.10 的 SCSI 磁盘驱动程序(块层之下)中实现,对已由块 I/O 调度程序传递到设备调度队列的请求进行操作。

这种早期实施依赖于 SCSI 层可以延迟向设备发出任何请求的事实。 通过维护每个区域一个位的位图,SCSI 磁盘驱动程序在看到写入命令时将区域标记为锁定。 此处更详细地介绍了此算法:

  1. 如果要发送到设备的下一个命令不是写入命令,则立即发送该命令。
  2. 如果分派的下一个命令是写入命令,则检查命令的目标区域的区域写入锁定位:
    i. 如果写命令的目标区域未写锁定(即,该位未设置),则该区域被锁定,并且向设备发出写命令。 这两个 操作都是在设备请求队列自旋锁下原子执行的。
    ii. 如果目标区域已被锁定(即该位已设置),则 SCSI 磁盘驱动程序会暂时延迟向设备发出命令,直到区域写入锁定被释放。
    iii. 当一个写命令完成时,该命令的目标区域的区域写锁被释放,并且调度过程被恢复。 这意味着如果调度队列头部的命令针对同一区域,则可以发出命令(当写入命令完成时)(步骤 2.a)。

注意 :如上所示实施的区域写入锁定还可以防止 SAS HBA 或 SATA 适配器意外重新排序命令。 AHCI 规范没有定义向设备发出命令的明确顺序。 结果,许多芯片组无法保证命令的正确顺序。

尽管此实现为传统的单队列块 I/O 路径提供了写入顺序保证并且不依赖于任何特定的 HBA,但它有几个限制:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sklearn中自带了波士顿房价数据集,可以通过以下代码导入: ``` from sklearn.datasets import load_boston boston = load_boston() X = boston.data # 特征矩阵 y = boston.target # 目标向量 ``` 其中,X是一个13维的特征矩阵,y是一个样本数量为506的目标向量。可以通过以下代码查看数据集的描述: ``` print(boston.DESCR) ``` 输出结果如下: ``` .. _boston_dataset: Boston house prices dataset --------------------------- **Data Set Characteristics:** :Number of Instances: 506 :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target. :Attribute Information (in order): - CRIM per capita crime rate by town - ZN proportion of residential land zoned for lots over 25,000 sq.ft. - INDUS proportion of non-retail business acres per town - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise) - NOX nitric oxides concentration (parts per 10 million) - RM average number of rooms per dwelling - AGE proportion of owner-occupied units built prior to 1940 - DIS weighted distances to five Boston employment centres - RAD index of accessibility to radial highways - TAX full-value property-tax rate per $10,000 - PTRATIO pupil-teacher ratio by town - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town - LSTAT % lower status of the population - MEDV Median value of owner-occupied homes in $1000's :Missing Attribute Values: None :Creator: Harrison, D. and Rubinfeld, D.L. This is a copy of UCI ML housing dataset. https://archive.ics.uci.edu/ml/machine-learning-databases/housing/ This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University. The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic prices and the demand for clean air', J. Environ. Economics & Management, vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics ...', Wiley, 1980. N.B. Various transformations are used in the table on pages 244-261 of the latter. The Boston house-price data has been used in many machine learning papers that address regression problems. **References** - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261. - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值