尾延迟感知前台垃圾收集算法的制作方法

文档序号:15046897发布日期:2018-07-27 22:52阅读:188来源:国知局
本申请涉及现在尚未授权的于2015年6月5日提交的序列号为14/732,654的美国专利申请,其中,该专利申请要求于2015年3月9日提交的序列号为62/130,597的美国临时专利申请的权益,这两项专利申请通过引用合并于此以用于所有目的。本申请涉及现在尚未授权的于2016年4月19日提交的序列号为15/133,205的美国专利申请,其中,该专利申请要求于2016年1月25日提交的序列号为62/286,926的美国临时专利申请的权益,这两项专利申请通过引用合并于此以用于所有目的。本发明构思总体上涉及固态驱动器(ssd),更具体地讲,涉及为ssd改进尾延迟(taillatency)。
背景技术
::尽管理想的计算机系统将花费相同的时间来处理任何单个查询,但是现实世界却很少是完美的。当曲线图被绘制为将查询的数量与延迟(即,完成查询所需的时间)进行比较的曲线图时,该曲线图将示出在相对短的时间内被应答的一些查询,而其他查询则花费相对长的时间。无论该曲线图的形状如何,处于该曲线图的远端的这些数据点可能存在。由于花费相对长的时间的多个查询处于曲线图的远端并且这些查询的数量通常趋向于零,因此以高延迟对这些查询进行应答所需的时间通常被称为“尾延迟”。计算机系统可能遇到尾延迟的原因有很多。例如,如果需要的数据通常缓存在高速缓存器中,而有些数据被存储在(相对)缓慢的长期存储器(诸如硬盘驱动器)中,则频繁地需要存储在长期存储器中的数据的查询将比对高速缓存器中存储的数据的请求更加缓慢。尾延迟的另一个原因可能是将数据写入长期存储器。写入数据会比读取数据花费更长的时间:例如,即使数据中只有一个字节被改变,当将数据写入固态驱动器(ssd)时,仍然必须对整个块进行写入。后台操作也会延迟完成查询所需的时间。例如,ssd执行垃圾收集操作以识别可被擦除的块(这可能需要将一些数据编程到其他块)。如果当查询到达时正在进行垃圾收集操作,则查询可能必须等到垃圾收集操作完成后才可被满足。由于垃圾收集所导致的这种延迟可能会影响查询的尾延迟。与其他统计数据一样,尾延迟可作为整体性能的百分比来测量。例如,术语“5%的尾延迟”可指查询中的5%具有最大整体延迟,而“1%的尾延迟”可指查询中的1%具有最大整体延迟。在现代计算机数据库系统中,系统的1%的尾延迟是关键的问题。在最坏的情况下,1%的尾延迟可决定服务质量。现代数据库(诸如bigtable、hbase、leveldb、mongodb、sqlite4、rocksdb、wiredtiger和cassandra)使用日志结构合并(lsm)树来管理数据。即使lsm树通常表现出良好性能,但是它们可能具有不良的1%的尾延迟。无论是否有trim支持,数据库缓存器的响应时间可能非常好,但是由于大尺寸数据将被写入到ssd,ssd的响应时间可能很糟糕,并且进行垃圾收集的存储器的响应时间可能产生最差的性能。垃圾收集是1%的尾延迟的主要来源:ssd可能无法避免执行垃圾收集。此外,当数据库使用lsm树时,有时可能发生大型数据库刷新并触发1%的尾延迟,尤其是当这个数据库刷新操作与垃圾收集同时进行时。仍然需要一种改善ssd的尾延迟的方法。技术实现要素:根据示例性实施例的一方面,提供了一种固态驱动器ssd,可包括:主机接口逻辑,用于在ssd从主机接收写命令;闪存,用于存储数据;以及ssd控制器,用于管理对闪存的数据的读写,其中,ssd控制器包括用于即时阈值和尾延迟阈值的存储器以及闪存转换层,其中,闪存转换层包括:即时垃圾收集策略,在自由页的数量小于即时阈值时被调用;尾延迟感知垃圾收集策略,在自由页的数量小于尾延迟阈值时被调用,其中,尾延迟阈值大于即时阈值,其中,尾延迟垃圾收集策略将写命令和垃圾收集命令配对。尾延迟感知垃圾收集策略可执行写命令和垃圾收集命令二者,其中,执行写命令和垃圾收集命令二者所需的时间近似于目标延迟。闪存转换层还可包括决策表,其中,决策表可包括多个对,所述多个对中的每个对可包括多个写命令信息和多个垃圾收集命令信息,其中,执行所述多个对中的每个对所需的时间近似于所述目标延迟。所述写命令信息可以是从包括写命令大小和写命令的数量的集合中提取的;所述垃圾收集命令信息可以是从包括垃圾收集命令大小和垃圾收集命令的数量的集合中提取的。所述多个垃圾收集命令信息可被选择使得执行所述多个对中的每个对所需的时间近似于所述目标延迟。闪存转换层还可包括:计时器,用于确定对多个写命令信息的每一个进行写入所需的多个第一时间以及对多个垃圾收集信息的每一个进行垃圾收集所需的多个第二时间。响应于所述多个第一时间和所述多个第二时间,用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。可响应于目标延迟和尾延迟阈值中的至少一个以及所述多个第一时间和所述多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。即使ssd上的自由页的数量足以完成写命令,尾延迟感知垃圾收集策略仍可被调用。根据示例性示例的另一方面,提供了一种方法,可包括:在固态驱动器ssd接收写命令;确定ssd上的自由页的数量;如果ssd上的自由页的数量小于即时阈值,则使用即时垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量小于尾延迟阈值,则使用尾延迟感知垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量大于或等于尾延迟阈值,则不执行垃圾收集;对ssd执行写命令,其中,尾延迟阈值大于即时阈值,其中,尾延迟垃圾收集策略将写命令和垃圾收集命配对。使用尾延迟感知垃圾收集策略来执行垃圾收集的步骤可包括:执行写命令和垃圾收集命令二者,其中,执行写命令和垃圾收集命令二者所需的时间近似于目标延迟。使用尾延迟感知垃圾收集策略来执行垃圾收集的步骤还可包括:响应于写命令从决策表访问配对后的垃圾收集命令。决策表可包括多个对,其中,所述多个对中的每个对可包括多个写命令信息和多个垃圾收集命令信息,其中,执行所述多个对中的每个对所需的时间近似于目标延迟。所述写命令信息可以是从包括写命令大小和写命令的数量的集合中提取的;所述垃圾收集命令信息可以是从包括垃圾收集命令大小和垃圾收集命令的数量的集合中提取的。所述方法还可包括:对多个写命令大小进行写入来确定执行所述多个写命令大小中的每个写命令大小所需的多个第一时间;对多个垃圾收集命令大小进行垃圾收集来确定执行所述多个垃圾收集命令大小中的每个垃圾收集命令大小所需的多个第二时间。所述方法还可包括:对多个数量的写命令进行写入来确定执行所述多个数量的写命令中的每个数量的写命令所需的多个第一时间;对多个数量的垃圾收集命令进行垃圾收集来确定执行所述多个数量的垃圾收集命令中的每个数量的垃圾收集命令所需的多个第二时间。所述方法还可包括:响应于所述多个第一时间和所述多个第二时间利用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。响应于多个第一时间和多个第二时间利用写命令信息和垃圾收集命令信息的所述多个对来填充决策表的步骤可包括:响应于目标延迟和尾延迟阈值中的至少一个以及所述多个第一时间和所述多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。使用尾延迟感知垃圾收集策略来执行垃圾收集的步骤可包括:即使自由页的数量足以完成写命令,仍使用尾延迟感知垃圾收集策略来执行垃圾收集。根据示例性示例的另一方面,提供了一种包括有形存储介质的装置,其中,所述有形存储介质上存储有非暂时性的指令,所述指令在被机器执行时可引起以下操作:在固态驱动器ssd接收写命令;确定ssd上的自由页的数量;如果ssd上的自由页的数量小于即时阈值,则使用即时垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量小于尾延迟阈值,则使用尾延迟感知垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量大于或等于尾延迟阈值,则不执行垃圾收集;对ssd执行写命令,其中,尾延迟阈值大于即时阈值,其中,尾延迟垃圾收集策略将写命令和垃圾收集命配对。使用尾延迟感知垃圾收集策略来执行垃圾收集的操作可包括:执行写命令和垃圾收集命令二者,其中,执行写命令和垃圾收集命令二者所需的时间近似于目标延迟。附图说明图1示出根据本发明构思的实施例的具有固态驱动器(ssd)的机器。图2示出图1的机器的更多细节。图3示出图1的ssd的细节。图4示出根据本发明构思的另一实施例的图3的使用替代数据的决策表。图5示出图3的闪存转换层的细节。图6a至图6b示出图5的确定是调用图5的即时垃圾收集策略还是调用尾延迟感知垃圾收集策略的比较器。图7示出图5的用于在图5的决策表中使用的确定各种写操作和垃圾收集操作所需的时间的计时器。图8示出用于在图5的决策表中使用的近似地需要目标延迟的写命令与垃圾收集命令对。图9a至图9b示出根据本发明构思的实施例的在接收到写命令时图3的闪存转换层确定是执行图5的即时垃圾收集策略还是执行尾延迟感知垃圾收集策略的示例过程的流程图。图10示出根据本发明构思的实施例的用于使用图5的即时垃圾收集策略的示例过程的流程图。图11示出根据本发明构思的实施例的用于使用图5的尾延迟感知垃圾收集策略的示例过程的流程图。图12示出根据本发明构思的实施例的用于图3的闪存转换层填充图5的决策表的示例过程的流程图。图13示出根据本发明构思的实施例的用于确定图3的尾延迟感知阈值和图8的目标延迟的示例的流程图。具体实施方式现在将详细参考本发明构思的实施例,该实施例的示例在附图中被示出。在下面的详细描述中,许多具体细节被阐述以使得能够透彻地理解本发明构思。然而,应该理解的是,本领域的普通技术人员可在没有这些具体细节的情况下实施本发明构思。在其他情况下,公知的方法、过程、组件、电路和网络未被详细描述,以免不必要地模糊实施例的多个方面。将理解的是,虽然术语第一、第二等可在此处被用于描述各种元件,但是这些元件不应被这些术语所限制。这些术语仅被用于将一个元件与另一元件相区别。例如,在不脱离本发明构思的范围的情况下,第一模块可被称为第二模块,类似地,第二模块可被称为第一模块。此处用于描述本发明构思的术语仅用于描述具体实施例的目的,而不是意在限制本发明构思。除非上下文另有明确说明,否则如在本发明构思和权利要求的描述中所使用的,单数形式也意在包括复数形式。将理解的是,此处使用的术语“和/或”是指并且包含一个或更多个关联列出项的任意组合以及所有可能组合。还将理解的是,术语“包括”和/或“包括......的”在说明书中被使用时表示存在陈述的特征、整数、步骤、操作、元件和/或组件,但是不排除存在或添加一个或更多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不一定按比例绘制。现代数据库(诸如,bigtable、hbase、leveldb、mongodb、sqlite4、rocksdb、wiredtiger和cassandra)通常使用日志结构合并(lsm)树来管理数据。lsm树在减少数据库缓存器和存储器装置之间的实际输入/输出(i/o)的总数上非常有效。这样的数据库应用使用少量的i/o请求来进行接收/输出,但是大多数i/o请求由数据库缓存器执行。当数据库需要将数据存储到后端存储器中时,数据库基于静态排序表(sst)来转换数据集。例如,rocksbd支持6级sst,每级sst具有相关的大小。来自应用的大多数i/o请求命中db缓存器,使得数据库应用具有相当快的响应时间。另一方面,数据库应用具有由sst写入的大尺寸和相关的压缩开销所导致的弱点:可怕的1%的尾延迟。想象在基于lsm树的数据库中可能发生的最坏的情况。假设应用在某处写入(8字节)。不幸的是8字节写入需要sst更新,而该更新需要1gbsst6替换。进一步假设固态驱动器(ssd)或需要垃圾收集的其他存储器装置(诸如,叠瓦式存储hdd)没有充足的自由页(包括预留空间(overprovisioning))来存储数据。因此,前台垃圾收集(fgc)被触发,ssd固件开始对相当于1gb的块执行垃圾收集。在垃圾收集操作完成后,然后应用可将sst写入ssd。因此,为了写入8字节的数据,1gb的数据将被移动到存储器,其中,该过程包括极其缓慢的垃圾收集处理。可通过保持额外阈值点以触发企业版ssd中的垃圾收集来解决尾延迟的问题。如果fgc被触发,则应在对块进行清理之后进行写操作。随着请求的大小的增加,将被清理的块的总数也增加的越多。通过增加5%的尾延迟,可减少1%的尾延迟的影响,从而产生均衡的fgc方案。通过使用该方案,数据库服务供应商可支持比传统ssd更稳定的响应时间。fgc可通过额外阈值点早于传统fgc被触发,在这个fgc期间将被清理的块的数量可根据映射表而改变,而并非与写请求大小相同,并且算法可对fgc提供均衡的输入/输出(i/o)延迟。用于写入的关键开销是擦除时间。擦除1个块所需的时间比写1个块所需的时间要长很多。目的可以是当fgc被触发时将延迟调整为合理。通过添加第二阈值以触发fgc并通过建立表格来决定对于给定的写入应该擦除多少个块,平均延迟对于每个写大小来说应该是相似的。由于lsm树涉及少量的i/o大小,因此这样的方案在与lsm树相结合时特别有用,但是这个方案可与数据库结构结合使用或与其他具有无限写大小的应用结合使用。例如,假设执行128mb写命令所需的时间可被表示为“α个块擦除”+“βmb写入”。根据对特定ssd执行擦除操作所需的时间,这个128mb写延迟可能是例如与用于66mb写命令和33mb擦除命令的时间、用于6mb写命令和66mb擦除命令的时间、用于1mb写时间和99mb擦除命令的时间类似。可建立如表1所示的决策表。表1写大小擦除大小128mb0mb66mb33mb6mb66mb1mb99mb……现在,当ssd接收到写命令时,可查询决策表。如果写命令是要写入超过128mb的数据,则不擦除块。如果写命令是写入超过66mb(但是少于128mb)的数据,则33mb的数据可被擦除。如果写命令是写入超过6mb(但是少于66mb)的数据,则66mb的数据可被擦除。等等。通过将写命令与垃圾收集命令进行配对,用于一对写命令与垃圾收集命令的整体延迟近似于执行128mb写命令所需的整体延迟。通过在多个写命令中分配擦除操作,最差的情况的fgc事件的可能性降低,从而提高了整体性能。请注意,虽然这个示例试图确保写延迟相当于写入128mb的数据,但是可使用其他目标延迟。图1示出根据本发明构思的实施例的具有固态驱动器(ssd)的机器。在图1中,示出了机器105。机器105可以是任何期望的机器,包括但不限于台式或膝上型计算机、服务器(独立式服务器或机架式服务器)或任何可受益于本发明构思的实施例的其他装置。机器105也可包括专用的便携式计算装置、平板计算机、智能电话和其他计算装置。机器105可运行任何期望的应用:数据库应用是好的示例,但是本发明构思的实施例可扩展到任何期望的应用。不考虑机器105的特定形式,机器105可包括:处理器110、存储器115和固态驱动器(ssd)120。处理器110可以是任何种类的处理器:例如,intelxeon、celeron、itanium或atom处理器、amdopteron处理器、arm处理器等。虽然图1示出单个处理器,但是机器105可包括任何数量的处理器。存储器115可以是任何种类的存储器,诸如闪存、静态随机存取存储器(sram)、持久性随机存取存储器、铁电随机存取存储器(fram)或非易失性随机存取存储器(nvram)(诸如磁阻随机存取存储器(mram)等),但存储器115通常是dram。存储器115也可以是不同存储器类型的任何期望的组合。ssd120可以是任何种类的ssd,甚至可被扩展为包括(甚至不使用闪存时)执行垃圾收集的其他类型的存储器。图2示出图1的机器的更多细节。参照图2,通常,机器105包括一个或更多个处理器110,其中,处理器110可包括存储器控制器205和时钟210,其中,时钟210可被用于协调机器105的组件的操作。处理器110也可被耦接到存储器115,其中,作为示例,存储器115可包括随机存取存储器(ram)、只读存储器(rom)或其他状态保存介质。处理器110也可被耦接到存储装置120,并被耦接到网络连接器215,其中,网络连接器215可以是例如以太网连接器或无线连接器。处理器110也可被连接到总线220,其中,其他组件中的用户接口225和输入/输出接口端口可被附接到总线220,其中,可使用输入/输出引擎230来管理输入/输出接口端口。图3示出图1的ssd120的细节。在图3中,ssd120可包括主接口逻辑305、ssd控制器310和各种闪存芯片315-1至闪存芯片315-8,其中,闪存芯片315-1至闪存芯片315-8被组织成各种通道320-1至通道320-4。主接口逻辑305可管理图1的ssd120与机器105之间的通信。ssd控制器310可管理对闪存芯片315-1至闪存芯片315-8的读取操作和写操作以及垃圾收集操作。ssd控制器310可包括闪存转换层325以执行这些管理中的一些。在下面的图5中更详细地示出了闪存转换层325。ssd控制器310也可包括存储器330。存储器330可存储决策表335、即时阈值340和尾延迟感知阈值345。如下面参照图5所描述的,即时阈值340和尾延迟感知阈值345分别代表将被用于触发即时垃圾收集策略和尾延迟感知垃圾收集策略的阈值。即时阈值340和尾延迟感知阈值345可被分别给定为任何期望的值:例如,分别为由图1的ssd120提供的页的总数的1%和5%(考虑或忽略预留空间)保持自由。通常,即时阈值340低于尾延迟感知阈值345:也就是说,可在即时垃圾收集策略之前调用尾延迟感知垃圾收集策略。决策表335可存储写命令大小355-1至355-3和垃圾收集命令大小360-1至360-3的对(pair)350-1至对350-3。命令大小的对350-1至对350-3中的每一个对所需的总体时间(或延迟)近似相同。也就是说,执行在对350-1至对350-3中的每一个对中所指示的大小的写命令和垃圾收集命令所需的时间近似相同。虽然图3示出了将写命令大小355-1至355-3与垃圾收集命令大小360-1至360-3进行配对的对350-1至对350-3,但是执行垃圾收集所需的大部分时间都花在了对块进行擦除的操作上:将目标块中保留的有效数据编程到其他页中所需的时间是可变的并且(相对)最小。因此,决策表335可将写命令大小355-1至355-3与擦除命令大小配对,而不是将写命令大小355-1至355-3与垃圾收集命令大小360-1至360-3进行配对。因此,任何对“垃圾收集命令”的引用都意图只覆盖擦除命令。虽然理想世界可使对350-1至对350-3的每一个对花费完全相同的时间,但是实际世界很少这样精确,如果对350-1至对350-3中的每一个对都在目标延迟的某个增量内,就足够了:也就是说,对350-1至对350-3中的每一个对近似地花费目标延迟。此外,虽然图3示出决策表335包括三个对350-1至350-3,但是本发明构思的实施例可支持决策表335中的任何数量的对。最后,尽管图3示出了存储器330作为ssd控制器310的部件,但是存储器330可仅简单地是闪存转换层325的部件。虽然图3示出ssd120包括被组织成4个通道320-1至通道320-4的8个闪存芯片315-1至芯片315-8,但是本发明构思的实施例可支持被组织成任何数量的通道的任何数量的闪存芯片。虽然决策表335被示出为使用写命令和垃圾收集命令的大小,但是本发明构思的实施例可支持其他方法来估计要对多少个块执行垃圾收集。图4示出根据本发明构思的另一实施例的图3的使用替代数据的决策表335。在图4中,决策表335示出对405-1至对405-3而非存储写命令大小,其中,每一个对包括写入计数410-1至410-3和垃圾收集计数415-1至415-3。写入计数410-1至410-3指定将被执行来完成特定请求的命令的写命令的数量。例如,如参照图5在下文所描述的,操作系统可限制在单个写命令中将被写入的数据量,来避免系统为完成输入/输出(i/o)命令等待太长时间。因此,来自应用的单个写入请求可能导致任何数量的写命令被发送到图1的ssd120。虽然可能不存在将写命令的数量或垃圾收集命令的数量关联到执行命令所需的时间的确切公式,但是通常,将被执行的命令越多,则执行这些命令所需的时间越长。因此,通常能够将命令(写命令或垃圾收集命令)的数量与执行这些命令所需的时间相关联。例如,已知写命令(如从操作系统或文件系统接收的写命令)不大于某个最大大小(例如,128mb)并且针对特定写命令的延迟不大于某个最大延迟(例如,10ms),则完成给定数量的写命令所需的时间的上限可被计算为写命令的数量和针对任何单个写命令的最大延迟的乘积。这个对完成该数量的写命令所需时间的估计可能过于保守,但是这个估计并非不合理(过于保守的估计仅意味着图1的ssd120可能比估计的情况更快地完成写命令)。类似地,垃圾收集计数415-1至415-3可与时间相关联。也就是说,对特定数量的块执行垃圾收集所需的时间相对于被擦除的块的数量大致是线性的。垃圾收集也可涉及对来自被作为垃圾收集目标的块的一些有效数据进行编程:花费多长时间进行编程将取决于将被编程的数据量。但是对来自被作为垃圾收集目标的块的有效数据进行编程所需的时间相对于擦除该块所需的时间是很小的。虽然图3和图4示出使用命令大小或命令的数量的决策表335,但是也可以以任何期望的方式在决策表335中混合这些选项。例如,决策表335可包括包含写命令大小和垃圾收集命令的数量的对。出于这个讨论的目的,术语“命令信息”被定义为意味着将被执行的命令的大小或命令的数量(如以上所使用的这些术语),并可被应用到写命令或垃圾收集。本发明构思的实施例意图覆盖对决策表335的所有可能的这种变化。图5示出图3的闪存转换层325的细节。在图5中,闪存转换层325可包括:即时垃圾收集策略505、尾延迟感知垃圾收集策略510、计时器515和比较器520。即时垃圾收集策略505可指定当图1的ssd120上的自由页的数量达到由即时阈值340所表示的临界水平时如何执行前台垃圾收集。即时阈值340可被给定任何期望的值:例如,图1的ssd120所提供的页的总数的1%(考虑或忽略预留空间)保持自由。尾延迟感知垃圾收集策略510可指定当图1的ssd120上的自由页的数量降低到由尾延迟感知阈值345(其中,尾延迟感知阈值345不低于即时阈值340)所表示的较低水平时如何执行前台垃圾收集。尾延迟感知阈值345可被给定任何期望的值:例如,图1的ssd120所提供的页的总数的5%(考虑或忽略预留空间)保持自由。虽然可为尾延迟感知阈值345选择更低的值,但是理想地,为尾延迟感知阈值345选择的值足够高,使得不再需要即时垃圾收集策略505。选择并实施即时垃圾收集策略505和尾延迟感知垃圾收集策略510的逻辑可在闪存转换层325内的固件中实施。如下文参照图7至图8所描述的,计时器515可被用于测量图1的ssd120花费多长时间来完成写入操作和垃圾收集操作。计时器515的结果可被用于填充决策表335。最后,比较器520可被用于确定是否应调用特定的垃圾收集策略。例如,比较器520可将阈值340和阈值345与图1的ssd120上的自由页的数量进行比较,并使用此比较的结果来确定应调用垃圾收集策略505还是垃圾收集策略510(两者之一)。下文还参照图6a至图6b来讨论比较器520。图6a至图6b示出图5的确定是调用图5的即时垃圾收集策略505还是调用尾延迟感知垃圾收集策略510的比较器520。在图6a中,比较器520被示出将自由页的数量605与尾延迟感知阈值345进行比较:自由页的数量605可以是图1的ssd120上的当前可用的自由页的数量。如果自由页的数量605少于尾延迟感知阈值345,则尾延迟感知垃圾收集策略510可被调用。由于即使不需要垃圾收集操作来执行当前的写命令,尾延迟感知垃圾收集策略510也会调用执行一些垃圾收集操作,因此这些垃圾收集命令可避免图1的ssd120遇到1%的尾延迟情况。在图6b中,比较器520被示出将自由页的数量605与即时阈值340进行比较。如果自由页的数量605少于(可选地,少于或等于)即时阈值340,则即时垃圾收集策略505可被调用。应注意的是,因为尾延迟感知垃圾收集策略510在被使用时可避免1%的尾延迟问题,所以尾延迟感知垃圾收集策略510应在即时垃圾收集策略505之前被调用。因此,尾延迟感知阈值345应该是比即时阈值340大的数。还未被解决的一个问题是图3的决策表335如何被建立。如果存在简单的公式可被用于确定特定写命令或垃圾收集命令将花费多长时间,这将是很好的,但这并不总是可能的。例如,写入两个相邻块所需的时间比写入一个块所需的时间大约多50%。擦除块所需的时间也不必表达为将被擦除的块的数量的函数。(当然,如果ssd的特定模型允许使用这样简单的等式,则确定将擦除的块的数量与给定的写命令配对的过程将变成简单的处理。但是通常,可能无法确定任何这样的等式)。因此,需要以不取决于存在可被使用的等式的方式来填充图3的决策表335。如图7所示,为了填充图3的决策表335,可使用图5的计时器515。在图1的ssd120启动时,图1的ssd120可对各种数量的块执行各种大小的写命令(自行或监控实际流量)(诸如,写命令大小355-1至355-3)和垃圾收集命令(诸如,垃圾收集命令大小360-1至360-3)。然后,计时器515可对这些命令中的每一个命令花费多长时间进行计时,从而生成时间605-1至605-3(写命令355-1至355-3所需的时间)和时间610-1至610-3(垃圾收集命令360-1至360-3所需的时间)。然后,如图8所示,可确定目标延迟805,并且写命令大小355-1至355-3可与垃圾收集命令大小360-1至360-3配对,使得每一对近似地花费目标延迟805(在一定增量范围内)。当然,该问题本身又提出了另一个问题:目标延迟805被如何确定?目标延迟805(和图3的尾延迟感知阈值335)可被提前固定为任何期望的值。例如,图3的尾延迟感知阈值335可被设置为图1的ssd120上的页的数量的5%(其中,该5%的页可被写入数据),目标延迟805可被设置为128mb的写命令的延迟(这段时间恰好针对图1的ssd120)。另一个选择可以是允许客户(例如,所讨论的服务器的管理用户)配置图3的目标延迟805的值和尾延迟感知阈值335的值。(事实上,即使图3的目标延迟805和尾延迟感知阈值335的原始值是使用某个自动或半自动技术来选择的,图1的ssd120的使用也可指示图1的ssd120可受益于这些值的调整:给管理用户用于修改这些值的某个方法将是有益的)。但在实践中,由图1的ssd120所支持的应用和图1的ssd120的工作负载两者均可影响图1的ssd120的性能,并因此影响图1的ssd120何时以及多久会遇到1%的尾延迟情况。例如,大规模数据库系统通常包括执行各种不同功能的服务器:后台服务器、前台服务器、负载服务器、数据服务器等。通常,这些服务器的每一个都具有不同的工作负载。如果这些服务器中的所有ssd都被配置为使用相同的目标延迟和阈值,则整个系统操作可能不是最理想的。优秀的配置将使每个ssd配置有与ssd的工作负载相适应的不同的目标延迟和不同的阈值。因此,可知ssd的预期工作负载可影响图3的目标延迟805和尾延迟感知阈值335的(至少默认)选择。存在一些可确定图1的ssd120的工作负载的方法。例如,当客户安装图1的ssd120时,图1的ssd120可提示客户从列表选择图1的ssd120的预期的工作负载(或者至少最接近这样的匹配)。基于客户选择的工作负载,图1的ssd120可从图1的ssd120中的某处(例如,从存储器330)访问用于图3的目标延迟805和尾延迟感知阈值335的适当的默认值。针对不同工作负载的这些默认值可以以任何期望的方式被确定并存储在图1的ssd120中。例如,可分析具有类似的工作负载的其他ssd的操作来确定这些ssd使用的平均目标延迟和平均尾延迟感知阈值:此平均值随后可作为用于未来ssd的默认值(可基于更加新的数据进行更新)。这个构思还可被扩展到用于图3的决策表335的默认值:执行各种大小的写命令和垃圾收集命令所需的平均时间可被确定并被用于将写命令和垃圾收集命令进行配对来实现期望的目标延迟。(使用平均写入和垃圾收集时间来将默认的对分配给图3的决策表335的缺点是:平均写入和垃圾收集时间不一定代表对图1的ssd120的写入和垃圾收集所需的时间)。另一种方法是客户将关于将要对图1的ssd120施加的工作负载的信息提供给ssd(或ssd供应商)。然后,ssd/供应商可以预先填充图3的决策表335或提供脚本,该脚本可在图1的ssd120首先被上电时使图3的决策表填充自动化。为了使图3的决策表335是有用的,图3的决策表335需包含足够的写命令大小和垃圾收集命令大小对,使得对于给定任何大小的写命令,图3的决策表335中的覆盖该写命令的对将产生近似于目标延迟805的总延迟。在发明构思的一个实施例中,可将写命令分组到多个大小范围中,其中,包括范围中的任何大小的写命令都被认为是被该对所覆盖。例如,在上面的表1中,命令被分组为多个大小范围,其中,所述多个大小范围覆盖0至1mb、1至6mb、6至66mb和66至128mb。对于以相对较小数量的离散大小发送写命令的系统,使用写大小的多个范围来组织图3的决策表335效果很好。例如,日志结构合并(lsm)树以由静态排序表(sst)管理的数据块将数据写入图1的ssd120中,其中,静态排序表(sst)使用有限数量的写大小将数据写入图1的ssd120中。但是,如果将不同大小的写命令以这种方式被分组到一起,则系统可不使用尾延迟感知垃圾收集来达到最佳结果。例如,在上面的表1中,用于写入6mb数据的命令和用于写入66mb数据的命令与相同垃圾收集命令配对。因此,在本发明构思的另一实施例中,图3的决策表335可包括许多离散写大小的对。如果使用了太多不同的写大小,则期望可能是太多的对需要被包含在图3的决策表335中。但是从实用的角度来看,操作系统可能限制单个写命令所写入的数据量。例如,在包括南桥(southbridge)芯片(负责i/o命令)的机器中,i/o命令可不被中断。如果过大的写命令被发送到图1的ssd120,则图1的机器105可能发现自身不合理地延迟以等待完成写命令。因此,许多操作系统(诸如,linux内核)可将写命令限制为最大大小,诸如128mb。如果超过128mb的数据需要被写入,则操作系统可将数据拆分为不超出128mb的块,从而确保图1的机器105忙于执行i/o的最长时间是执行128mb写命令所需的时间。如果图3的决策表335包括128个条目,则每个可能的写大小(以mb测量)都可具有足够的空间来支持的不同对。(当然,如果针对多个不同写大小将擦除相同数量的块,则这些写大小仍可被分组到一个范围内)。图9a至图9b示出根据本发明构思的实施例的在接收写命令时图3的闪存转换层325确定是执行图5的即时垃圾收集策略505还是执行尾延迟阈值策略510的示例过程的流程图。在图9a中,在框905,图1的ssd120可从机器105接收写命令。在框910,图3的闪存转换层325可确定图6的自由页605的数量。在框915(图9b),图5的比较器520可将图6的自由页的数量605与图3的即时阈值340进行比较。如果图6的自由页的数量605少于图3的即时阈值340,则在框920,图3的闪存转换层325可使用图5的即时垃圾收集策略505来执行垃圾收集,之后,在框925,图1的ssd120可执行接收到的写命令。在框915,如果图6的自由页的数量605大于(或可能等于)图3的即时阈值340,则在框930,图5的比较器520可将图6的自由页的数量605与图3的尾延迟感知阈值345进行比较。如果图6的自由页的数量605少于(或可能等于)图3的尾延迟感知阈值345,则在框935,图3的闪存转换层325可使用图5的尾延迟感知垃圾收集策略519来执行垃圾收集,之后在框925,图1的ssd120可执行接收到的写命令。最后,如果图6的自由页的数量605超过图3的即时阈值340和尾延迟感知阈值345,则图1的ssd120可直接进行到在框925执行接收到的写命令。图10示出根据本发明构思的实施例的用于使用图5的即时垃圾收集策略505的示例过程的流程图。在图10中,在框1005,图3的闪存转换层325可确定必须擦除多少个块来释放充足的页以执行接收到的写命令。之后在框1010,图3的闪存转换层325可对所需数量的块执行垃圾收集,之后在框925,图1的ssd120可执行写命令(由于框925在技术上不是执行即时垃圾收集的部分,因此用虚线示出)。图11示出根据本发明构思的实施例的用于使用图5的尾延迟感知垃圾收集策略510的示例过程的流程图。在图11中,在框1105,图3的闪存转换层325可访问图3的决策表335。在框1110,基于接收到的写命令的大小355-1至355-3,图3的闪存转换层325可从图3的决策表335确定要执行的图3的合适的垃圾收集命令大小360-1至360-3。在框1115,如从图3的决策表335所确定的,图3的闪存转换层325可选择用于垃圾收集的适当的数量的块。在框1120,图3的闪存转换层325可将待擦除的块中的任何有效数据复制到临时存储器中(例如,复制到图3的ssd控制器310内的dram中)。在框1125,目标块可被擦除。在框1130,曾经在目标块中的有效数据被编程到图1的ssd120中的其他自由页中,之后在框925,图1的ssd120可执行接收到的写命令(由于框925在技术上不是执行即时垃圾收集的部分,因此用虚线示出)。在本发明构思的一些实施例中,编程操作可被延迟,而不是在执行写命令之前对有效数据进行编程。例如,于2016年4月19日提交的序列号为15/133,205的美国专利申请描述了动态垃圾收集程序/擦除策略可被如何使用,其中,该申请要求于2016年1月25日提交的序列号为62/286,926的美国临时专利申请的权益,这两项专利申请通过引用合并于此以用于所有目的,其中,动态垃圾收集程序/擦除策略可包括将编程操作延迟来提高图1的ssd120的性能。在本发明构思的这种实施例中,对有效数据进行编程可能不发生在框1130,而是发生在框1135。基于已被实施的本发明构思的实施例,虚线1140和虚线1145可指示执行框1130和框1135中的哪一个并跳过哪一个。图12示出根据本发明构思的实施例的用于图3的闪存转换层325填充图3决策表335的示例过程的流程图。在图12中,在框1205,图3的闪存转换层325可确定图3的尾延迟感知阈值345。在框1210,图3的闪存转换层325可基于图3的尾延迟感知阈值345来确定图8的目标延迟805(如上所述,目标延迟805可取决于信息而不是仅仅取决于图3的尾延迟感知阈值345)。在框1215,图3的闪存转换层325可执行或观察各种大小的写命令来确定执行这些写命令所需的时间。在框1220,图3的闪存转换层325可对各种数量的块执行垃圾收集命令来确定执行这些垃圾收集命令所需的时间。(注意,并不是块的每个可能的数量都需要被测试:一旦测试出所需时间超过图8的目标延迟805的数量足够大的块,由于用于写命令和任何更大的垃圾收集命令二者的总时间将超出图8的目标延迟,因此涉及更大数量的块的垃圾收集命令不需要被定时)。在框1225,图3的闪存转换层335可将写命令与垃圾收集命令进行配对,使得执行每个对所需的时间与图8的目标延迟805近似。最后,在框1230,图3的闪存转换层325可使用在框1225中建立的对来填充图3的决策表335。图13示出根据本发明构思的实施例的用于确定图3的尾延迟感知阈值345和图8的目标延迟805的示例的流程图。在图13中,在框1305,图1的ssd120可提示用户提供图3的尾延迟感知阈值345和图8的目标延迟805。可选地,在框1310,图1的ssd120可向机器105的管理用户提示图1的ssd120的预期的工作负载,之后,在框1315,图3的闪存转换层325可确定用于图3的尾延迟感知阈值345和图8的目标延迟805的合适的初始值。虽然图13描述了图1的ssd120向管理用户提示图1的ssd120的预期的工作负载,但是本发明构思的其他实施例可以以其他方式得到该信息。例如,当客户订购图1的ssd120时,客户可向供应商通知图1的ssd120的预期的工作负载,供应商可通过对图8的目标延迟805和图3的尾延迟感知阈值345进行预编程或通过准备可相应地对图1的ssd120进行编程的脚本为该特定的工作负载准备图1的ssd120。在图9a至图13中,示出了本发明构思的一些实施例。但是本领域的技术人员将认识到,通过改变块的顺序、通过省略块或通过包括没有在附图中示出的链路,本发明构思的其他实施例也是可能的。不论是否明确描述,流程图的所有这样的变化都被视为本发明构思的实施例。以下讨论意在提供对可实现本发明构思的特定方面的合适的机器的简洁的、一般的描述。所述机器可至少部分地通过来自传统输入装置(诸如键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(vr)环境的交互、生物反馈或其他输入信号而被控制。如此处使用的,术语“机器”意在广泛地包括单个机器、虚拟机器、或者通信地耦接的一起操作的机器、虚拟机器或装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板等)和运输装置(诸如,私人或公共交通,例如,汽车、火车、出租车等)。机器可包括嵌入式控制器(诸如,可编程或不可编程逻辑器件或阵列)、专用集成电路(asic)、嵌入式计算机、智能卡等。机器可诸如通过网络接口、调制解调器或其他通信耦接而利用与一个或更多个远程机器的一个或更多个连接。机器可通过物理和/或逻辑网络(诸如内联网、互联网、局域网、广域网等)的方式互相连接。本领域的技术人员将理解,网络通信可利用各种有线和/或无线短距离或长距离载波和协议,包括射频(rf)、卫星、微波、电气电子工程师协会(ieee)802.11、光学、红外、电缆、激光等。本发明构思的实施例可通过参照或结合相关数据(包括函数、程序、数据结构、应用程序等)被描述,其中,所述相关数据在被机器访问时导致该机器执行任务或定义抽象数据类型或低级硬件环境。相关数据可被存储在例如易失性存储器和/或非易失性存储器(例如,ram、rom等)中,或被存储在其他存储器装置和它们的关联存储介质(包括硬件驱动器、软盘、光学存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等)中。相关数据可以以包、串行数据、并行数据、传播信号等的形式通过传输环境(包括物理和/或逻辑网络)被传送,并可按照压缩或加密的形式使用。相关数据可在分布式环境中被使用,并被本地和/或远程地存储以用于机器访问。本发明构思的实施例可包括一种包括可由一个或更多个处理器执行的指令的有形非暂时性机器可读介质,其中,所述指令包括用于执行如此处描述的本发明构思的元素的指令。已经参照所示实施例描述并示出了本发明构思的原理,将认识到,所示实施例可在不脱离这样的原理的情况下进行排列和细节上的修改,并且可以以任何期望的方式组合。而且,虽然前面的讨论集中在特定实施例,但是还设想其他的配置。具体地讲,尽管诸如“根据本发明构思的实施例”等的表述被用于此处,但是这些短语一般是指参考实施例的可能性,而不是意在将本发明构思限于特定实施例配置。如此处使用的,这些术语可参考可结合到其他实施例中的相同或不同的实施例。上述示意性实施例不应被解释为限制其发明构思。虽然已经描述了一些实施例,但是本领域的技术人员将容易地认识到:在本质上不脱离本公开的新颖教导和优点的情况下,可对那些实施例做出许多修改。因此,所有这样的修改都意在被包括在如权利要求所限定的本发明构思的范围内。本发明构思的实施例可被扩展到下述声明,但不限于此:声明1、本发明构思的实施例包括一种固态驱动器(ssd),包括:主机接口逻辑,用于在ssd从主机接收写命令;闪存,用于存储数据;以及ssd控制器,用于管理对闪存的数据的读写,其中,ssd控制器包括用于即时阈值和尾延迟阈值的存储器以及闪存转换层,其中,闪存转换层包括:即时垃圾收集策略,在自由页的数量小于即时阈值时被调用;尾延迟感知垃圾收集策略,在自由页的数量小于尾延迟阈值时被调用,其中,尾延迟阈值大于即时阈值,其中,尾延迟感知垃圾收集策略将写命令和垃圾收集命配对。声明2、本发明构思的实施例包括根据声明1的ssd,其中,即时垃圾收集策略可对足够的块执行垃圾收集,以将ssd上的自由页的数量增加至足以满足写命令的数量。声明3、本发明构思的实施例包括根据声明1的ssd,其中,尾延迟感知垃圾收集策略可执行写命令和垃圾收集命令二者,其中,执行写命令和垃圾收集命令二者所需的时间近似于目标延迟。声明4、本发明构思的实施例包括根据声明3的ssd,其中,闪存转换层还包括决策表,其中,决策表包括多个对,所述多个对中的每个对包括多个写命令信息和多个垃圾收集命令信息,其中,执行所述多个对中的每个对所需的时间近似于目标延迟。声明5、本发明构思的实施例包括根据声明4的ssd,其中:写命令信息是从包括写命令大小和写命令的数量的集合中提取的;垃圾收集命令信息是从包括垃圾收集命令大小和垃圾收集命令的数量的集合中提取的。声明6、本发明构思的实施例包括根据声明4的ssd,其中,尾延迟感知垃圾收集策略可响应于写命令信息从决策表访问垃圾收集命令信息。声明7、本发明构思的实施例包括根据声明4的ssd,其中,目标延迟是用户可配置的。声明8、本发明构思的实施例包括根据声明4的ssd,其中,所述多个垃圾收集命令信息被选择以使得执行所述多个对中的每个对所需的时间近似于目标延迟。声明9、本发明构思的实施例包括根据声明4的ssd,其中,响应于尾延迟阈值选择所述多个垃圾收集命令信息。声明10、本发明构思的实施例包括根据声明4的ssd,其中:闪存传唤层还包括:计时器,用于确定对多个写命令信息中的每一个进行写入所需的多个第一时间以及对多个垃圾收集信息中的每一个进行垃圾收集所需的多个第二时间;决策表可响应于所述多个第一时间和所述多个第二时间用写命令信息和垃圾收集命令信息的所述多个对来填充。声明11、本发明构思的实施例包括根据声明10的ssd,其中,可响应于目标延迟和尾延迟阈值中的至少一个以及所述多个第一时间和所述多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明12、本发明构思的实施例包括根据声明1的ssd,其中,尾延迟阈值是用户可配置的。声明13、本发明构思的实施例包括根据声明1的ssd,其中,尾延迟阈值是响应于将被施加到ssd上的工作负载来设置的。声明14、本发明构思的实施例包括根据声明1的ssd,其中,即使ssd上的自由页的数量足以完成写命令,尾延迟感知垃圾收集策略仍可被调用。声明15、本发明构思的实施例包括根据声明1的ssd,其中,垃圾收集命令的编程操作可被延迟到写命令完成之后。声明16、本发明构思的实施例包括一种方法,包括:在固态驱动器(ssd)接收写命令;确定ssd上的自由页的数量;如果ssd上的自由页的数量小于即时阈值,则使用即时垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量小于尾延迟阈值,则使用尾延迟感知垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量大于或等于尾延迟阈值,则不执行垃圾收集;对ssd执行写命令,其中,尾延迟阈值大于即时阈值,其中,尾延迟垃圾收集策略将写命令和垃圾收集命配对。声明17、本发明构思的实施例包括根据声明16的方法,其中,使用即时垃圾收集策略来执行垃圾收集的步骤包括:对足够的块执行垃圾收集,以将ssd上的自由页的数量增加至足以满足写命令的数量。声明18、本发明构思的实施例包括根据声明16的方法,其中,使用尾延迟感知垃圾收集策略来执行垃圾收集的步骤包括:执行写命令和垃圾收集命令二者,其中,执行写命令和垃圾收集命令二者所需的时间近似于目标延迟。声明19、本发明构思的实施例包括根据声明18的方法,其中,使用尾延迟感知垃圾收集策略来执行垃圾收集的步骤还包括:响应于写命令从决策表访问配对后的垃圾收集命令。声明20、本发明构思的实施例包括根据声明19的方法,其中,决策表包括多个对,其中,所述多个对中的每个对包括多个写命令信息和多个垃圾收集命令信息,其中,执行所述多个对中的每个对所需的时间近似于目标延迟。声明21、本发明构思的实施例包括根据声明20的方法,其中:写命令信息是从包括写命令大小和写命令的数量的集合中提取的;垃圾收集命令信息是从包括垃圾收集命令大小和垃圾收集命令的数量的集合中提取的。声明22、本发明构思的实施例包括根据声明20的方法,还包括:可响应于多个第一时间和多个第二时间利用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明23、本发明构思的实施例包括根据声明22的方法,还包括:对多个写命令大小进行写入来确定执行所述多个写命令大小中的每个写命令大小所需的多个第一时间;对多个垃圾收集命令大小进行垃圾收集来确定执行所述多个垃圾收集命令大小中的每个垃圾收集命令大小所需的多个第二时间。声明24、本发明构思的实施例包括根据声明22的方法,还包括:对多个数量的写命令进行写入来确定执行所述多个数量的写命令中的每个数量的写命令所需的多个第一时间;对多个数量的垃圾收集命令进行垃圾收集来确定执行所述多个数量的垃圾收集命令中的每个数量的垃圾收集命令所需的多个第二时间。声明25、本发明构思的实施例包括根据声明22的方法,其中,响应于多个第一时间和多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表的步骤包括:响应于目标延迟和尾延迟阈值中的至少一个以及所述多个第一时间和所述多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明26、本发明构思的实施例包括根据声明25的方法,还包括:确定目标延迟和尾延迟阈值。声明27、本发明构思的实施例包括根据声明26的方法,其中,确定目标延迟和尾延迟阈值的步骤包括:向用户提示目标延迟和尾延迟阈值。声明28、本发明构思的实施例包括根据声明26的方法,其中,确定目标延迟和尾延迟阈值的步骤包括:向用户提示ssd的工作负载;响应于ssd的工作负载来确定目标延迟和尾延迟阈值。声明29、本发明构思的实施例包括根据声明22的方法,其中,响应于多个第一时间和多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表的步骤包括:在ssd启动时,响应于多个第一时间和多个第二时间使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明30、本发明构思的实施例包括根据声明18的方法,其中,执行写命令和垃圾收集命令的步骤包括:将垃圾收集命令的编程操作延迟到写命令完成之后。声明31、本发明构思的实施例包括根据声明16的方法,其中,使用尾延迟感知垃圾收集策略来执行垃圾收集的步骤包括:即使自由页的数量足以完成写命令,仍可使用尾延迟感知垃圾收集策略来执行垃圾收集。声明32、本发明构思的实施例包括一种包含有形存储介质的装置,其中,有形存储介质上存储有非暂时性的指令,所述指令在被机器执行时引起以下操作:在固态驱动器(ssd)接收写命令;确定ssd上的自由页的数量;如果ssd上的自由页的数量小于即时阈值,则使用即时垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量小于尾延迟阈值,则使用尾延迟感知垃圾收集策略来执行垃圾收集;如果ssd上的自由页的数量大于或等于尾延迟阈值,则不执行垃圾收集;对ssd执行写命令,其中,尾延迟阈值大于即时阈值,其中,尾延迟垃圾收集策略将写命令和垃圾收集命配对。声明33、本发明构思的实施例包括根据声明32的装置,其中,使用即时垃圾收集策略来执行垃圾收集的操作包括:对足够的块执行垃圾收集,以将ssd上的自由页的数量增加至足以满足写命令的数量。声明34、本发明构思的实施例包括根据声明32的装置,其中,使用尾延迟感知垃圾收集策略来执行垃圾收集的操作包括:执行写命令和垃圾收集命令二者,其中,执行写命令和垃圾收集命令二者所需的时间近似于目标延迟。声明35、本发明构思的实施例包括根据声明34的装置,其中,使用尾延迟感知垃圾收集策略来执行垃圾收集的操作还包括:响应于写命令从决策表访问配对后的垃圾收集命令。声明36、本发明构思的实施例包括根据声明35的装置,其中,决策表包括多个对,其中,所述多个对中的每个对包括多个写命令大小和多个垃圾收集命令大小,其中,执行所述多个对中的每个对所需的第二时间近似于目标延迟。声明37、本发明构思的实施例包括根据声明36的装置,其中:写命令信息是从包括写命令大小和写命令的数量的集合中提取的;垃圾收集命令信息是从包括垃圾收集命令大小和垃圾收集命令的数量的集合中提取的。声明38、本发明构思的实施例包括根据声明36的装置,有形存储介质上存储有非暂时性的指令,所述指令在被机器执行时引起以下操作:响应于多个第一时间和多个第二时间使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明39、本发明构思的实施例包括根据声明38的装置,有形存储介质上存储有非暂时性的指令,所述指令在被机器执行时引起以下操作:对多个写命令大小进行写入来确定执行所述多个写命令大小中的每个写命令大小所需的多个第一时间;对多个垃圾收集命令大小进行垃圾收集来确定执行所述多个垃圾收集命令大小中的每个垃圾收集命令大小所需的多个第二时间。声明40、本发明构思的实施例包括根据声明38的装置,有形存储介质上存储有非暂时性的指令,所述指令在被机器执行时引起以下操作:对多个数量的写命令进行写入来确定执行所述多个数量的写命令中的每个数量的写命令所需的多个第一时间;对多个数量的垃圾收集命令进行垃圾收集来确定执行所述多个数量的垃圾收集命令中的每个数量的垃圾收集命令所需的多个第二时间。声明41、本发明构思的实施例包括根据声明38的装置,其中,响应于多个第一时间和多个第二时间使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表的操作包括:响应于目标延迟和尾延迟阈值中的至少一个以及所述多个第一时间和所述多个第二时间而使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明42、本发明构思的实施例包括根据声明41的装置,有形存储介质上存储有非暂时性的指令,所述指令在被机器执行时引起以下操作:确定目标延迟和尾延迟阈值。声明43、本发明构思的实施例包括根据声明42的装置,其中,确定目标延迟和尾延迟阈值的操作包括:向用户提示目标延迟和尾延迟阈值。声明44、本发明构思的实施例包括根据声明42的装置,其中,确定目标延迟和尾延迟阈值的操作包括:向用户提示ssd的工作负载;响应于ssd的工作负载来确定目标延迟和尾延迟阈值。声明45、本发明构思的实施例包括根据声明38的装置,其中,响应于多个第一时间和多个第二时间使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表的操作包括:在ssd启动时,响应于多个第一时间和多个第二时间使用写命令信息和垃圾收集命令信息的所述多个对来填充决策表。声明46、本发明构思的实施例包括根据声明34的装置,其中,执行写命令和垃圾收集命令二者的操作包括:将垃圾收集命令的编程操作延迟到写命令完成之后。声明47、本发明构思的实施例包括根据声明32的装置,其中,使用尾延迟感知垃圾收集策略来执行垃圾收集的操作包括:即使自由页的数量足以完成写命令,仍可使用尾延迟感知垃圾收集策略来执行垃圾收集。因此,鉴于对这里描述的实施例的各种排列,该详细描述和所附材料仅意在示意性的目的,而不应被视为限制本发明构思的范围。因此,本发明构思所要求保护的内容是可落入权利要求及其等同物的范围和精神内的所有这样的修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1