首页 / 动态数据压缩

动态数据压缩无效专利 发明

技术内容

动态数据压缩 背景技术 [0001] 高性能计算机系统可以包括分布式布置的节点以执行各种不同的任务。分布式布置的节点可以包括计算节点、存储器和输入/输出(I/O)节点。不同的节点可以通过通信架构而彼此通信。 [0002] 可以在包括分布式布置的节点的系统中执行数据压缩,以增强整体系统性能。如果对数据进行压缩,则压缩数据所消耗的通信架构带宽量相比于在传送未压缩数据时所消耗的带宽有所减少。 [0003] 然而,压缩数据增加处理负担。例如,如果在计算节点处执行数据压缩,则如果计算节点必须针对包括应用程序、操作系统和/或固件的各个程序执行其他处理,则计算节点可能会变得过载。如果计算节点负载重,则数据压缩的性能或者其他处理的性能都会受到影响。 [0004] 而且,不同的压缩算法可以实现不同级别的数据压缩。第一压缩算法可以以低于第二压缩算法的压缩因子对数据进行压缩,换言之,第一压缩算法实现了比第二压缩算法更低的数据压缩量。“压缩因子”可以表示或者对应于未压缩数据与压缩数据的比率。压缩因子越高,则所实现的压缩量越大。不同压缩算法的权衡是指可实现较高压缩因子的压缩算法可能会比可实现较低压缩因子的压缩算法消耗更多的处理资源。因此,系统性能可能会受到对用于压缩数据的压缩算法的选择的影响。 附图说明 [0005] 参考以下附图来描述本公开的一些实施方式。 [0006] 图1是根据一些示例的包括各种节点的计算机系统的框图。 [0007] 图2和图3是根据各种示例的用于存储机器可读指令的存储介质的框图。 [0008] 图4是根据一些示例的系统的框图。 [0009] 图5是根据其他示例的处理的流程图。 [0010] 在整个附图中,相同的附图标记指代相似但并不一定相同的元件。附图不一定按比例绘制,并且可能会夸大某些部分的尺寸,以便更清楚地对所示示例进行说明。此外,附图提供了与描述相一致的示例和/或实施方式;然而,该描述并不限于附图中所提供的示例和/或实施方式。 具体实施方式 [0011] 根据本公开的一些实施方式,动态压缩适应系统动态地对用于执行数据压缩的压缩算法、以及执行数据压缩的不同类型节点的布置内的位置进行调整。动态地对压缩算法以及位置进行调整包括:基于不同类型节点的布置的状态和为其执行数据压缩的工作负载的特征,从多个不同压缩算法中并且从不同类型节点的不同节点处的位置中进行选择。 [0012] 在其他示例中,动态压缩适应系统还能够选择使用相应的不同压缩算法来在多个位置处执行给定数据的压缩。例如,动态压缩适应系统可以决定在一个计算节点处对给定数据应用轻量级压缩算法,然后在另一节点(例如在存储器或I/O节点)处应用更积极的压缩算法。 [0013] 在本公开中,除非上下文另有明确说明,否则术语“一”、“一个”或“该”的使用旨在也包括复数形式。此外,当在本公开中使用时,术语“包括”、“包含”或“具有”指定存在所述元件,但并不排除存在或添加其他元件。 [0014] 这里所使用的“节点”可以指计算机或计算机集合。此外,节点还可以指计算机的一部分,从而多个节点可以是一个计算机的一部分。 [0015] 不同的节点可以通过通信架构而彼此通信。“通信架构”可以指将各种节点互连的通信网络或多个通信网络。通信网络可以包括无线网络和/或有线网络。 [0016] 计算节点可以包括处理器(或多个处理器)以执行机器可读指令,诸如软件应用程序、操作系统和/或固件的机器可读指令。存储器可以将数据存储在具有多级存储的分层存储布置内的第一级存储中。在一些示例中,存储器可以使用以下中的任意一个或者以下中的一些组合来实现:易失性存储器设备(或多个易失性存储器设备)和非易失性存储器设备(或多个非易失性存储器设备)。 [0017] I/O节点可以包括用以对较低级别存储中的数据存储进行控制的处理能力,这可以用以下中的任意一个或者以下中的一些组合来实现:基于磁盘的存储设备(或多个基于磁盘的存储设备)、固态存储设备(或多个固态存储设备)等。I/O节点的处理能力可以包括处理器(或多个处理器)。“较低级别存储”是指与较高级别存储(诸如存储器)相比可以具有较大存储容量和/或较慢访问速度的存储级别。在某些情况下,被更频繁访问的数据可以存储在存储器中,使得数据访问操作不必为了在存储器中找到的数据而访问较低级别存储。 [0018] 在一些示例中,数据的压缩可以被静态地定义为在系统中的特定位置处执行,和/或所使用的压缩算法可以是不发生变化的静态压缩算法。随着工作负载变化和/或系统状态变化,系统性能会由于执行数据压缩的位置或所使用的压缩算法而受到影响。 [0019] 例如,如果计算节点大量加载了代表程序的处理执行,则即使压缩数据由于压缩数据的大小减小而可以通过网络来更有效地通信,在计算节点处应用压缩可能也会降低整体系统性能。更具体而言,在一些情况下,在计算节点处压缩数据并通过网络传送压缩数据所涉及的总时间量可能会超过仅通过网络传送未压缩数据的总时间量。另一方面,如果计算节点相对空闲,则可以通过在通过网络传送数据之前在计算节点处压缩数据来实现更高的整体系统性能。在不同的示例中,如果计算节点负载重但接收数据的节点具有足够的处理能力,则在接收节点处执行数据压缩可能会更为有效。 [0020] 图1是示例计算机系统100的框图,该示例计算机系统100包括计算节点102、通过通信架构106耦接到计算节点102的存储器104、以及也耦接到通信架构106的I/O节点108。 尽管图1中示出了特定示例节点,但应注意,在其他示例中,计算机系统100可以包括其他类型或布置的节点。 [0021] 存储器104是分层存储布置的较高级别存储的一部分。图1还示出了作为分层存储布置的另一分层级别的一部分的较低级别存储110。存储在较低级别存储中的数据可以由I/O节点108来控制。尽管在图1中仅描绘了两个存储级别,但应注意,在其他示例中,可以存在多于两个的存储级别。存储器104用诸如易失性存储器设备或非易失性存储器设备的存储设备来实现,这种存储设备具有比用于实现较低级别存储110的存储设备更高的访问速度。 [0022] 尽管在图1中仅示出了一个计算节点102、一个存储器104和一个I/O节点108,但应注意,在其他示例中,可以存在多于一个的计算节点102和/或多于一个的存储器104和/或多于一个的I/O节点108。 [0023] 计算节点102包括处理器112、以及存储压缩指令116的存储介质114,该压缩指令 116可在处理器112上执行以在被调用时对数据进行压缩。压缩指令116的调用可以由源压缩决策引擎118来动态地进行控制。源压缩决策引擎118可以基于输入因子119来确定是否在计算节点102处调用压缩指令116,如果是,则应用压缩算法。 [0024] 如这里所使用的,术语“引擎”可以指硬件处理电路,该硬件处理电路可以包括以下中的任意一个或者以下中的一些组合:微处理器、多核微处理器的核、微控制器、可编程集成电路器件、可编程门阵列、或其他类型的硬件处理电路。可替代地,“引擎”可以指硬件处理电路与可在该硬件处理电路上执行的机器可读指令的组合。 [0025] 尽管计算节点压缩决策引擎118在图1中被描绘为计算节点102的一部分,但应注意,在其他示例中,计算节点压缩决策引擎118可以与计算节点102分开。 [0026] 此外,在一些示例中,多个源压缩决策引擎118可以与相应的多个计算节点102相关联,以做出关于是否要在对应的多个计算节点102处执行数据压缩的相应决定。可替代地,一个源压缩决策引擎118可以与多个计算节点102相关联,并且源压缩决策引擎118可以做出关于是否在每个相应的计算节点102处调用压缩指令116以在相应的计算节点102处执行数据压缩的决定。 [0027] 存储器104与存储器加速器120相关联。如这里所使用的,“存储器加速器”(或更简单地,“加速器”)可以指与存储器104相关联的处理电路,其可以执行与要存储到存储器104中或者要从存储器104中读取出的数据相关联的数据处理任务。例如,存储器加速器120可以执行数据的编码或解码、数据的加密或解密、对数据的函数应用等。根据本公开的一些实施方式,存储器加速器120还包括压缩逻辑122,该压缩逻辑122在被调用时可以将压缩应用于存储器104的数据。 [0028] 存储器加速器120可以是硬件加速器,或者可替代地,可以是硬件处理电路与机器可读指令的组合。存储器加速器120的压缩逻辑122可以是存储器加速器120的硬件处理电路的一部分,或者可以使用由存储器加速器120执行的机器可读指令来实现。 [0029] I/O节点108包括处理器124和存储介质126。压缩指令128存储在存储介质126中,并且可以在被调用时由处理器124来执行。 [0030] 在存储器加速器120中调用压缩逻辑122(并且将由压缩逻辑122应用压缩算法)或者在I/O节点108中调用压缩指令128(并且将由压缩指令128应用压缩算法)可以由接收方数据压缩决策引擎130基于输入因子132来进行控制。 [0031] 图1示出了作为I/O节点108的一部分的接收方压缩决策引擎130。在其他示例中,接收方压缩决策引擎130可以与I/O节点108分开。而且,在一些示例中,接收方压缩决策引擎130可以做出关于是否在存储器加速器120或I/O节点108处执行数据压缩的决定。在其他示例中,存储器加速器120和I/O节点108中的每个可以与其相应的压缩决策引擎相关联,以确定存储器加速器120或I/O节点108是否要对通过通信架构106接收到的数据(诸如来自计算节点102)进行压缩。 [0032] 在存在多个存储器加速器120和/或多个I/O节点108的其他示例中,相应的接收方压缩决策引擎130可以与多个存储器加速器120和/或多个I/O节点108相关联。在可替代示例中,一个接收方压缩决策引擎130可以与多个存储器加速器120和/或多个I/O节点108相关联。 [0033] 在其他示例中,可以在多个位置处对给定数据进行压缩。例如,源压缩决策引擎 118可以决定在计算节点102处对给定数据应用轻量级压缩算法,并且接收方压缩决策引擎 130可以决定对给定数据应用更积极的压缩算法。 [0034] 图1示出了不同的压缩决策引擎(118和130)可被分布在多个节点上以决定是否在各个节点处调用数据压缩的示例。根据这种示例,不同节点处的数据压缩决策可以由不同的压缩决策引擎在相应的阶段中执行。 [0035] 在可替代示例中,压缩决策引擎(118和130)可以被共同地实现为中央压缩决策引擎,以决定数据压缩的位置以及要在该位置处使用的压缩算法。 [0036] 尽管图1示出了每个计算节点102或I/O节点108中的一个处理器112或124,但应注意,在其他示例中,计算节点102可以包括多个处理器,和/或I/O节点108可以包括多个处理器。如本文所提到的,可在处理器上执行的指令可以指可在单个处理器上执行或者可在多个处理器上执行的指令。 [0037] 随后的讨论涉及图1的布置,其中压缩决策引擎(118和130)被分布在计算机系统 100的不同部分上。应注意,根据一些实施方式的技术或机制也适用于包括中央压缩决策引擎的计算机系统。 [0038] 在一些示例中,要在计算机系统100中压缩的数据可以包括由可在处理器112上执行的检查点应用142所产生的检查点140的检查点数据。“检查点”是指对计算节点102中的程序(或多个程序)的状态所获取的快照,其中程序的状态可以包括程序的数据和程序的操作状态。在计算机系统100(或计算机系统100的一部分)发生故障的情况下,可以使用检查点来将计算机系统100恢复到先前已知的良好状态。 [0039] 当在大型计算机系统中获取多个检查点时,诸如要在较低级别存储110中存储的检查点的数据量可以大。因此,压缩可以有助于减少针对检查点数据的处理资源或通信资源的使用。 [0040] 尽管示例涉及压缩检查点数据,但应注意,根据一些实施方式的技术或机制适用于对其他类型的数据进行压缩。 [0041] 基于输入因子1109,源压缩决策引擎118可以决定是否在计算节点102处执行数据压缩,并且如果决定是在计算节点102处执行数据压缩,则使用压缩算法。在一些示例中,输入因子119可以包括以下中的任何一个或者以下中的一些组合:工作负载特征、系统状态信息和系统配置信息。 [0042] 工作负载特征(在输入因子119中)表示工作负载的特征,该工作负载的特征可以包括以下中的任意一个或者以下中的一些组合:由工作负载正在处理的数据的大小、数据的类型(诸如浮点数据、整数数据、图形数据等);与工作负载相关联的事务的类型(诸如事务是否为用于生成检查点的检查点事务、或其他类型的事务等)。 [0043] 数据的大小可以指示在压缩数据时将消耗多少处理能力,其中较大的数据将导致使用较高的处理能力。此外,某些类型的数据具有比其他类型的数据更高的压缩因子。而且,因为检查点数据不太可能被很快使用(因为仅在计算机系统100已遇到故障并且必须恢复到先前状态时才会检查点它进行访问),所以可能希望尽可能早地对检查点数据进行压缩。可能会在不久的将来对与诸如数据库事务的其他事务相关联的数据进行访问,因此在那些情况下可能会希望将这种数据以未压缩形式存储在存储器104中,并且仅在数据被移动到较低级别存储110时进行压缩。 [0044] 系统状态信息(在输入因子119中)可以指示整个计算机系统100的状态和计算机系统的各个组件的状态。例如,系统状态信息可以包括计算节点102、存储器加速器120和I/O节点108中的每个的当前负载。系统状态信息还可以包括与通信架构106的负载有关的信息。 [0045] 例如,针对计算节点102,系统状态信息可以指示计算节点102当前正在执行各个程序(或多个程序)的处理(或多个处理)并且计算节点102的处理器112当前处于利用率的某个百分比(或其他负载度量)。可以提供与存储器加速器120和I/O节点108的处理器124有关的类似状态信息。针对通信架构106,系统状态信息可以包括网络负载度量,该网络负载度量表示当前在给定持续时间(即,通信架构106的阻塞级别)内通过通信架构106而通信的通信量。 [0046] 监视代理可以被设置在整个计算机系统100中,包括在计算节点102、加速器120和I/O节点108处、以及在通信架构106的各种通信节点(诸如路由器、交换机等)处,用于收集系统状态信息132。 [0047] 系统配置信息(在输入因子119中)可以指定计算机系统100的配置,包括计算节点 102、存储器加速器120和I/O节点108中的每个的配置。例如,系统配置信息可以包括处理器 112或124的处理能力(例如,每秒万亿次浮点运算数)、以及存储器加速器120的处理能力。 系统配置信息可以指示存储器加速器120具有低于计算节点102中的处理器112或I/O节点 108中的处理器124的处理能力的第一处理能力。该系统配置信息可被用于决定如果期望应用实现高压缩因子的压缩算法,则不应在具有受限处理能力的存储器加速器120处执行数据压缩。例如,源压缩决策引擎118可以决定在计算节点102处应用实现高压缩因子的压缩算法将更为有效。 [0048] 尽管参考基于多个输入因子119来做出其决定的源压缩决策引擎118,但应注意,在其他示例中,源压缩决策引擎118可以仅基于一个输入因子来做出其决定。 [0049] 在存在多个输入因子119的示例中,输入因子可以被聚合(aggregate)。例如,如果输入因子119包括压缩因子CF(其表示可以针对给定数据而实现的压缩量)和网络阻塞水平NL(其表示通信架构106的负载),则输入因子119可以被聚合,诸如通过求和、求平均或者获取CF和NL的一些其他聚合。然后,可以使用基于将CF和NL聚合而计算出的总分数(aggregate score)来决定在已通过通信架构106以未压缩形式传送数据之后,是在计算节点102处还是在接收节点(存储器加速器120或I/O节点108)处执行数据压缩。作为更具体的示例,如果CF值高(意味着给定数据的可压缩性高)并且NL值高(指示通信架构106负载重),则CF值和NL值的聚合将生成更高的总分数,该总分数将指示应在计算节点102处执行数据压缩。另一方面,如果CF值低并且NL值低,则可以指示通过通信架构106以未压缩形式发送给定数据以便在接收节点处进行压缩可能会更为有效。 [0050] 在其他示例中,输入因子119的聚合可以是加权聚合,诸如加权平均或加权求和。 例如,可以通过计算w1*CF+w2*NL来计算总分数,其中w1和w2分别是权重。在其他示例中,在计算总分数时可以包括更多的输入因子119。 [0051] 假设源压缩决策引擎118决定不在计算节点102处执行压缩,则可以通过通信架构 106以未压缩形式传送给定数据。未压缩的给定数据由I/O节点108(或由存储器104)来接收。 [0052] 在该阶段,接收方压缩决策引擎130可以基于输入因子132来做出是在存储器加速器120处还是在I/O节点108处对给定数据进行压缩的决定。在一些示例中,输入因子132可以包括以下中的任意一个或者以下中的一些组合:工作负载特征、系统状态信息和系统配置信息。输入因子132可以被聚合(以与输入因子119类似的方式)以产生总分数,该总分数由接收方压缩决策引擎130在决定要在存储器加速器120或I/O节点108处执行数据压缩时使用。 [0053] 更具体而言,根据一些示例,工作负载特征可以包括工作负载的数据的大小、数据的类型、以及事务的类型。系统状态信息可以指示存储器104中的可用空间、存储器加速器 120的处理负载、以及I/O节点108的处理负载。 [0054] 例如,如果存储器104具有大量的可用空间,则当数据被写回到较低级别存储110时将未压缩数据存储在存储器104中并在I/O节点108处执行数据压缩可能是有意义的。作为另一示例,如果接收方压缩决策引擎130决定数据的压缩因子高并且更加期望应用实现较高压缩因子的压缩算法(其将消耗更多处理资源),则接收方压缩决策引擎130可以决定在I/O节点108而不是在存储器加速器120处执行数据压缩。可替代地,如果接收方压缩决策引擎130确定数据的压缩因子低并因此可以使用实现较低压缩因子的压缩算法,并且存储器加速器120没有大量加载其他操作,则接收方压缩决策引擎130可以决定在存储器加速器 120处而不是在I/O节点108处执行数据压缩。 [0055] 在另外的示例中,可由源压缩决策引擎118或接收方压缩决策引擎130考虑的其他输入因子可以包括指示工作负载是否将使用存储器加速器120的功能(诸如存储器复制功能或分散收集功能)的因子。针对使用存储器加速器120的功能的工作负载,压缩决策引擎(118或130)可以决定跳过数据压缩或者在存储器加速器120处应用数据压缩。 [0056] 图2是存储机器可读指令的非暂时性机器可读或计算机可读存储介质200的框图,该机器可读指令在执行时使系统执行各种任务。机器可读指令包括动态压缩适应指令202以执行动态压缩适应处理。动态压缩适应处理包括动态地对用于执行数据压缩的压缩算法以及执行数据压缩的不同类型节点(诸如图1的节点102、120和108)的布置内的位置进行调整。在一些示例中,动态压缩适应指令可以是图1的源压缩决策引擎118和/或接收方压缩决策引擎130的指令。 [0057] 通过动态压缩适应处理来动态地对压缩算法以及位置进行调整可以包括:基于不同类型节点的布置的状态和为其执行数据压缩的工作负载的特征,从多个不同压缩算法中并且从不同类型节点的不同节点处的位置中进行选择。 [0058] 图3是根据进一步的示例的用于存储动态压缩适应指令302的非暂时性机器可读或计算机可读存储介质300的框图,该进一步的示例用于执行动态压缩适应处理以适应地对压缩算法以及数据压缩的位置进行选择。 [0059] 动态压缩适应指令302包括第一决策阶段指令304,以在第一决策阶段中基于第一输入因子(例如,图1中的119)来决定是否在计算节点处执行数据压缩。例如,第一决策阶段指令304可以是图1的源压缩决策引擎118的一部分。 [0060] 动态压缩适应指令302包括第二决策阶段指令306,以执行动态压缩适应处理的第二决策阶段。在第二决策阶段,响应于用于决定不在计算节点处执行数据压缩的第一决策阶段,第二决策阶段指令306基于第二输入因子(例如,图1中的132)来决定是否在接收节点(例如,存储器加速器120或I/O节点108)处执行对由计算节点通过通信架构传送到接收节点的未压缩数据的数据压缩。例如,第二决策阶段指令306可以是图1的接收方压缩决策引擎130的一部分。 [0061] 在其他示例中,第一决策阶段指令304可以决定在计算节点处对给定数据应用第一压缩算法,并且第二决策阶段指令306可以决定在接收节点(例如,存储器加速器120或I/O节点108)处对给定数据应用第二压缩算法(不同于第一压缩算法)。 [0062] 图4是系统400的框图,诸如图1的计算机系统100。系统400包括多个不同类型的节点402(例如,图1的计算节点102、存储器104、存储器加速器120和I/O节点108)。系统400还包括处理器(或多个处理器)404以执行各种任务。执行任务的处理器可以指用于执行任务的单个处理器或者用于执行任务的多个处理器。处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、或其他硬件处理电路。 [0063] 由处理器404执行的任务包括数据压缩确定任务406,以确定将要执行的工作负载的数据的数据压缩。为了执行数据压缩,任务还包括动态压缩适应任务408,以基于系统的状态和工作负载的特征,从多个不同压缩算法中动态地选择压缩算法并且从多个不同类型节点中动态地选择位置。任务还包括数据压缩任务410,以使用所选择的压缩算法并且在所选择的位置处执行工作负载的数据的数据压缩。 [0064] 图5是根据其他示例的处理的流程图,该其他示例可以例如在图1的计算机系统 100中执行。该处理生成包含用于将计算机系统恢复到由检查点表示的先前状态的数据的检查点(在502处)。该处理还基于系统的状态和检查点的数据特征,从多个不同压缩算法中动态地选择压缩算法并且从系统中的不同类型节点中动态地选择位置(在504处)。该处理还使用所选择的压缩算法并且在所选择的位置处对检查点的数据进行压缩(在506处)。 [0065] 存储介质200(图2)或300(图3)可以包括以下中的任意一个或者以下中的一些组合:半导体存储设备,诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存;磁盘,诸如固定磁盘、软盘和可移动磁盘;其他磁介质,包括磁带;光学介质,诸如光盘(CD)或数字视频盘(DVD);或其他类型的存储设备。注意,上面讨论的指令可以设置在一个计算机可读或机器可读存储介质上,或者可替代地,可以设置在被分布在可能具有多个节点的大系统中的多个计算机可读或机器可读存储介质上。这种计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造出的单一组件或多个组件。存储介质可以位于运行机器可读指令的机器中,或者位于远程站点处,从该远程站点可以通过网络下载机器可读指令以供执行。 [0066] 在前面的描述中,阐述了许多细节以提供对本文所公开的主题的理解。然而,可以在没有这些细节中的一些情况下对实施方式加以实施。其他的实施方式可以包括根据上述细节的修改和变化。旨在所附权利要求覆盖这些修改和变化。