CN115373852A - 基于i/o调度的功耗控制方法、固态硬盘控制器及固态硬盘 - Google Patents
基于i/o调度的功耗控制方法、固态硬盘控制器及固态硬盘 Download PDFInfo
- Publication number
- CN115373852A CN115373852A CN202211065623.8A CN202211065623A CN115373852A CN 115373852 A CN115373852 A CN 115373852A CN 202211065623 A CN202211065623 A CN 202211065623A CN 115373852 A CN115373852 A CN 115373852A
- Authority
- CN
- China
- Prior art keywords
- power consumption
- solid state
- state disk
- current
- idle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000007787 solid Substances 0.000 title claims abstract description 168
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000012423 maintenance Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 241000238876 Acari Species 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
本申请涉及固态硬盘技术领域,具体涉及一种基于I/O调度的功耗控制方法、固态硬盘控制器及固态硬盘。该方法应用于固态硬盘,包括:获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗;基于固态硬盘的功耗限制获取固态硬盘的可用功耗;根据固态硬盘的CPU频率和固态硬盘可用功耗分配预设时间粒度的功耗量最大值;根据第一平均功耗、第二平均功耗和预设时间粒度的功耗量最大值控制固态硬盘的功耗。本申请提供的方法可以对固态硬盘的功耗实现进行精确控制,方便实施,对于服务器、数据中心等IT基础设施管理和维护中的电费和电力分配具有极大的价值。
Description
技术领域
本申请涉及固态硬盘技术领域,具体涉及一种基于I/O调度的功耗控制方法、固态硬盘控制器及固态硬盘。
背景技术
固态硬盘的主要组成部件包括闪存芯片、控制器、DDR和PCB以及电容电阻等电子器件。通常除了闪存颗粒之外的其他部件产生的功耗比较固定,在不同运行模式下功耗变化不大,绝大部分的动态功耗来源是闪存芯片。闪存芯片的功耗则与闪存芯片需要执行的命令数量成正比,也可以理解为跟整个固态硬盘I/O并发量成正比。
现有的固态硬盘功耗控制只有粗略的功耗控制思路,没有明确和可推演的计算逻辑和原理,也没有具体可实践的功耗计算流程和方法,不能对固态硬盘的功耗进行准确的控制。
发明内容
本申请实施方式主要解决无法准确控制固态硬盘功耗的技术问题。
为解决上述技术问题,本申请实施方式采用的一个技术方案是:提供一种基于I/O调度的功耗控制方法,应用于固态硬盘,所述方法包括:获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗;基于固态硬盘的功耗限制获取固态硬盘可用功耗;根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值;基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。
可选的,所述获取读请求的平均功耗为第一平均功耗包括:获取所述固态硬盘空闲状态的空闲电流和空闲电压;控制所述固态硬盘运行第一并发量的所述读请求,并对应获取所述固态硬盘的第一运行电流和第一运行电压;基于所述第一并发量的所述读请求、所述第一运行电流、所述第一运行电压、所述空闲电压和所述空闲电流,计算所述第一平均功耗。
可选的,所述基于所述第一并发量的所述读请求、所述第一运行电流、所述第一运行电压、所述空闲电压和所述空闲电流,计算所述第一平均功耗包括:根据公式计算所述第一平均功耗;所述公式为:W_Read=(U_busy 1*I_busy1*1–U_idle*I_idle*1)/P_iops1,其中,W_Read为第一平均功耗,U_busy1为第一运行电压,I_busy1为第一运行电流,U_idle为空闲电压,I_idle为空闲电流,P_iops1为第一并发量,即1秒内执行读请求的数量。
可选的,所述获取写请求的平均功耗为第二平均功耗包括:获取所述固态硬盘空闲状态的空闲电流和空闲电压;控制所述固态硬盘运行第二并发量的所述写请求,并对应获取所述固态硬盘的第二运行电流和第二运行电压;基于所述第二并发量的所述写请求、所述第二运行电流、所述第二运行电压、所述空闲电压和所述空闲电流,计算所述第二平均功耗。
可选的,所述基于所述第二并发量的所述写请求、所述第二运行电流、所述第二运行电压、所述空闲电压和所述空闲电流,计算所述第二平均功耗包括:根据公式计算所述第二平均功耗;所述公式为:W_Program=(U_busy2*I_busy2*1–U_idle*I_idle*1)/P_iops2,其中,W_Program为第二平均功耗,U_busy2为第二运行电压,I_busy2为第二运行电流,U_idle为空闲电压,I_idle为空闲电流,P_iops2为第二并发量,即1秒内执行写请求的数量。
可选的,所述基于固态硬盘的功耗限制获取固态硬盘可用功耗包括:获取所述固态硬盘的空闲功耗;获取所述固态硬盘的所述功耗限制;根据所述空闲功耗和所述功耗限制计算所述固态硬盘可用功耗。
可选的,所述根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值包括:根据公式计算所述功耗量最大值;所述公式为:W_tick=P_availble*1秒/F_cpu,其中,W_tick为预设时间粒度的功耗量最大值,(P_availble*1秒)为所述固态硬盘可用功耗,F_cpu为所述固态硬盘的CPU频率。
可选的,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗包括:在一个预设周期内,基于所述预设时间粒度的功耗量最大值和当前调度流程获取当前可用功耗,并获取当前已用功耗;判断所述当前可用功耗是否大于所述当前已用功耗;若是,则对所述当前调度流程中的I/O进行I/O调度,并基于所述当前调度流程中的读请求调度数量和写请求调度数量,结合所述第一平均功耗和所述第二平均功耗对应更新所述当前已用功耗;若否,则不对所述当前调度流程中的I/O进行I/O调度,直至所述当前可用功耗大于所述当前已用功耗。
可选的,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗还包括:在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗。
可选的,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗包括:在一个预设周期内,每进行一个I/O调度前,基于所述预设时间粒度的功耗量最大值和当前调度流程获取当前可用功耗,并获取当前已用功耗;判断所述当前可用功耗是否大于所述当前已用功耗;若是,则进行此次I/O调度,并根据此次I/O调度的I/O类型,结合所述第一平均功耗或者所述第二平均功耗,更新所述当前已用功耗,其中,所述I/O类型包括所述读请求和所述写请求;若否,则不进行此次I/O调度,直至所述当前可用功耗大于所述当前已用功耗。
可选的,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗还包括:在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗。
为解决上述技术问题,本申请实施方式采用的另一个技术方案是:提供一种固件系统,所述固件系统包括:平均功耗获取模块,用于获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗;可用功耗获取模块,用于基于固态硬盘的功耗限制获取固态硬盘可用功耗;功耗量计算模块,用于根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值;功耗控制模块,用于基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。
为解决上述技术问题,本申请实施方式采用的又一个技术方案是:提供一种固态硬盘控制器,包括:上述所述的固件系统;至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述所述的基于I/O调度的功耗控制方法。
为解决上述技术问题,本申请实施方式采用的再一个技术方案是:提供一种固态硬盘,包括:上述所述的固态硬盘控制器,以及与所述固态硬盘控制器通信连接的至少一个闪存介质。
为解决上述技术问题,本申请实施方式采用的还一个技术方案是:提供一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使固态硬盘能够执行如上所述的基于I/O调度的功耗控制方法。
区别于相关技术的情况,本申请提供一种基于I/O调度的功耗控制方法、固态硬盘控制器及固态硬盘,所述方法包括:获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗;基于固态硬盘的功耗限制获取所述固态硬盘的可用功耗;根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值;基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。本申请提供的基于I/O调度的功耗控制方法,通过获取读请求的第一平均功耗和写请求的第二平均功耗,依据设定功耗等级得到可用功耗,基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值对固态硬盘的功耗实现进行精确控制,方便实施,对于服务器、数据中心等IT基础设施管理和维护中的电费和电力分配具有极大的价值。另外,所述方法对功耗量的分配精确到了最小的时间单位tick,因此可以保证整个I/O调度流程的平稳,从而达到性能的平稳。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种基于I/O调度的功耗控制方法的流程示意图;
图2a是本申请实施例提供的一种获取第一平均功耗的方法流程示意图;
图2b是本申请实施例提供的一种获取第二平均功耗的方法流程示意图;
图3是本申请实施例提供的一种获取固态硬盘可用功耗的方法流程示意图;
图4是本申请实施例中预设周期相关的示例图;
图5是本申请实施例提供的一种控制固态硬盘功耗的流程示意图;
图6是图5流程中对应的时间和功耗的示意图;
图7a是本申请实施例提供的另一种控制固态硬盘功耗的流程示意图;
图7b是图7a中进行I/O调度的流程示意图;
图8是图7a和7b流程中对应的时间和功耗的示意图;
图9是本申请实施例提供的固件系统的结构示意图;
图10是本申请实施例提供的固态硬盘控制器的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互组合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块的划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置示意图中的模块划分,或流程图中的顺序执行所示出或描述的步骤。除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
请参阅图1,图1是本申请实施例提供的一种基于I/O调度的功耗控制方法的流程示意图。该方法应用于固态硬盘,所述方法包括:
S11、获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗。本申请实施例中将固态硬盘/闪存芯片需要执行的命令表示为I/O,也可写作IO。通常来说,固态硬盘中闪存颗粒基本命令包括Erase,Program和Read。在固态硬盘业务运行过程中,通常Erase数量占比非常小,几乎可以忽略(通常闪存Page数目非常多,例如一个block里面page个数是1000个时,Program的数量是Erase的1000倍),因此可以不需要对Erase进行单独功耗计算,可以简单使用Program功耗量作为Erase的功耗量。Read的功耗测量需要考虑不同IO Size,Program通常是按照固定的多平面编程(mulitplane program)的粒度进行编程。需要说明的是,为了方便本申请实施例进行解释说明,本申请实施例中用Read命令表示读请求,用Program命令表示写请求。
具体的,请结合图2a,所述获取读请求的平均功耗为第一平均功耗包括:
S111、获取所述固态硬盘空闲状态的空闲电流和空闲电压。通常来说固态硬盘的空闲功耗都是稳定的,可以在固态硬盘空闲状态的时候直接测量出空闲电流I_idle和空闲电压U_idle。
S112、控制所述固态硬盘运行第一并发量的所述读请求,并对应获取所述固态硬盘的第一运行电流和第一运行电压。其中,第一并发量设定为P_iops1,测量固态硬盘在此状态下的电压值和电流值作为第一运行电流I_busy1和第一运行电压U_busy1。需要说明的是,本实施例中以一秒为时间长度进行示例计算,即1秒内执行Read命令的数量是P_iops1。
S113、基于所述第一并发量的所述读请求、所述第一运行电流、所述第一运行电压、所述空闲电压和所述空闲电流,计算所述第一平均功耗。以1秒为时间长度,1秒内动态功耗量为:U_busy1*I_busy1*1–U_idle*I_idle*1。由此可以得到单个Read命令的平均功耗值(W_read),即第一平均功耗W_read=(U_busy1*I_busy1*1–U_idle*I_idle*1)/P_iops1,其中,W_read为第一平均功耗,U_busy1为第一运行电压,I_busy1为第一运行电流,U_idle为空闲电压,I_idle为空闲电流,P_iops1为第一并发量,即1秒内执行Read命令的数量。
与上述获取读请求的平均功耗为第一平均功耗的步骤类似,请结合图2b,所述获取写请求的平均功耗为第二平均功耗包括:
S1101、获取所述固态硬盘空闲状态的空闲电流和空闲电压。在固态硬盘空闲状态时测量出空闲电流I_idle和空闲电压U_idle。
S1102、控制所述固态硬盘运行第二并发量的所述写请求,并对应获取所述固态硬盘的第二运行电流和第二运行电压。同样以一秒为时间长度,即1秒内执行Program命令的数量是P_iops2,第二并发量设定为P_iops2,测量固态硬盘在此状态下的电压值和电流值作为第二运行电流I_busy2和第二运行电压U_busy2。
S1103、基于所述第二并发量的所述写请求、所述第二运行电流、所述第二运行电压、所述空闲电压和所述空闲电流,计算所述第二平均功耗。同样以1秒为时间长度,1秒内动态功耗量为:U_busy2*I_busy2*1–U_idle*I_idle*1。由此可以得到单个Program命令的平均功耗值(W_program),即第二平均功耗W_program=(U_busy2*I_busy2*1–U_idle*I_idle*1)/P_iops2,其中,W_program为第二平均功耗,U_busy2为第二运行电压,I_busy2为第二运行电流,U_idle为空闲电压,I_idle为空闲电流,P_iops2为第二并发量,即1秒内执行Program命令的数量。
S12、基于固态硬盘的功耗限制获取固态硬盘可用功耗。具体的,请结合图3,所述基于固态硬盘的功耗限制获取固态硬盘可用功耗包括:
S121、获取所述固态硬盘的空闲功耗。通常来说固态硬盘的空闲功耗都是稳定的,可以通过固态硬盘的电压和电流计算出来,本实施例中将空闲功耗表示为P_idle。
S122、获取所述固态硬盘的所述功耗限制。固态硬盘通常会支持一些功耗等级,例如,某固态硬盘支持5级功耗控制,功耗等级为0级时,不控制功耗;功耗等级为1、2、3、4和5时,分别对应的功耗控制目标为18w、16w、14w、12w和10w(瓦特)。
S123、根据所述空闲功耗和所述功耗限制计算所述固态硬盘的所述可用功耗。本申请实施例中将当前功耗等级对应的功耗限制记为P_curLevel,表示固态硬盘需要把功耗控制在不超过P_curLevel的程度。由此可以得到当前的可用功耗P_available=P_curLevel–P_idle,基于所述可用功耗对单位时间的I/O调度功耗量进行控制,便可以得到预期的功耗控制目标。以上述示例中的功耗控制等级为例,假设用户当前设定的功耗等级为3,对应的功耗控制目标则是14w,假设预先测量该固态硬盘的空闲功耗是6w,那么可用功耗就是8w,此时则该固态硬盘基于8w的功耗控制目标对I/O调度功耗量进行控制控制。
S13、根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值。为了保持I/O调度的平稳从而达到性能的平稳,可以将I/O调度量的分配切分尽量小的时间粒度。通常固态硬盘CPU内部最小时间单位是tick,本申请实施例中将一个tick作为一个预设时间粒度。tick单位与固态硬盘CPU主频有关,假定CPU时钟频率是F_cpu,即CPU每秒有F_cpu个tick,一个tick的时间是1/(F_cpu)秒,于是可以计算出一个tick可以分配的功耗量:W_tick=P_availble*1秒/F_cpu,其中,W_tick为预设时间粒度的功耗量最大值,即一个tick可以分配的功耗量,(P_availble*1秒)为所述固态硬盘可用功耗(1秒),F_cpu为所述固态硬盘的CPU频率。
S14、基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。
请结合图4,本实施例以预设周期T1=1秒作为示例进行说明,假设将预设周期T1划分为8个调度流程,即图4中的t1-t8,每个调度流程包括n个tick时间内调度多个I/O,图4中的示例表示t1调度流程用时为40个tick,这40个tick对应的时间内固态硬盘执行了n个I/O调度。可以理解的是,各个调度流程的用时可以不相同,例如第一个调度流程用时为40个tick,第二个调度流程用时为100个tick等。固态硬盘执行I/O调度会消耗功率,在步骤S11中可以分别获取Read命令和Program命令的平均功耗,即第一平均功耗和第二平均功耗。可以理解的是,图4中的画法仅为了方便解释说明预设周期、调度流程和I/O调度数量之间的关系,并不具备任何时间比例上的限定作用。
请参阅图5,图中的StartTick表示起始tick;CurrentTick表示固态硬盘CPU当前tick值;ElapsedTick表示已经过去的tick数量,可以理解为已经过去的时间长度;IOSchedule表示执行I/O调度;W_tick为预设时间粒度的功耗量最大值,即一个tick可以分配的功耗量;W_credit表示当前时间点的可用功耗,即当前可用功耗,其值等于ElapsedTick*W_tick;W_usedCredit表示当前时间点已经使用的功耗量,即当前已用功耗,在执行I/O调度后会将对应的功耗量累加至当前已用功耗。
需要说明的是,本实施例中的计算逻辑中,用于分配的当前可用功耗(W_credit)是基于时间长度增加的,时间越长,分配的I/O调度量越多,即,W_credit=ElapsedTick*W_tick;当前已用功耗(W_usedCredit)也是随I/O调度而增加的,I/O调度越多,消耗的功耗量越多,且当前已用功耗不能超过当前分配的当前可用功耗,若超过则会限制I/O的调度。由于随着时间推移,相关变量值(包括当前可用功耗和当前已用功耗等)会越来越大,为了避免溢出,本方法设定了一个预设周期,定期对计数进行复位处理,这个预设周期是为了避免相关数值溢出,假定控制周期为1秒。
图5所示的流程中,执行初始化功耗相关变量之前,基于步骤S11-12获取各功耗数据,计算Read命令的第一平均功耗、Program命令的第二平均功耗,以及预设时间粒度的功耗量最大值,W_read=(U_busy 1*I_busy1*1–U_idle*I_idle*1)/P_iops1;W_program=(U_busy2*I_busy2*1–U_idle*I_idle*1)/P_iops2;W_tick=P_availble*1秒/F_cpu。然后初始化功耗控制相关的变量,包括StartTick、W_credit和W_usedCredit。
所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗包括:
在一个预设周期T1内,基于所述预设时间粒度的功耗量最大值和当前调度流程获取当前可用功耗,并获取当前已用功耗。
判断所述当前可用功耗W_credit是否大于所述当前已用功耗W_usedCredit;若是,则对所述当前调度流程中的I/O进行I/O调度,并基于所述当前调度流程中的Read命令调度数量和Program命令调度数量,结合所述第一平均功耗和所述第二平均功耗对应更新所述当前已用功耗W_usedCredit;若否,则不对所述当前调度流程中的I/O进行I/O调度,直至所述当前可用功耗W_credit大于所述当前已用功耗W_usedCredit。
由图可知,进行I/O调度时,当前调度流程中,每调度一个Read IO,则当前已用功耗W_usedCredit加上W_read;每调度一个Program IO,则当前已用功耗W_usedCredit加上W_program。一次调度流程中可以包含多个I/O,即可以执行多次I/O调度,则W_usedCredit基于当前调度流程中的I/O调度数量和类型对应增加。
在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗。
请结合图6,图6中以一个预设周期T1执行了7个调度流程(t1-t7)为例,图中上层方框内的斜线阴影部分表示当前可用功耗W_credit,下层方框内的交叉线阴影部分当前已用功耗W_usedCredit,方框用于表示预设周期限制(以1秒为例)。需要说明的是,图中每个调度流程对应的两条方框图对应当前调度流程开始时刻,例如,t1对应的两条方框图表示:第一次调度开始的时刻,当前可用功耗为上层斜线阴影部分,由于此时还没有调度I/O(指该预设周期内),下层当前已用功耗为零。
以图6为例,t1开始时,当前可用功耗为上层斜线阴影部分,当前已用功耗为零,W_credit>W_usedCredit,对t1中的I/O进行I/O调度,并基于t1中的Read命令和Program命令数量对应增加当前已用功耗;t2开始时,当前可用功耗为上层斜线阴影部分,当前已用功耗为下层交叉线阴影部分,W_credit>W_usedCredit,对t2中的I/O进行I/O调度,并基于t1中的Read命令和Program命令数量对应增加当前已用功耗,t3同理。而在t4开始时,此时W_credit<W_usedCredit,说明当前已用功耗已经超过当前分配的当前可用功耗,此时限制I/O的调度,即暂停调度I/O,直至随着时间的增加,当前可用功耗增加且大于当前已用功耗时,再继续进行I/O调度,直至预设周期T1结束,进入下一个预设周期。
在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗,即图5中的参数复位,W_usedCredit=0,还有刷新起始tick值,StartTick=currentTick。可以理解的是,为了方便计算和说明,本实施例中以T1=1秒作为示例进行说明,在其他一些情况下,所述预设周期T1可以根据实际情况自行设置合适的时间。
在其他一些实施例中,请参阅图7a和7b,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗包括:
在一个预设周期内,每进行一个I/O调度前,基于所述预设时间粒度的功耗量最大值和当前调度流程获取当前可用功耗,并获取当前已用功耗。
判断所述当前可用功耗W_credit是否大于所述当前已用功耗W_usedCredit;若是,则进行此次I/O调度,并根据此次I/O调度的I/O类型,结合所述第一平均功耗或者所述第二平均功耗,更新所述当前已用功耗,其中,所述I/O类型包括所述Read命令和所述Program命令;若否,则不进行此次I/O调度,直至所述当前可用功耗W_credit大于所述当前已用功耗W_usedCredit。
在下一个所述预设周期开始时,重置所述可用I/O调度量和所述已用I/O调度量。
由图可知,进行I/O调度时,若调度一个Read IO,则当前已用功耗W_usedCredit加上W_read;若调度一个Program IO,则当前已用功耗W_usedCredit加上W_program,即当前W_usedCredit基于当前调度的I/O类型对应增加。
请结合图8,图8中以执行7个I/O为例,图中上层方框内的斜线阴影部分表示当前可用功耗W_credit,下层方框内的交叉线阴影部分表示当前已用功耗W_usedCredit,方框用于表示预设周期限制(以1秒为例)。需要说明的是,图中每个I/O对应的两条方框图对应当前I/O开始时刻,例如,IO1-tick1对应的两条方框图表示:IO1进入流程的时刻,此时也是tick1开始的时刻,当前可用功耗为上层斜线阴影部分,由于此时(该预设周期开始时刻)还没有调度I/O(指该预设周期内),下层当前已用功耗为零。
以图8为例,IO1进入流程时,当前可用功耗为上层斜线阴影部分,当前已用功耗为零,W_credit>W_usedCredit,对IO1进行调度,并基于IO1的类型对应增加当前已用功耗W_usedCredit;当IO2进入流程时(假设此时还处于tick1内),当前可用功耗为上层斜线阴影部分,当前已用功耗为下层交叉线阴影部分,W_credit>W_usedCredit,对IO2进行调度,并基于IO2的类型对应增加当前已用功耗W_usedCredit,IO3同理。当IO4进入流程时,假设此时进入tick2,当前可用功耗增加,仍旧是W_credit>W_usedCredit,对IO4进行调度,并基于IO4的类型对应增加当前已用功耗W_usedCredit,IO5同理。而在IO6进入流程时,假设此时仍处于tick2,但是此时W_credit<W_usedCredit,说明当前已用功耗已经超过当前分配的当前可用功耗,此时限制I/O的调度,即暂停调度I/O,直至tick3开始时,当前可用功耗增加且大于当前已用功耗,再继续对IO6进行调度,如此继续。
在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗,即图7a中的参数复位,W_usedCredit=0,还有刷新起始tick值,StartTick=currentTick。
与上述图5和图6对应的控制固态硬盘的功耗方法不同,图5和图6对应的控制固态硬盘的功耗方法是基于调度流程层面的控制,执行效率高;而图7a、7b和图8对应的控制固态硬盘的功耗方法是基于I/O层面的控制,控制粒度精准,在实际使用中,用户可以根据不同的应用环境选择合适的控制层面进行功耗控制。
本申请提供的基于I/O调度的功耗控制方法,通过获取Read命令的第一平均功耗和Program命令的第二平均功耗,依据设定功耗等级得到可用功耗,基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值对固态硬盘的功耗实现进行精确控制,方便实施,对于服务器、数据中心等IT基础设施管理和维护中的电费和电力分配具有极大的价值。另外,所述方法对功耗量的分配精确到了最小的时间单位tick,因此可以保证整个I/O调度流程的平稳,从而达到性能的平稳。
请参阅图9,本申请实施例提供一种固态硬盘控制器的固件系统300,所述固件系统300包括:
平均功耗获取模块31,所述平均功耗获取模块31可以获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗,基于所述固态硬盘空闲状态的空闲电流和空闲电压,针对读请求和写请求进行运算,分别获取读请求的第一平均功耗和写请求的第二平均功耗。
可用功耗获取模块32,所述可用功耗获取模块32可以基于固态硬盘的功耗限制获取固态硬盘可用功耗,通过获取所述固态硬盘的空闲功耗和功耗限制,并根据P_available=P_curLevel–P_idle来计算出所述固态硬盘的可用功耗,其中,P_available为可用功耗,P_curLevel为功耗限制,P_idle为空闲功耗。
功耗量计算模块33,所述功耗量计算模块33可以根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值。具体可以根据公式:W_tick=P_availble*1秒/F_cpu计算所述功耗量最大值,其中,W_tick为预设时间粒度的功耗量最大值,(P_availble*1秒)为所述固态硬盘可用功耗,F_cpu为所述固态硬盘的CPU频率。
功耗控制模块34,所述功耗控制模块34可以基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。包括基于调度流程层面来控制固态硬盘的功耗,或者基于I/O层面来控制固态硬盘的功耗。
需要说明的是,上述固件系统可执行本申请实施例所提供的基于I/O调度的功耗控制方法,具备执行方法相应的功能模块和有益效果。未在固件系统实施例中详尽描述的技术细节,可参见本申请实施例所提供的基于I/O调度的功耗控制方法。
请参阅图10,图10是本发明实施例提供的一种固态硬盘控制器的结构示意图,该固态硬盘控制器500可用于执行上述基于I/O调度的功耗控制方法。该固态硬盘控制器500包括:
如上所述的固态硬盘固件系统;一个或多个处理器51以及存储器52,图10中以一个处理器51为例。
处理器51和存储器52可以通过总线或者其他方式连接,图10中以通过总线连接为例。
存储器52作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于I/O调度的功耗控制方法对应的程序指令/模块。处理器51通过运行存储在存储器52中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例基于I/O调度的功耗控制方法。
存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据固件系统的使用所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至固件系统。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器52中,当被所述一个或者多个处理器51执行时,执行上述任意方法实施例中的基于I/O调度的功耗控制方法,例如,执行以上描述的方法步骤和实现图9中的模块的功能。
本发明实施例还提供一种固态硬盘,所述固态硬盘纵向划分为多个依次编号的die,所述固态硬盘包括上述的固态硬盘控制器和与所述固态硬盘控制器通信连接的至少一个闪存介质。
上述产品可执行本发明实施例所提供的基于I/O调度的功耗控制方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的基于I/O调度的功耗控制方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (14)
1.一种基于I/O调度的功耗控制方法,应用于固态硬盘,其特征在于,所述方法包括:
获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗;
基于固态硬盘的功耗限制获取固态硬盘可用功耗;
根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值;
基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。
2.根据权利要求1所述的方法,其特征在于,所述获取读请求的平均功耗为第一平均功耗包括:
获取所述固态硬盘空闲状态的空闲电流和空闲电压;
控制所述固态硬盘运行第一并发量的所述读请求,并对应获取所述固态硬盘的第一运行电流和第一运行电压;
基于所述第一并发量的所述读请求、所述第一运行电流、所述第一运行电压、所述空闲电压和所述空闲电流,计算所述第一平均功耗。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一并发量的所述读请求、所述第一运行电流、所述第一运行电压、所述空闲电压和所述空闲电流,计算所述第一平均功耗包括:
根据公式计算所述第一平均功耗;
所述公式为:W_read=(U_busy1*I_busy1*1–U_idle*I_idle*1)/P_iops1,其中,W_read为第一平均功耗,U_busy1为第一运行电压,I_busy1为第一运行电流,U_idle为空闲电压,I_idle为空闲电流,P_iops1为第一并发量,即1秒内执行读请求的数量。
4.根据权利要求1所述的方法,其特征在于,所述获取写请求的平均功耗为第二平均功耗包括:
获取所述固态硬盘空闲状态的空闲电流和空闲电压;
控制所述固态硬盘运行第二并发量的所述写请求,并对应获取所述固态硬盘的第二运行电流和第二运行电压;
基于所述第二并发量的所述写请求、所述第二运行电流、所述第二运行电压、所述空闲电压和所述空闲电流,计算所述第二平均功耗。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第二并发量的所述写请求、所述第二运行电流、所述第二运行电压、所述空闲电压和所述空闲电流,计算所述第二平均功耗包括:
根据公式计算所述第二平均功耗;
所述公式为:W_program=(U_busy2*I_busy2*1–U_idle*I_idle*1)/P_iops2,其中,W_program为第二平均功耗,U_busy2为第二运行电压,I_busy2为第二运行电流,U_idle为空闲电压,I_idle为空闲电流,P_iops2为第二并发量,即1秒内执行写请求的数量。
6.根据权利要求1所述的方法,其特征在于,所述基于固态硬盘的功耗限制获取固态硬盘可用功耗包括:
获取所述固态硬盘的空闲功耗;
获取所述固态硬盘的所述功耗限制;
根据所述空闲功耗和所述功耗限制计算所述固态硬盘可用功耗。
7.根据权利要求1所述的方法,其特征在于,所述根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值包括:
根据公式计算所述功耗量最大值;
所述公式为:W_tick=P_availble*1秒/F_cpu,其中,W_tick为预设时间粒度的功耗量最大值,(P_availble*1秒)为所述固态硬盘可用功耗,F_cpu为所述固态硬盘的CPU频率。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗包括:
在一个预设周期内,基于所述预设时间粒度的功耗量最大值和当前调度流程获取当前可用功耗,并获取当前已用功耗;
判断所述当前可用功耗是否大于所述当前已用功耗;
若是,则对所述当前调度流程中的I/O进行I/O调度,并基于所述当前调度流程中的读请求调度数量和写请求调度数量,结合所述第一平均功耗和所述第二平均功耗对应更新所述当前已用功耗;
若否,则不对所述当前调度流程中的I/O进行I/O调度,直至所述当前可用功耗大于所述当前已用功耗。
9.根据权利要求8所述的方法,其特征在于,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗还包括:
在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗。
10.根据权利要求1-7任一项所述的方法,其特征在于,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗包括:
在一个预设周期内,每进行一个I/O调度前,基于所述预设时间粒度的功耗量最大值和当前调度流程获取当前可用功耗,并获取当前已用功耗;
判断所述当前可用功耗是否大于所述当前已用功耗;
若是,则进行此次I/O调度,并根据此次I/O调度的I/O类型,结合所述第一平均功耗或者所述第二平均功耗,更新所述当前已用功耗,其中,所述I/O类型包括所述读请求和所述写请求;
若否,则不进行此次I/O调度,直至所述当前可用功耗大于所述当前已用功耗。
11.根据权利要求10所述的方法,其特征在于,所述基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗还包括:
在下一个所述预设周期开始时,重置所述当前可用功耗和所述当前已用功耗。
12.一种固件系统,其特征在于,所述固件系统包括:
平均功耗获取模块,用于获取读请求的平均功耗为第一平均功耗,获取写请求的平均功耗为第二平均功耗;
可用功耗获取模块,用于基于固态硬盘的功耗限制获取固态硬盘可用功耗;
功耗量计算模块,用于根据所述固态硬盘的CPU频率和所述固态硬盘可用功耗分配预设时间粒度的功耗量最大值;
功耗控制模块,用于基于所述第一平均功耗、所述第二平均功耗和所述预设时间粒度的功耗量最大值控制所述固态硬盘的功耗。
13.一种固态硬盘控制器,其特征在于,包括:
权利要求12所述的固件系统;
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-11任一项所述的基于I/O调度的功耗控制方法。
14.一种固态硬盘,其特征在于,包括:权利要求13所述的固态硬盘控制器,以及与所述固态硬盘控制器通信连接的至少一个闪存介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065623.8A CN115373852A (zh) | 2022-09-01 | 2022-09-01 | 基于i/o调度的功耗控制方法、固态硬盘控制器及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065623.8A CN115373852A (zh) | 2022-09-01 | 2022-09-01 | 基于i/o调度的功耗控制方法、固态硬盘控制器及固态硬盘 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373852A true CN115373852A (zh) | 2022-11-22 |
Family
ID=84069840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211065623.8A Pending CN115373852A (zh) | 2022-09-01 | 2022-09-01 | 基于i/o调度的功耗控制方法、固态硬盘控制器及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373852A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453491A (zh) * | 2023-12-18 | 2024-01-26 | 深圳大普微电子股份有限公司 | 功耗确定方法及闪存设备 |
-
2022
- 2022-09-01 CN CN202211065623.8A patent/CN115373852A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453491A (zh) * | 2023-12-18 | 2024-01-26 | 深圳大普微电子股份有限公司 | 功耗确定方法及闪存设备 |
CN117453491B (zh) * | 2023-12-18 | 2024-05-14 | 深圳大普微电子股份有限公司 | 功耗确定方法及闪存设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11630609B2 (en) | Scheduling access commands for data storage devices | |
KR102283511B1 (ko) | 솔리드 스테이트 드라이브들의 전력 소비를 컨트롤하기 위해 동적으로 불휘발성 메모리 오퍼레이션을 스케쥴링하는 메모리 장치 및 그것의 동작 방법 | |
US10831384B2 (en) | Memory device with power management | |
CN101685409B (zh) | 用于管理存储器的方法和存储器管理器 | |
US9128845B2 (en) | Dynamically partition a volatile memory for a cache and a memory partition | |
US8984523B2 (en) | Method for executing sequential code on the scalable processor at increased frequency while switching off the non-scalable processor core of a multicore chip | |
JP5564564B2 (ja) | 計算ユニットの性能を性能感度に従い不均等に変化させる方法及び装置 | |
ES2837048T3 (es) | Método y sistema para asignar recursos a consumidores de recursos en un entorno informático en la nube | |
US8200999B2 (en) | Selective power reduction of memory hardware | |
CN106293893B (zh) | 作业调度方法、装置及分布式系统 | |
US9081504B2 (en) | Write bandwidth management for flash devices | |
WO2018069797A1 (en) | Power management in disaggregated computing systems | |
CN105117285B (zh) | 一种基于移动虚拟化系统的非易失性存储器调度优化方法 | |
JP2017004511A (ja) | スライディングタイムウィンドウを用いてタスクをスケジュール設定するためのシステムおよび方法 | |
US20110161636A1 (en) | Method of managing power of multi-core processor, recording medium storing program for performing the same, and multi-core processor system | |
US20130205141A1 (en) | Quality of Service Targets in Multicore Processors | |
CN106897144B (zh) | 一种资源分配方法及装置 | |
RU2568306C1 (ru) | Система обработки с управлением обращением к внешней памяти | |
JP2017062779A (ja) | 環境的に調整されたスラックを割り当てるためのシステム及び方法 | |
CN115373852A (zh) | 基于i/o调度的功耗控制方法、固态硬盘控制器及固态硬盘 | |
CN110806918A (zh) | 基于深度学习神经网络的虚拟机运行方法和装置 | |
CN102693186A (zh) | 用于管理数据存储器的物理内存的方法以及数据存储器管理系统 | |
CN103927203A (zh) | 一种计算机系统及控制方法 | |
CN113568754A (zh) | 资源分配方法、装置、计算设备及存储介质 | |
CN111562883B (zh) | 固态硬盘的缓存管理系统、方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |