CN111984550B - 通过使用机器学习模块管理全局队列与多个本地队列之间的高速缓存段的分配和迁移 - Google Patents
通过使用机器学习模块管理全局队列与多个本地队列之间的高速缓存段的分配和迁移 Download PDFInfo
- Publication number
- CN111984550B CN111984550B CN202010400636.0A CN202010400636A CN111984550B CN 111984550 B CN111984550 B CN 111984550B CN 202010400636 A CN202010400636 A CN 202010400636A CN 111984550 B CN111984550 B CN 111984550B
- Authority
- CN
- China
- Prior art keywords
- queue
- cache
- global
- local
- segments
- 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.)
- Active
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 58
- 230000005012 migration Effects 0.000 title claims abstract description 20
- 238000013508 migration Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 129
- 238000012546 transfer Methods 0.000 claims abstract description 60
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims abstract description 13
- 230000005540 biological transmission Effects 0.000 claims description 48
- 230000004044 response Effects 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 8
- 230000014759 maintenance of location Effects 0.000 claims description 2
- 239000013598 vector Substances 0.000 description 25
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了计算机程序产品、系统和方法,通过使用机器学习模块管理全局队列与多个本地队列之间的高速缓存段的分配和迁移。向机器学习模块提供与对本地队列中的段的管理和对全局队列的访问以在本地队列与全局队列之间传输高速缓存段有关的高速缓存段管理信息,以输出最佳数量参数和传输数量参数,最佳数量参数包括在本地队列中维持的段的最佳数量,传输数量参数包括在本地队列与全局队列之间传输的高速缓存段的数量。将最佳数量参数和传输数量参数发送到具有本地队列的处理单元,以使处理单元将传输数量参数的高速缓存段在本地队列与全局队列之间传输。
Description
技术领域
本发明涉及用于通过使用机器学习模块来管理全局队列与多个本地队列之间的高速缓存段的分配和迁移(demotion)的计算机程序产品、系统和方法。
背景技术
由于在比存储所请求的磁道的存储设备更快的访问存储设备(例如存储器)中进行读取和写入操作,高速缓存管理系统缓冲最近访问的存储设备中的磁道。与从较慢的访问存储设备返回所请求的磁道相比,以更快的速率返回对较快的访问高速缓存存储器中的磁道的后续读取请求,从而减少读取延迟。当将指向存储设备的已修改磁道写入到高速缓存存储器时,并且在将已修改磁道写出到诸如硬盘驱动器之类的存储设备之前,高速缓存管理系统也可以将完成返回给写入请求。通常,存储设备的写入延迟明显长于写入到高速缓存存储器的延迟。因此,使用高速缓存也减少写入延迟。
使用高速缓存的存储控制器可具有多个处理器(例如一个或多个核上的中央处理单元),从而要求高速缓存中的高速缓存段用于输入/输出(“I/O”)操作。可以从中央全局队列为每个处理器CPU分配高速缓存段,该中央全局队列在各处理器之间的共享存储器中提供高速缓存段。如果处理器处的本地队列具有少数量的可用高速缓存段,则处理器需要获得对全局队列的锁定,以访问全局队列中指示的一批高速缓存段,以分配给本地队列用于I/O操作。此外,如果处理器的本地队列具有相对太多的可用高速缓存段,则处理器可能需要取得本地队列上指示的可用高速缓存段,以移动到全局队列,以使得可用于存储控制器中的其他处理器。
所描述的实施例提供了改进的技术来管理高速缓存段从全局队列到处理器的本地队列的供应,以用于I/O操作。
发明内容
在一个方面,提供了用于通过使用机器学习模块来管理全局队列与多个本地队列之间的高速缓存段的计算机程序产品、系统和方法。向机器学习模块提供与本地队列中的段的管理和对全局队列的访问以在本地队列与全局队列之间传输高速缓存段有关的高速缓存段管理信息,以输出最佳数量参数和传输数量参数,最佳数量参数包括在本地队列中维持的段的最佳数量,传输数量参数包括在本地队列与全局队列之间传输的高速缓存段的数量。将所述最佳数量参数和所述传输数量参数发送到具有本地队列的处理单元,以使得该处理单元响应于确定本地队列中的段的数量超过所述最佳数量参数,将传输数量参数的高速缓存段从本地队列传输到全局队列,并且响应于确定本地队列中的段的数量小于所述最佳数量参数,将传输数量参数的高速缓存段从全局队列传输到本地队列。
在另一方面,提供了用于通过训练机器学习模块来管理全局队列与多个本地队列之间的高速缓存段的计算机程序产品、系统和方法。向机器学习模块提供输入,以输出最佳数量参数和传输数量参数,该输入包括与由处理单元对本地队列中的段的管理和对全局队列的访问以在本地队列与全局队列之间传输高速缓存段有关的高速缓存段管理信息,最佳数量参数包括在本地队列中维持的段的最佳数量,传输数量参数包括在本地队列与全局队列之间移动的高速缓存段的数量。调整对于所述处理单元中的至少一个处理单元的传输数量参数,以产生调整后的传输数量参数。调整对于所述处理单元中的至少一个处理单元的最佳数量参数,以产生调整后的最佳数量参数。基于所述高速缓存段管理信息对所述机器学习模块进行重新训练,以输出对于所述处理单元的调整后的传输数量参数和调整后的最佳数量参数。使用重新训练的机器学习模块输出对于所述处理单元的传输数量参数和最佳数量参数,以用来管理在本地队列与全局队列之间传输高速缓存段。
附图说明
图1示出了计算环境的实施例。
图2示出了由处理单元使用的本地高速缓存的实施例。
图3示出了由处理单元用来管理跨处理单元的全局队列的全局队列管理器高速缓存的实施例。
图4示出了在处理单元处收集的本地队列管理信息的实施例。
图5示出了从处理单元处的本地队列管理信息收集的全局队列管理信息的实施例。
图6示出了由处理单元针对本地队列和全局队列分配和迁移高速缓存段的操作的实施例。
图7示出了用于使用机器学习模块来提供在处理单元的本地队列中维持的高速缓存段的最佳数量参数和供处理单元在本地队列与全局队列之间移动的高速缓存段的传输数量参数的操作的实施例。
图8示出了用于重新训练机器学习模块以产生供处理单元使用的调整后的传输数量参数的操作的实施例。
图9示出了用于重新训练机器学习模块以产生供处理单元使用的调整后的最佳数量参数的操作的实施例。
图10示出了由处理单元执行以管理本地队列的操作的实施例。
图11示出了可以实现图1的组件的计算环境。
具体实施方式
可以将高速缓存存储器的高速缓存段分配给处理单元,以用于本地队列中的读取和写入操作。处理器不需要获得锁定以访问其本地队列中的高速缓存段。然而,如果本地队列具有相对少数量的分配给I/O操作所需要的高速缓存段,则处理单元必须获得对全局队列的锁定,可以从全局队列将更多的高速缓存段分配给本地队列。此外,如果本地队列具有超过最佳数量的高速缓存段的数量,则处理单元必须获得对全局队列的锁定,以将高速缓存段从本地队列迁移到全局队列。因为多个处理单元可能正在访问全局队列以获得并且返回高速缓存段,所以其他处理单元将遇到时延延迟以获得锁定,这将为其任务处理引入时延,因为它们等待以获得对全局队列的锁定来分配或迁移高速缓存段。
所描述的实施例提供了对计算机技术的改进,用于通过以下步骤来管理对于处理单元的高速缓存段的全局队列:按照在本地队列中维持足够数量的高速缓存段以最小化或减少对处理单元访问全局队列以访问或返回资源的需要的方式,优化处理单元针对其本地队列的操作。所描述的实施例通过调整在本地队列与全局队列之间传输的高速缓存段的数量来控制锁定请求的数量,以减少在获得对全局队列的锁定时的时延。通过减少处理单元需要请求锁定以访问全局队列的频率,增加要传输的高速缓存段的数量减少了锁定争用。
在所描述的实施例中,向机器学习模块提供与本地队列中的段的管理和对全局队列的访问以在本地队列与全局队列之间传输高速缓存段有关的高速缓存段管理信息,以输出最佳数量参数和传输数量参数,最佳数量参数包括在本地队列中维持的段的最佳数量,传输数量参数包括在本地队列与全局队列之间移动的高速缓存段的数量。将所述最佳数量参数和所述传输数量参数发送到处理单元,以用于响应于确定本地队列中的段的数量超过所述最佳数量参数,将传输数量参数的高速缓存段从本地队列传输到全局队列,并且响应于确定本地队列中的段的数量小于所述最佳数量参数,将传输数量参数的高速缓存段从全局队列传输到本地队列。
所描述的实施例还提供了对计算机技术的改进,以重新训练机器学习模块以减少误差。在所描述的实施例中,基于对于全局队列的当前锁定争用时间来调整对于所述处理单元中的至少一个处理单元的传输数量参数,所述当前锁定争用时间指示处理单元等待以访问对于全局队列的锁定的时间量。基于全局队列中的高速缓存段的数量,调整对于所述处理单元中的至少一个处理单元的最佳数量参数。基于高速缓存段管理信息对机器学习模块进行重新训练,以产生对于处理单元的调整后的传输数量参数和调整后的最佳数量参数。
图1示出了具有处理器复合体102的计算系统100的实施例,该处理器复合体102可以通过系统总线106来访问存储器104,以访问存储器104中的高速缓存108中的高速缓存段108i。在附加实施例中,代替包括高速缓存108的高速缓存段108i,处理器复合体102可以访问其他类型的资源,诸如数据库中的日志空间,所述日志空间可以由在处理器复合体102中执行的任何其他处理或任务来访问、消耗和释放。全局队列110指示可用于分配给处理器复合体102的高速缓存段108。
处理器复合体102可以包括多个处理核1121...112m,其中,如针对核1121所示的,每个核112i包括多个中央处理单元(CPU)1141,1142...114n(在本文中也被称为处理器或处理单元)。CPU 1141,1142...114n中的每个CPU包括诸如L1高速缓存之类的本地高速缓存2001,2002...200n,在本地高速缓存中维持仅由对应的CPU 1141,1142...114n使用的信息。CPU 1141,1142...114n不需要获得锁定以访问其本地高速缓存2001,2002...200n中的信息。因此,对于CPU 114i而言,访问其自己的本地高速缓存200i中的资源(诸如从全局队列110分配的高速缓存段)没有锁定时延。全局队列110可由核1121...112m中的任一个核上的CPU1141,1142...114n访问,以将可用的高速缓存段108i返回到全局队列110,或者获得高速缓存段108i以包括在本地队列中进行消耗。
全局队列管理器CPU 114m具有本地高速缓存300,用于管理其他CPU对全局队列110和高速缓存108的访问,以检索高速缓存段108i并且将高速缓存段108i返回到全局队列110。
在图1的实施例中,存储器104在核112i的外部。在替选实施例中,每个核112i可以包括对于核112i上的CPU 114i的共享存储器,并且可以针对每个核112i上的共享存储器来执行本文中描述的用于在CPU 114i与全局队列110之间分配/迁移高速缓存段的操作。
本文中使用的执行任务和操作的术语“处理单元”和“处理器”可以包括一个或多个集成电路管芯中的一个或多个核中的CPU 1141,1142...114m,114n。此外,“处理器”和“处理单元”可以包括虚拟处理器,该虚拟处理器执行针对虚拟存储器和高速缓存的操作,这些操作在物理主机处理和存储器资源中实现。
在某些实施例中,计算系统100包括提供对共享非易失性存储设备的访问的存储控制器。
图2示出了本地高速缓存200i(诸如对于CPU 114i的本地高速缓存2001,2002...200n之一)的实施例。本地高速缓存200i可包括:由CPU 114i执行的一个或多个任务202,从全局队列110获得的可用于分配以供任务202使用的高速缓存段108i的本地队列204;从本地队列204分配以供任务202使用的高速缓存段的最近最少使用(LRU)列表206;本地高速缓存管理器208,用于管理本地队列204中指示的高速缓存段108i到LRU列表206的分配,并且将高速缓存段108i从LRU列表206迁移到本地队列204;本地队列管理信息400,具有关于对本地队列204中的高速缓存段的管理以及对全局队列110的访问以检索或返回高速缓存段的信息;最佳数量参数210,包括由机器学习模块确定的要在本地队列204中维持的高速缓存段的最佳数量;以及传输数量参数212,包括在本地队列204与全局队列110之间移动的高速缓存段108i的数量。
图3示出了全局队列管理器高速缓存300的实施例,全局队列管理器高速缓存300包括:全局队列管理器302,用于管理对全局队列110的访问;全局队列管理信息500,具有关于对跨所有本地队列204的高速缓存段的管理以及由所有CPU 114i对全局队列110的访问以分配或返回高速缓存段108i的信息;机器学习模块304,接收对于所有CPU 114i的全局队列管理信息500中的一些或全部作为输入306,并且计算包括对于每个CPU 114i的最佳数量参数210的最佳数量参数向量308和包括对于每个CPU 114i的传输数量参数212的传输数量参数向量310。分配/迁移计数器312对于每个CPU 114i指示相对于全局队列110的分配/迁移操作的数量。
机器学习模块304实现机器学习技术,诸如决策树学习、关联规则学习、人工神经网络、归纳编程逻辑、支持向量机、贝叶斯模型等。然后本地高速缓存管理器208可以分别使用所输出的在向量308和310中的最佳数量参数210和传输数量参数212,以确定何时从全局队列管理器302请求更多的高速缓存段108i,或者何时从本地队列204向全局队列110返回/迁移传输数量参数212的高速缓存段。从输入306到机器学习模块304以及到输出308、310所示的箭头示出了去往和来自机器学习模块304的数据流,而不是高速缓存300中的实际结构。
在一个实施例中,机器学习模块304可包括人工神经网络程序。可以使用反向传播来训练每个神经网络,以调整隐藏层中的节点处的权重和偏置,以产生所计算的最佳数量参数向量308和传输数量参数向量310。在用于训练神经网络机器学习模块的反向传播中,基于操作参数确定误差幅度(margin),对于每个处理单元调整的传输数量参数和对于每个处理单元计算的当前传输数量参数的这样的误差幅度用于调整机器学习模块的隐藏层中的节点处的权重和偏置,以产生调整后的传输数量参数。对于每个处理单元调整的最佳数量参数和对于每个处理单元计算的当前最佳数量参数的误差幅度可用于调整机器学习模块的隐藏层中的节点处的权重和偏置,以产生调整后的最佳数量参数。
反向传播可以包括用于使用梯度下降的人工神经网络的监督学习的算法。给定人工神经网络和误差函数,该方法可以计算误差函数相对于神经网络的权重和偏置的梯度。
本地高速缓存器200i和全局队列管理器高速缓存300的组件在图2和图3中被示出为加载到存储器104中并且由CPU 114i执行的程序代码。替选地,一些或所有组件功能可以在诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)之类的硬件设备中实现,或者由单独的专用处理器来执行。
存储器104可以包括一个或多个易失性或非易失性的存储器设备,例如动态随机存取存储器(DRAM)、相变存储器(PCM)、磁阻随机存取存储器(MRAM)、自旋转移扭矩(STT)-MRAM、SRAM存储设备、DRAM、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、以及非易失性直接直插存储器模块(DIMM)、NAND存储设备(例如闪存、固态驱动器(SSD)存储设备、非易失性RAM等)。
本地高速缓存200i和300可以包括专用于CPU 114i的本地高速缓存或L1高速缓存。
图4示出了在每个本地高速缓存200i中维持的本地队列管理信息400的实施例,并且包括:具体地识别CPU 114i之一的CPU编号402;CPU 114i作为迁移器和/或分配器的角色404,迁移器被指派用于从本地队列204向全局队列110迁移高速缓存段108i,分配器被指派用于从全局队列110向本地队列204分配高速缓存段108i;本地队列中的高速缓存段的数量406;对于全局队列的平均锁定争用时间408,包括CPU 114i旋转或等待直到接收到对于全局队列110的锁定的时间;对于全局队列的平均锁定保持时间410,包括CPU 114i保持对全局队列110的锁定的时间;迁移速率412,用于将高速缓存段从本地队列204迁移到全局队列110;以及分配速率414,用于将高速缓存段108i从全局队列110分配到本地队列204。本地高速缓存管理器208可以将本地队列管理信息400发送到全局队列管理器302,以添加到全局管理信息500。
某些CPU 114i可以是专用的迁移器和/或分配器,意味着它们保持该角色。其他CPU需要获得分配器和迁移器的角色,其中有限数量的CPU 114i可具有迁移器或分配器的角色。例如,CPU 114i需要获得分配器的角色以将高速缓存段108i从全局队列110分配到本地队列204,并且获得迁移器的角色以将高速缓存段108i从本地队列204迁移到全局队列110。可以相对于全局队列110充当迁移器和分配器的CPU 114i的数量受到限制,以限制对全局队列110的锁定争用时间以及在本地队列204与全局队列110之间分配和迁移高速缓存段108i的时延延迟。
图5示出了在全局队列管理器高速缓存300中维持的全局队列管理信息500以用作机器学习模块304的输入306以生成对于CPU 114i的新参数308、310的实施例,并且包括:CPU角色向量502,指示每个CPU 114i的角色:分配器和/或迁移器;系统100中的CPU的总数量504;被指派分配器角色的分配器CPU的数量506;被指派迁移器角色的迁移器CPU的数量508;分配段数量向量510,指示每个CPU 114i的本地队列204中的高速缓存段108i的数量;全局队列中的段的数量512;就高速缓存段108i的数量而言,全局队列的期望大小514;迁移速率向量516,具有每个CPU 114i将高速缓存段从本地队列204迁移到全局队列110的速率;分配速率向量518,具有每个CPU 114i将高速缓存段108i从全局队列110分配到本地队列204的速率;专用迁移器的数量520,包括专用的且将始终具有迁移角色的专用迁移器CPU 114D的列表;专用分配器的数量522,包括专用的且将始终具有分配角色的分配器CPU 114A的列表;分配器的平均锁定保持时间向量524,包括由分配器CPU 114A保持对全局队列110的锁定的平均时间的列表;迁移器的平均锁定保持时间向量526,包括由迁移器CPU 114D保持对全局队列110的锁定的平均时间的列表;分配器的平均锁定争用时间向量528,包括分配器CPU 114A等待对全局队列110的锁定的平均锁定争用时间的列表;迁移器的平均锁定争用时间向量530,包括迁移器CPU 114D等待对全局队列110的锁定的平均锁定争用时间的列表;以及CPU的迁移/分配操作向量532,包括CPU 114i处相对于全局队列110的迁移和分配操作的数量的列表。
图6示出了由分配器/迁移器CPU 114i处的本地高速缓存管理器208响应于在全局队列110与本地队列204之间分配/迁移高速缓存段而执行的操作的实施例。响应于从全局队列110向CPU 114i中的本地队列204分配高速缓存段或从本地队列204向全局队列110迁移高速缓存段108i(在方框600处),本地高速缓存管理器208收集(在方框602处)本地队列管理信息400,以及将收集的本地队列管理信息400和高速缓存段被迁移/分配的指示发送(在方框604处)到全局队列管理器302。
利用图6的实施例,CPU 114i在已经相对于全局队列110分配或迁移了高速缓存段时通知全局队列管理器CPU 114m,并且提供本地队列管理信息400以将相对于全局队列110操作的状态改变和性能的实时信息提供给全局队列管理器302。来自CPU 114i和全局队列管理器的信息的该共享为机器学习模块304提供了最新信息,以最佳地优化最佳数量参数向量308和传输数量参数向量310。
图7示出了在针对全局队列110执行迁移或分配操作时由全局队列管理器302在从CPU 114i之一接收到本地队列管理信息400时执行的操作的实施例。在接收到(在方框700处)本地队列管理信息400时,全局队列管理器302对于发送了本地队列管理信息400的CPU114i递增分配/迁移计数器312。利用接收到的本地队列管理信息400来更新全局队列管理信息500以使其为最新。如果(在方框706处)所有分配/迁移CPU迁移/分配了如在分配/迁移计数器312中所指示的N个高速缓存段,则对于所有CPU 114i重置计数器312(在方框708处)。将全局队列管理信息500(具有关于所有CPU的分配/解除分配操作以及对全局队列110的访问的信息)作为输入306提供给(在方框710处)机器学习模块304。全局队列管理器302对于每个CPU 114i接收(在方框712处)在本地队列204中维持的高速缓存段的最佳数量参数210的最佳数量参数向量308以及在本地队列与全局队列110之间移动的高速缓存段的传输数量参数向量310。全局队列管理器302向每个CPU 114i发送(在方框714处)专门对于该CPU 114i计算的最佳数量参数308和传输数量参数310。然后控制进行到图8和图9,重新训练机器学习模块304以考虑全局队列管理信息500的变化。在替选实施例中,可以基于除方框706处的事件之外的触发运行机器学习模块304以重新计算参数308、310的事件(诸如在CPU处发生不同数量的迁移/分配操作)来启动图8和图9的重新训练操作。
利用图7的操作的实施例,使用当前全局队列管理信息500确定CPU 114i用来确定何时从全局队列110分配更多高速缓存段以及何时将高速缓存段108i迁移并且返回到全局队列110的参数。基于特定于CPU 114i的操作和性能以及所有CPU 114i相对于全局队列110的操作,向每个CPU 114i提供操作参数。例如,如果CPU 114i经历对于全局队列110的高锁定争用时间,则可以增加高速缓存段的传输数量310,以对于一个分配/迁移操作传输更多的高速缓存段,以减少去往全局队列110的事务的总数量,以减少锁定争用。如果锁定争用相对较低,则可以减少传输数量310,以允许更多的全局队列110事务和锁定请求。
图8示出了由全局队列管理器302和/或机器学习模块304或其他组件执行的如下操作的实施例:基于全局队列管理信息500中反映的在全局队列114处的当前系统和锁定争用性能来重新训练机器学习模块304,以产生供所有CPU 114i使用的传输数量参数向量310。在启动(在方框800处)基于由CPU 114i经历的锁定争用和保持时间来重新训练机器学习模块304的操作时,确定(在方框802处)当前全局锁定争用(例如跨所有CPU的向量528、530中的平均锁定争用时间)是否小于最佳全局锁定争用。如果是,则对于每个CPU 114i,(在方框804处)通过如下步骤来调整对于CPU 114i的传输数量参数i:如在先前确定的传输数量参数向量310中所确定的那样计算对于CPU 114i的当前传输数量参数i,减去(最佳全局锁定争用减去CPU 114i的当前锁定争用)除以常数M。常数M将以锁定争用时间表示的单位转换为要传输的高速缓存段的数量的单位。如果(在方框802处)对于全局队列110的当前锁定争用不小于最佳全局锁定争用,则对于每个CPU 114i,(在方框806处)通过以下步骤来调整对于CPU 114i的传输数量参数i:如在先前确定的传输数量参数向量310中所确定的那样计算对于CPU 114i的当前传输数量参数i,加上(CPU 114i的当前锁定争用减去最佳全局锁定争用)除以常数M。
(在方框808处)利用包括全局队列管理信息500的输入来重新训练(诸如使用反向传播)机器学习模块304,以通过使用对于每个CPU 114i的调整后的传输数量参数310i与当前传输数量参数212之差的误差幅度来产生对于每个CPU 114i的调整后的传输数量参数310i。
利用图8的实施例,如果CPU的当前锁定争用时间超过最佳全局锁定争用,则将对于CPU 114i的传输数量参数310减少最佳全局锁定争用与CPU 114i的当前锁定争用时间之差或误差幅度。因此,如果存在相对较低的锁定争用(小于最佳量),则减少对于特定CPU114i的传输数量参数310,以通过对于每个分配/解除分配操作传输较少的高速缓存段来允许更大数量的全局队列锁定请求。传输较少的高速缓存段通过允许更多的分配/迁移操作来允许对本地队列的调整进行更精细粒度的微调,这导致更大数量的锁定争用请求。如果锁定争用相对较高(大于最佳量),则增加对于该CPU 114i的传输数量,以通过一次传输更多的高速缓存段来减少分配和迁移操作所需要的次数,这导致更少的迁移/分配请求和更少的锁定争用。因此,机器学习模块304被重新训练以产生这些新的传输数量参数,以反映全局队列110的当前锁定争用性能。
图9示出了由全局队列管理器302和/或机器学习模块304或其他组件执行的如下操作的实施例:基于如全局队列管理信息500中反映的全局队列110的当前状态来重新训练机器学习模块304,以产生供所有CPU 114i使用的最佳数量参数向量308。在启动(在方框900处)基于全局队列110大小重新训练机器学习模块304的操作时,确定(在方框902处)全局队列中的高速缓存段的当前数量512是否小于对于全局队列110的高速缓存段的最佳数量。如果是这样,则对于每个CPU 114i,(在方框904处)通过以下步骤来调整对于CPU 114i的最佳数量参数i:如在先前确定的传输数量参数向量310中所确定的那样设定对于CPU 114i的当前最佳数量参数i,减去(全局队列中的高速缓存段的最佳数量减去全局队列中的高速缓存段的当前数量512)除以(CPU数量乘以常量X)。常数X将以全局队列110中的段数量表示的单位转换为对于本地队列204的高速缓存段的最佳数量。如果(在方框902处)全局队列中的高速缓存段的数量512不小于全局队列110中的高速缓存段的最佳数量,则对于每个CPU114i,(在方框906处)通过以下步骤来调整对于CPU 114i的最佳段数量参数i:如在先前确定的最佳数量参数向量308中所确定的那样设定对于CPU 114i的当前最佳段数量参数i,加上(全局队列中的段的当前数量512减去全局队列全局锁定争用中的最佳段数量)除以(CPU数量乘以常量X)。
(在方框908处)利用包括全局队列管理信息500的输入来重新训练(诸如使用反向传播)机器学习模块304,以通过使用对于每个CPU 114i的调整后的最佳数量参数i与当前最佳数量参数i之差的误差幅度来产生对于每个CPU 114i的调整后的最佳数量参数308i。
利用图9的实施例,如果全局队列中的高速缓存段的当前数量512相对较低,或者小于对于全局队列的最佳数量,则将对于CPU 114i的最佳数量参数308减少全局队列中的最佳段数量与对于CPU 114i的全局队列中的段的当前数量512之差或误差幅度。因此,如果全局队列中的段的数量相对较少,则减少对于特定CPU 114i的最佳数量参数308,使得CPU114i在其本地队列204中保留较少的高速缓存段,因为对于CPU 114i的较少最佳数量会增加全局队列110中维持的高速缓存段的数量。如果全局队列中的高速缓存段的数量512相对较高(大于最佳量),则增加对于CPU 114i的最佳数量,以在对于CPU 114i的本地队列204中维持更多的高速缓存段,因为对于CPU 114i的较高的最佳数量308会减少全局队列110中的高速缓存段的数量,并且增加在CPU 114i中维持的高速缓存段的数量。因此,基于全局队列110中的高速缓存段的当前数量来重新训练机器学习模块304,以产生在本地队列204中维持的高速缓存段的这些最佳数量参数。
图10示出了由本地高速缓存管理器208执行的以下操作的实施例:根据对于具有正被管理的本地队列204的CPU 114i计算的最佳数量参数210和传输数量参数212,相对于本地队列204分配/解除分配高速缓存段108i。在启动用于管理本地队列204的操作时,例如响应于用于从本地队列204向LRU列表206分配高速缓存段108i或将高速缓存段从LRU列表206迁移到本地队列204的一个或一定数量的操作,本地高速缓存管理器208确定(在方框1002处)本地队列204中的高速缓存段的数量是否比对于CPU 114i的最佳数量参数210大传输数量参数212。如果(在方框1002处)本地队列204中的高速缓存段108i的数量超出对于CPU 114i的最佳数量参数210达传输数量参数212,并且如果(在方框1004处)CPU 114i具有迁移器角色,则本地高速缓存管理器208请求(在方框1006处)对全局队列110的锁定并且记录等待获得该锁定的旋转(争用)时间。在获得锁定时,本地高速缓存管理器208将传输数量参数212的高速缓存段108i从本地队列204传输到(在方框1008处)全局队列110。
如果(在方框1002处)本地队列204中的高速缓存段的数量比对于CPU 114i的最佳数量参数210小传输数量参数212,并且如果(在方框1010处)CPU 114i具有分配器角色,则本地高速缓存管理器208请求(在方框1012处)对全局队列110的锁定,并且记录等待获得该锁定的旋转(争用)时间。在获得锁定时,本地高速缓存管理器208将传输数量参数212的高速缓存段108i从全局队列110传输到(在方框1014处)本地队列204。从方框1008或1014起,释放对全局队列110的锁定(在方框1016处)并且记录锁定保持时间。基于上述操作,更新本地队列管理信息400(在方框1018处),包括更新对于全局队列110的平均锁定保持时间410和平均锁定争用时间408、本地队列中的段的数量406以及相对于全局队列110的迁移速率412/分配速率414。如果(在方框1004处)CPU 114i不具有迁移器角色,或者如果(在方框1010处)CPU 114i不具有分配器角色,则控制结束而CPU 114i不执行分配/迁移操作,直到指派了所需要的角色为止。在多个分配/解除分配操作之后,或者基于本地队列204的高速缓存段的数量与最佳数量不同的程度,具有动态指派的角色的那些CPU 114i可以周期性地将角色让渡给另一CPU 114i。
利用图10的操作,由机器学习模块304计算的最佳数量参数210和传输数量参数212被用来确定CPU 114i是否从全局队列110向本地队列204分配更多的高速缓存段以及是否将高速缓存段迁移到全局队列110。
在所描述的实施例中,变量i、n等在与不同元素一起使用时可以表示该元素的相同或不同实例。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及传统过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
图1的计算组件可以在一个或多个计算机系统(例如,图11中所示的计算机系统1102)中实现。可以在由计算机系统执行的计算机系统可执行指令(例如程序模块)的一般上下文中描述计算机系统/服务器1102。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在分布式云计算环境中实施计算机系统/服务器1102,在分布式云计算环境中,任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质两者中。
如图11中所示,计算机系统/服务器1102以通用计算设备的形式示出。计算机系统/服务器1102的组件可以包括但不限于一个或多个处理器或处理单元1104、系统存储器1106以及将包括系统存储器1106的各种系统组件耦合到处理器1104的总线1108。总线1108代表多种类型总线结构中的任一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任一种的处理器或本地总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算机系统/服务器1102通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器1102可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器1106可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)1110和/或高速缓冲存储器1112。计算机系统/服务器1102还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统1113以用于从不可移动非易失性磁性介质(未示出并且通常被称为“硬盘驱动器”)读取并且向其写入。尽管未示出,但是可以提供用于从可移动非易失性磁盘(例如“软盘”)读取并且向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其他光学介质之类的可移动非易失性光盘读取或向其写入的光盘驱动器。在这样的情况下,每个都可以通过一个或多个数据介质接口连接到总线1108。如将在下面进一步描绘和描述的,存储器1106可以包括至少一个程序产品,该程序产品具有被配置为执行本发明的实施例的功能的一组(例如,至少一个)程序模块。
作为示例而非限制,具有一组(至少一个)程序模块1116的程序/实用程序1114以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以存储在存储器1106中。操作系统、一个或多个应用程序、其他程序模块以及程序数据中的每个或它们的某种组合可以包括联网环境的实现方式。计算机1102的组件可以被实现为程序模块1116,程序模块1116通常执行本文中所述的本发明的实施例的功能和/或方法。图1的系统可以在一个或多个计算机系统1102中实现,其中,如果它们在多个计算机系统1102中实现,则计算机系统可以通过网络进行通信。
计算机系统/服务器1102还可以与一个或多个外部设备1118通信,例如键盘、指点设备、显示器1120等;使得用户能够与计算机系统/服务器1102交互的一个或多个设备;和/或使得计算机系统/服务器1102能够与一个或多个其他计算设备进行通信的任何设备(例如,网卡、调制解调器等)。可以经由输入/输出(I/O)接口1122进行这样的通信。而且,计算机系统/服务器1102可以通过网络适配器1124与一个或多个网络(诸如局域网(LAN)、通用广域网(WAN)、和/或公共网络(例如因特网))通信。如所描绘的,网络适配器1124经由总线1108与计算机系统/服务器1102的其他组件进行通信。应该理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器1102结合使用。示例包括但不限于:微代码、设备驱动、冗余处理单元、外部盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“所述实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”是指“本发明的一个或多个(但不是全部)实施例”,除非另有明确说明。
术语“包括”、“包含”、“具有”及其变体是指“包括但不限于”,除非另有明确说明。
列举的项目列表并不意味着任何或所有项目都是相互排斥的,除非另有明确说明。
术语“一”、“一个”和“该”是指“一个或多个”,除非另有明确说明。
彼此通信的设备不需要彼此持续通信,除非另有明确说明。另外,彼此通信的设备可以直接地或通过一个或多个中间设备间接地通信。
具有多个彼此通信的组件的实施例的描述并不暗示需要所有这样的组件。相反,描述了各种可选的组件以说明本发明的各种可能的实施例。
当在本文中描述单个设备或物品时,很明显可以使用多于一个设备/物品(无论它们是否协作)来代替单个设备/物品。类似地,在本文中描述多于一个设备或物品(无论它们是否协作)的情况下,很明显可以使用单个设备/物品来代替多于一个设备或物品,或者可以使用不同数量的设备/物品来代替所示数量的设备或程序。设备的功能和/或特征可以替选地由一个或多个未被明确地描述为具有这样的功能/特征的其他设备来体现。因此,本发明的其他实施例不需要包括设备本身。
为了说明和描述的目的,已经给出了本发明的各种实施例的前述描述。并不是旨在穷举或将本发明限制为所公开的精确形式。根据以上教导,许多修改和变型是可能的。意图在于,本发明的范围不由该详细描述限制,而是由所附权利要求书限制。以上说明书、示例和数据提供了对本发明的组成的制造和使用的完整描述。由于可以在不偏离本发明的精神和范围的情况下做出本发明的许多实施例,因此本发明存在于本文中所附的权利要求书中。
Claims (24)
1.一种用于确定高速缓存中的高速缓存段以在由处理单元使用的本地队列与全局队列之间传输的方法,包括:
向机器学习模块提供与对本地队列中的段进行管理和对全局队列进行访问以在本地队列与全局队列之间传输高速缓存段有关的高速缓存段管理信息,以输出最佳数量参数和传输数量参数,所述最佳数量参数包括在本地队列中维持的段的最佳数量,所述传输数量参数包括在本地队列与全局队列之间传输的高速缓存段的数量;以及
将所述最佳数量参数和所述传输数量参数发送到具有本地队列的处理单元,以使该处理单元响应于确定本地队列中的段的数量超过所述最佳数量参数,将所述传输数量参数的高速缓存段从本地队列传输到全局队列,并且响应于确定本地队列中的段的数量小于所述最佳数量参数,将所述传输数量参数的高速缓存段从全局队列传输到本地队列。
2.根据权利要求1所述的方法,其中,所述机器学习模块对于具有本地队列的多个处理单元中的每个处理单元输出所述最佳数量参数和所述传输数量参数的单独值,其中,向所述处理单元中的每个处理单元发送对于该处理单元专门计算的所述最佳数量参数和所述传输数量参数,以用于在该处理单元的本地队列与全局队列之间传输高速缓存段。
3.根据权利要求1所述的方法,还包括:
从具有本地队列的多个处理单元中的每个处理单元接收本地高速缓存段管理信息,其中,提供给所述机器学习模块的高速缓存段管理信息是基于从所述多个处理单元接收的所述本地高速缓存段管理信息。
4.根据权利要求3所述的方法,其中,响应于所述处理单元从全局队列向本地队列分配高速缓存段或将高速缓存段从本地队列迁移到全局队列,从所述处理单元中的每个处理单元接收所述本地高速缓存段管理信息。
5.根据权利要求3所述的方法,还包括:
确定多个处理单元中的每个处理单元是否已经执行了从本地队列分配高速缓存段或将高速缓存段返回到本地队列的实例的数量,其中,响应于确定所述多个处理单元中的每个处理单元已经执行了从本地队列分配高速缓存段或将高速缓存段返回到本地队列的实例的数量,将所述高速缓存段管理信息提供给所述机器学习模块。
6.根据权利要求5所述的方法,其中,响应于确定所有所述处理单元各自执行从全局队列分配高速缓存段或将高速缓存段返回到全局队列的实例的数量,将所述高速缓存段管理信息提供给所述机器学习模块。
7.根据权利要求3所述的方法,其中,与由所述处理单元对本地队列中的段的管理有关的所述高速缓存段管理信息包括至少两个输入参数,所述至少两个输入参数是输入参数集合的成员,所述输入参数集合包括:
将高速缓存段从本地队列迁移到全局队列的迁移处理单元的数量;
将高速缓存段从全局队列分配到本地队列的分配处理单元的数量;
分配给所述处理单元的高速缓存段的数量;
对于所有所述处理单元将高速缓存段从本地队列迁移到全局队列的平均速率;
对于所述处理单元中的每个处理单元将高速缓存段从全局队列分配到本地队列的平均速率;
专用于将高速缓存段从本地队列迁移到全局队列的处理单元的数量,其中,多个处理单元被临时指派为将高速缓存段从所述处理单元处的本地队列迁移到全局队列;以及
专用于将高速缓存段从全局队列分配到本地队列的处理单元的数量,其中,多个处理单元被临时指派为将高速缓存段从全局队列分配到本地队列。
8.根据权利要求3所述的方法,其中,与对全局队列的访问以在本地队列与全局队列之间传输高速缓存段有关的所述高速缓存段管理信息包括至少两个输入参数,所述至少两个输入参数是输入参数集合的成员,所述输入参数集合包括:
平均锁定争用时间,包括处理单元等待接收对访问全局队列的锁定的平均时间;
平均锁定保持时间,包括处理单元在访问全局队列时保持锁定的平均时间;以及
全局队列中的高速缓存段的最佳数量。
9.根据权利要求8所述的方法,其中,对于获得对全局队列的锁定以将高速缓存段从全局队列分配到本地队列的分配器处理单元和获得对全局队列的锁定以将高速缓存段从本地队列迁移到全局队列的迁移处理单元,分别维持所述平均锁定保持时间和所述平均锁定争用时间。
10.一种与至少一个处理单元通信的系统,其中,所述至少一个处理单元中的每个处理单元具有高速缓存段的本地队列,所述系统包括:
管理器处理单元;
存储器,所述存储器具有高速缓存段的高速缓存和可用于分配到所述至少一个处理单元的高速缓存段的全局队列;
机器学习模块;
计算机可读存储介质,所述计算机可读存储介质具有体现在其中的计算机可读程序代码,所述计算机可读程序代码在由所述管理器处理单元执行时执行权利要求1至9中任一项所述的方法的操作。
11.一种用于确定高速缓存中的高速缓存段以在由处理单元使用的本地队列与全局队列之间传输的计算机程序产品,其中,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现在其中的计算机可读程序代码,所述计算机可读程序代码在被执行时执行权利要求1至9中任一项所述的方法的操作。
12.一种用于确定高速缓存中的高速缓存段以在由处理单元使用的本地队列与全局队列之间传输的方法,包括:
向机器学习模块提供包括与由处理单元对本地队列中的段进行管理和对全局队列进行访问以在本地队列与全局队列之间传输高速缓存段有关的高速缓存段管理信息的输入,以输出最佳数量参数和传输数量参数,所述最佳数量参数包括在本地队列中维持的段的最佳数量,所述传输数量参数包括在本地队列与全局队列之间移动的高速缓存段的数量;
调整对于所述处理单元中的至少一个处理单元的传输数量参数,以产生调整后的传输数量参数;
调整对于所述处理单元中的至少一个处理单元的最佳数量参数,以产生调整后的最佳数量参数;
基于所述高速缓存段管理信息对所述机器学习模块进行重新训练,以输出对于所述处理单元的调整后的传输数量参数和调整后的最佳数量参数;以及
使用重新训练的机器学习模块输出对于所述处理单元的传输数量参数和最佳数量参数,以用于管理在本地队列与全局队列之间传输高速缓存段。
13.根据权利要求12所述的方法,其中,调整对于所述处理单元中的至少一个处理单元的传输数量参数是基于指示处理单元等待访问对全局队列的锁定的时间量的对于全局队列的当前锁定争用时间,并且其中,调整对于所述处理单元中的至少一个处理单元的最佳数量参数是基于全局队列中的高速缓存段的数量而调整。
14.根据权利要求12所述的方法,
其中,对所述机器学习模块进行重新训练以产生对于每个处理单元的调整后的传输数量参数包括:使用对于每个处理单元的调整后的传输数量参数和对于每个处理单元计算的当前传输数量参数的误差幅度,调整所述机器学习模块的隐藏层中的节点处的权重和偏置,以产生调整后的传输数量参数,并且
其中,对所述机器学习模块进行重新训练以产生对于每个处理单元的调整后的最佳数量参数包括:使用对于每个处理单元的调整后的最佳数量参数和对于每个处理单元计算的当前最佳数量参数的误差幅度,调整所述机器学习模块的隐藏层中的节点处的权重和偏置,以产生调整后的最佳数量参数。
15.根据权利要求12所述的方法,其中,调整所述传输数量参数包括:
确定对于全局队列的当前锁定争用时间是否低于最佳全局锁定争用时间;
响应于确定对于全局队列的当前锁定争用时间超过最佳全局锁定争用时间,增加所述传输数量参数;以及
响应于确定对于全局队列的当前锁定争用时间小于最佳全局锁定争用时间,减小所述传输数量参数。
16.根据权利要求15所述的方法,
其中,增加所述传输数量参数包括将第一结果添加到所述传输数量参数,其中,第一结果=(当前锁定争用时间-最佳全局锁定争用时间)/用于将时间缩放为要传输的高速缓存段的数量的常数,以及
其中,减小所述传输数量参数包括从所述传输数量参数减去第二结果,其中,第二结果=(最佳全局锁定争用时间-当前锁定争用时间)/所述常数。
17.根据权利要求12所述的方法,其中,调整所述最佳数量参数包括:基于全局队列中的高速缓存段的最佳数量与全局队列中的高速缓存段的当前数量之差,调整对于多个处理单元的所述最佳数量参数。
18.根据权利要求12所述的方法,其中,调整所述最佳数量参数包括:
确定全局队列中的高速缓存段的数量是否小于全局队列中的高速缓存段的最佳数量;
响应于确定全局队列中的高速缓存段的数量大于全局队列中的高速缓存段的最佳数量,增加所述最佳数量参数;以及
响应于确定全局队列中的高速缓存段的数量小于全局队列中的高速缓存段的最佳数量,减小所述最佳数量参数。
19.根据权利要求18所述的方法,
其中,减小所述最佳数量参数包括添加第三结果,其中,第三结果=(全局队列中的高速缓存段的最佳数量-全局队列中的高速缓存段的数量)/(处理单元的数量*常数);以及
其中,增加所述传输数量参数包括添加第四结果,其中,第四结果=(全局队列中的高速缓存段的数量-全局队列中的高速缓存段的最佳数量)/(处理单元的数量*常数)。
20.根据权利要求12所述的方法,其中,在多个处理单元执行从本地队列分配高速缓存段或将高速缓存段返回到本地队列的实例的数量之后,对所述机器学习模块进行重新训练。
21.根据权利要求12所述的方法,其中,与由所述处理单元对本地队列中的段的管理有关的所述高速缓存段管理信息包括多个输入参数,所述多个输入参数包括:
将高速缓存段从本地队列迁移到全局队列的迁移处理单元的数量;
将高速缓存段从全局队列分配到本地队列的分配处理单元的数量;
分配给所述处理单元的高速缓存段的数量;
对于所有所述处理单元将高速缓存段从本地队列迁移到全局队列的平均速率;
对于所述处理单元中的每个处理单元将高速缓存段从全局队列分配到本地队列的平均速率;
专用于将高速缓存段从本地队列迁移到全局队列的处理单元的数量,其中,多个处理单元被临时指派为将高速缓存段从所述处理单元处的本地队列迁移到全局队列;以及
专用于将高速缓存段从全局队列分配到本地队列的处理单元的数量,其中,多个处理单元被临时指派为将高速缓存段从全局队列分配到本地队列。
22.根据权利要求12所述的方法,其中,与对全局队列的访问以在本地队列与全局队列之间传输高速缓存段有关的所述高速缓存段管理信息包括多个输入参数,所述多个输入参数包括:
平均锁定争用时间,包括处理单元等待接收对访问全局队列的锁定的平均时间;
平均锁定保持时间,包括处理单元保持对访问全局队列的锁定的平均时间;以及
全局队列中的高速缓存段的最佳数量。
23.一种与至少一个处理单元通信的系统,其中,所述至少一个处理单元中的每个处理单元具有高速缓存段的本地队列,所述系统包括:
管理器处理单元;
存储器,所述存储器具有高速缓存段的高速缓存和可用于分配到所述至少一个处理单元的高速缓存段的全局队列;
机器学习模块;
计算机可读存储介质,所述计算机可读存储介质具有体现在其中的计算机可读程序代码,所述计算机可读程序代码在由所述管理器处理单元执行时执行权利要求12至22中任一项所述的方法的操作。
24.一种用于确定高速缓存中的高速缓存段以在由处理单元使用的本地队列与全局队列之间传输的计算机程序产品,其中,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有体现在其中的计算机可读程序代码,所述计算机可读程序代码在被执行时执行权利要求12至22中任一项所述的方法的操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/418,904 US11048641B2 (en) | 2019-05-21 | 2019-05-21 | Managing allocation and demotion of cache segments between a global queue and a plurality of local queues by using a machine learning module |
US16/418,914 US11055234B2 (en) | 2019-05-21 | 2019-05-21 | Managing allocation and demotion of cache segments between a global queue and a plurality of local queues by training a machine learning module |
US16/418,914 | 2019-05-21 | ||
US16/418,904 | 2019-05-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984550A CN111984550A (zh) | 2020-11-24 |
CN111984550B true CN111984550B (zh) | 2024-07-05 |
Family
ID=73442033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010400636.0A Active CN111984550B (zh) | 2019-05-21 | 2020-05-13 | 通过使用机器学习模块管理全局队列与多个本地队列之间的高速缓存段的分配和迁移 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984550B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292239A (zh) * | 2016-01-04 | 2018-07-17 | 英特尔公司 | 使用硬件队列设备的多核心通信加速 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407421B2 (en) * | 2009-12-16 | 2013-03-26 | Intel Corporation | Cache spill management techniques using cache spill prediction |
EP2487609A1 (en) * | 2011-02-07 | 2012-08-15 | Alcatel Lucent | A cache manager for segmented multimedia and corresponding method for cache management |
US9122588B1 (en) * | 2013-03-15 | 2015-09-01 | Virident Systems Inc. | Managing asymmetric memory system as a cache device |
US9544388B1 (en) * | 2014-05-09 | 2017-01-10 | Amazon Technologies, Inc. | Client-side predictive caching for content |
US10496448B2 (en) * | 2017-04-01 | 2019-12-03 | Intel Corporation | De-centralized load-balancing at processors |
-
2020
- 2020-05-13 CN CN202010400636.0A patent/CN111984550B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108292239A (zh) * | 2016-01-04 | 2018-07-17 | 英特尔公司 | 使用硬件队列设备的多核心通信加速 |
Also Published As
Publication number | Publication date |
---|---|
CN111984550A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321133B2 (en) | Determining an allocation of stage and destage tasks by using a machine learning module | |
US11321252B2 (en) | Selecting a priority queue from which to process an input/output (I/O) request using a machine learning module | |
US10776013B2 (en) | Performing workload balancing of tracks in storage areas assigned to processing units | |
US11321123B2 (en) | Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks | |
US11093399B2 (en) | Selecting resources to make available in local queues for processors to use | |
US11150944B2 (en) | Balancing mechanisms in ordered lists of dispatch queues in a computational device | |
US11068418B2 (en) | Determining memory access categories for tasks coded in a computer program | |
US10176101B2 (en) | Allocate a segment of a buffer to each of a plurality of threads to use for writing data | |
US10204060B2 (en) | Determining memory access categories to use to assign tasks to processor cores to execute | |
CN111066005B (zh) | 响应于经由总线接口上的i/o操作产生的高速缓存命中对元数据道的异步更新 | |
US9798466B2 (en) | Using a plurality of sub-buffers and a free segment list to allocate segments to a plurality of threads to use for writing data | |
US10606776B2 (en) | Adding dummy requests to a submission queue to manage processing queued requests according to priorities of the queued requests | |
KR20220045902A (ko) | 스토리지 리소스의 파티션 관리를 위한 시스템, 방법, 및 장치 | |
US11055234B2 (en) | Managing allocation and demotion of cache segments between a global queue and a plurality of local queues by training a machine learning module | |
US11048641B2 (en) | Managing allocation and demotion of cache segments between a global queue and a plurality of local queues by using a machine learning module | |
CN111984550B (zh) | 通过使用机器学习模块管理全局队列与多个本地队列之间的高速缓存段的分配和迁移 | |
US11341407B2 (en) | Selecting a disconnect from different types of channel disconnects by training a machine learning module | |
US10929057B2 (en) | Selecting a disconnect from different types of channel disconnects using a machine learning module | |
US11144475B2 (en) | Managing indication of accessed tracks in cache to a most recently used end of a cache list |
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 | ||
GR01 | Patent grant |