[发明专利]一种提高开放通道固态盘写并行性的方法有效
申请号: | 201910058679.2 | 申请日: | 2019-01-22 |
公开(公告)号: | CN109799959B | 公开(公告)日: | 2020-07-10 |
发明(设计)人: | 童薇;冯丹;刘景宁;覃鸿巍;赵雨桐;彭梦烨;秦俊青 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 曹葆青;李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 提高 开放 通道 固态 并行 方法 | ||
本发明公开了一种提高开放通道固态盘写并行性的方法,包括:创建N个环形缓冲区,分别用于缓存由N个CPU发送的写请求写入的数据;分别在各环形缓冲区的元数据中记录写回通道编号,用于标识将环形缓冲区中的数据写入开放通道固态盘时所选择的通道编号;初始时刻,写回通道编号相同的环形缓冲区数不超过对于每一个环形缓冲区Bi,持续检测其中缓存的数据量Di;在数据量Di大于或等于预设的数据量阈值时获得环形缓冲区Bi的写回通道编号Pi,并通过编号为Pi的通道将环形缓冲区Bi中的全部或部分数据写入开放通道固态盘;其中,N为主机中的CPU总数,M为开放通道固态盘中的通道总数。本发明能够有效提高开放通道固态盘的写并行性。
技术领域
本发明属于固态存储领域领域,更具体地,涉及一种提高开放通道固态盘写并行性的方法。
背景技术
开放通道固态盘(Open-ChannelSSD)是一种新型的固态盘设备。区别于传统的固态盘设备,开放通道固态盘不包含闪存转换层,将对闪存物理地址交给主机管理。
主机对于开放通道固态盘的管理方法主要分为三类:(1)在设备驱动程序中实现闪存转换层,对上层提供通用块接口;(2)在文件系统中实现闪存转换层,对上层提供通用的文件读写接口;(3)在应用程序中实现闪存转换层,直接对闪存进行使用。相比于另外两种管理方法,在设备驱动程序中实现闪存转换层具有更高的兼容性,现有的应用程序与文件系统不需要修改就可以直接对其进行使用。
现有的闪存设备驱动程序,通常会对写请求进行缓存。一种直接的方法是使用一个环形缓冲区。当用户写请求来临时,在环形缓冲区中申请空闲页,然后将数据写入环形缓冲区中。操作系统维持一个内核线程不断检查环形缓冲区中的数据量,一旦超过预先设置的阈值,就将数据写入开放通道固态盘中。由于可能会有多个应用程序同时发起写请求,申请环形缓冲区空闲页时需要对环形缓冲区加自旋锁,从而保证申请空闲页操作的正确性。当用户线程很多时,线程间需要互相竞争以获得缓冲区的自旋锁,没有获得锁的线程会反复查看自旋锁的状态,直到获得锁为止。由于自旋锁的特点,反复查看自旋锁状态的线程不可以被调度,从而会浪费大量处理器时间,进而降低系统性能。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种提高开放通道固态盘写并行性的方法,其目的在于提高开放通道固态盘的写并行性。
为实现上述目的,本发明提供了一种提高开放通道固态盘写并行性的方法,用于在驱动程序中实现对开放通道固态盘的管理,包括:
创建N个环形缓冲区,分别用于缓存由N个CPU发送的写请求写入的数据;
分别在各环形缓冲区的元数据中记录写回通道编号,用于标识将环形缓冲区中的数据写入开放通道固态盘时所选择的通道编号;初始时刻,写回通道编号相同的环形缓冲区数不超过
其中,N为主机中的CPU总数,M为开放通道固态盘中的通道总数,表示向上取整。
在处理写请求时,一个用户线程占用一个CPU,本发明通过创建与主机中多个CPU一一对应的多个环形缓冲区,可以有效减少用户程序在发送写请求时对环形缓冲区的竞争;通过分别记录各环形缓冲区的写回通道编号,可以使得不同环形缓冲区中的数据尽量通过不同的通道写回开放通道固态盘,由此能够有效减小对通道的竞争。总的来说,本发明能够在数据缓存时有效减少对环形缓冲区的竞争,并在数据写回时有效减少对通道的竞争,从而有效提高开放通道固态盘写并行性,进而提高系统的整体写性能。
进一步地,本发明所提供的提高开放通道固态盘写并行性的方法,还包括:
对于每一个环形缓冲区Bi,持续检测其中缓存的数据量Di;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910058679.2/2.html,转载请声明来源钻瓜专利网。