CN111226201B - 管理计算机中的存储器的方法和计算机系统 - Google Patents
管理计算机中的存储器的方法和计算机系统 Download PDFInfo
- Publication number
- CN111226201B CN111226201B CN201880067100.2A CN201880067100A CN111226201B CN 111226201 B CN111226201 B CN 111226201B CN 201880067100 A CN201880067100 A CN 201880067100A CN 111226201 B CN111226201 B CN 111226201B
- Authority
- CN
- China
- Prior art keywords
- memory
- state
- ready
- compressed
- blocks
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
一种管理计算机中的存储器的模块。所述模块监视与计算机相关联的主存储器的使用率。主存储器存储处于就绪状态的存储器块。响应于处于就绪状态的存储器块对主存储器的使用率超过就绪状态阈值,该模块压缩处于就绪状态的存储器块中的至少一些,以形成处于就绪且经压缩状态的存储器块。响应于处于就绪且经压缩状态的存储器块对主存储器的使用率超过释放阈值,该模块释放处于就绪且经压缩状态的存储器块中的至少一些。响应于经压缩状态的存储器块对主存储器的使用率超过经压缩阈值,该模块将经压缩状态的存储器块中的至少一些传输到与计算机相关联的辅存储器。
Description
技术领域
所描述的实施例一般地涉及计算机存储器管理,并且特别地涉及在处理大量数据的同时分配存储器。
背景技术
数据分析平台(例如,大数据分析)的发展已将数据处理扩展为一种工具,该工具用于处理大容量数据以提取具有商业价值的信息。例如,小型企业可以利用采用了专用的计算和人力资源的第三方数据分析环境来收集、处理和分析来自各种来源(例如,外部数据提供商、内部数据源(例如,本地计算机上的文件)、大数据存储)的数据和基于云的数据(例如,社交媒体信息)。以提取有用的定量和定性信息的方式处理数据分析中使用的大型数据集通常需要在强大的计算机设备上实现的复杂软件工具。
此外,需要有效的数据处理技术来访问、处理和分析来自不同数据源的大型数据集。否则,性能瓶颈可能会出现,并且阻碍数据分析平台的功能,延迟数据处理,且降低从数据中提取的信息质量。例如,平台中的一个或多个处理器可能无法及时处理数据,从而导致延迟,这是因为平台中的其他子系统正在等待该处理器的输出。在另一个示例中,正在处理的数据量可能超过平台可用的工作存储器大小。在后一个示例中,当数据传输到存储器以及从存储器被传输时,可能会发生延迟。
发明内容
以上问题和其他问题可以通过用于管理计算机中的存储器的方法、计算机系统、和计算机可读存储介质来解决。该方法的实施例包括:监视与计算机相关联的主存储器的使用率,主存储器存储处于就绪状态的存储器块。该方法还包括:响应于处于就绪状态的存储器块对主存储器的使用率超过就绪状态阈值,压缩处于就绪状态的存储器块中的至少一些,以形成处于就绪且经压缩状态的存储器块以及处于经压缩状态的存储器块。方法还包括:响应于处于就绪且经压缩状态的存储器块对主存储器的使用率超过释放阈值,释放处于就绪且经压缩状态的存储器块中的至少一些;以及响应于经压缩状态的存储器块对主存储器的使用率超过经压缩阈值,将经压缩状态的存储器块中的至少一些传输到与计算机相关联的辅存储器,以形成处于磁盘上状态的存储器块。
该计算机系统的实施例包括用于执行计算机程序指令的计算机处理器。该系统还包括:非暂时性计算机可读存储介质,其存储计算机程序指令,所述计算机程序指令当被执行时使得得计算机处理器执行步骤。所述步骤包括:监视与计算机相关联的主存储器的使用率,主存储器存储处于就绪状态的存储器块。所述步骤还包括:响应于处于就绪状态的存储器块对主存储器的使用率超过就绪状态阈值,压缩处于就绪状态的存储器块中的至少一些,以形成处于就绪且经压缩状态的存储器块以及处于经压缩状态的存储器块。所述步骤还包括:响应于处于就绪且经压缩状态的存储器块对主存储器的使用率超过释放阈值,释放处于就绪且经压缩状态的存储器块中的至少一些。所述步骤还包括:响应于经压缩状态的存储器块对主存储器的使用率超过经压缩阈值,将经压缩状态的存储器块中的至少一些传输到与计算机相关联的辅存储器,以形成处于磁盘上状态的存储器块。
非暂时性计算机可读存储介质的实施例存储可执行计算机程序指令。所述指令是可执行的以监视与计算机相关联的主存储器的使用率,主存储器存储处于就绪状态的存储器块。所述指令还可执行以响应于处于就绪状态的存储器块对主存储器的使用率超过就绪状态阈值,压缩处于就绪状态的存储器块中的至少一些,以形成处于就绪且经压缩状态的存储器块以及处于经压缩状态的存储器块。所述指令还响应于处于就绪且经压缩状态的存储器块对主存储器的使用率超过释放阈值,释放处于就绪且经压缩状态的存储器块中的至少一些。所述指令还响应于经压缩状态的存储器块对主存储器的使用率超过经压缩阈值,将经压缩状态的存储器块中的至少一些传输到与计算机相关联的辅存储器,以形成处于磁盘上状态的存储器块。
附图说明
图1是示出了根据一个实施例的数据分析环境的框图,该数据分析环境包括数据分析系统。
图2是示出了根据一个实施例的使用数据分析系统创建的、用于处理数据的工作流的框图。
图3是示出了根据一个实施例的、用作图1的数据分析系统的典型计算机系统的功能视图的高级框图。
图4是示出了根据一个实施例的数据分析系统的数据分析应用的更详细视图的框图。
图5是示出了根据一个实施例的存储器管理模块的更详细视图的框图。
图6是示出了根据一个实施例的、在数据分析应用内分配存储器的过程的流程图。
图7是示出了根据一个实施例的、将数据块提供给工具模块以请求访问该数据块的过程的流程图。
附图仅出于说明的目的描绘了各种实施例。本领域技术人员将从以下讨论中容易认识到,在不脱离本文所述实施例的原理的情况下,可以采用本文所示的结构和方法的可替代实施例。在各个附图中,相同的附图标记和指定指示相同的元件。
具体实施方式
图1是示出了根据一个实施例的数据分析环境100的框图,数据分析环境100包括数据分析系统110。环境100还包括经由网络130连接到数据分析系统110的多个数据源120。尽管所示的环境100仅包含耦合到多个数据源120的一个数据分析系统110,但是实施例可以具有多个数据分析系统和单个数据源。
数据分析系统110是用于处理和分析大量数据的基于计算机的系统。所述数据是经由网络130,从多个数据源120收集、聚集或以其他方式访问数据。数据分析系统110可以实现可扩展的软件工具和硬件资源,所述可扩展的软件工具和硬件资源在访问、准备、混合和分析来自各种数据源的数据时被采用。例如,数据分析系统110支持数据密集型过程和工作流的执行。数据分析系统110可以是用于实现数据分析功能的计算设备,所述数据分析功能包括在本文中所述的存储器管理技术。
数据分析系统110还可以被配置为支持一个或多个软件应用程序,其在图1中示出为数据分析应用160。数据分析应用160处理和分析从一个或多个数据源120获得的大量数据。在某些情况下,数据分析应用160向终端用户提供这样的软件,该软件支持对数据分析工具和宏的联网或基于云的访问。作为示例,数据分析应用160允许用户以类似于移动应用商店或其他基于云的服务的方式来共享、浏览、和消费分析。分析数据、宏、和工作流可以打包并执行为较小规模和可定制的分析应用(例如,app),例如,该应用可以由数据分析系统110的其他用户访问。在某些情况下,可以由数据分析系统110来管理(即,授予或撤消访问)对已发布的分析应用的访问,并且由此提供访问控制和安全功能。数据分析应用160可以执行与分析app相关联的功能,例如,创建、部署、发布、迭代、更新等。
另外地,数据分析应用160可以支持在数据分析所涉及的各个阶段执行的功能,例如,访问、准备、混合、分析、和输出分析结果的能力。在某些情况下,数据分析应用160可以访问各种数据源,例如,以获取数据流中的原始数据。数据分析应用160收集的数据流可以包括多个原始数据的记录,其中,原始数据采用不同的格式和结构。在接收到至少一个数据流之后,数据分析应用160可以执行操作,以允许将数据流的记录用作对数据分析操作的输入。此外,可以通过数据分析应用160来实现在记录的统计、定性或定量处理中涉及的分析功能,例如,预测性分析(例如,预测性建模、聚类、数据调查)。
数据分析应用160还可以支持软件工具,以经由视觉图形用户界面(GUI)设计和执行可重复的工作流。作为示例,与数据分析应用160相关联的GUI提供用于数据混合、数据处理、和高级数据分析的拖放式工作流环境。此外,工作流可以包括执行特定处理操作或数据分析功能的一系列数据处理工具。属于工作流的一部分的每个工具都执行与该工具特定的数据相关的功能。作为示例,工作流可以包括实现各种数据分析功能的工具,这些功能包括以下中的一项或多项:输入/输出;准备;参加;预测;空间;调查;以及解析和转换操作。结合图2描述了关于工作流的更多细节。
在图1的实施例中,数据分析系统110包括主存储器140和辅存储器150。在一些实施例中,主存储器140提供对相对小的数据存储区域的相对快速的访问,而辅存储器150提供对相对较大的数据存储区域的相对慢的访问(其中,“相对”是指主存储器和辅存储器之间的差异)。例如,主存储器140可以包括在数据分析系统110上可用的随机存取存储器(RAM)的一部分,例如16GB。相比之下,辅存储器150可以包括存储设备的一部分,例如与可以存储兆兆字节数据的数据分析系统110进行通信的硬盘驱动器(HDD)和/或固态驱动器(SSD)。
在一个实施例中,数据分析应用160根据指定的工作流,分配主存储器和辅存储器的使用,以提供对来自数据源120的数据的有效处理。例如,正在处理的数据可能会超出主存储器140中可用的存储空间量。此外,辅存储器150可以提供数据的速度可能比数据分析应用160中的工具可以消耗数据的速度慢。数据分析应用160通过以优化将数据提供给工具的速率的方式执行对主存储器140和辅存储器150的存储器管理来解决这些问题。由此,存储器管理提高了数据分析应用160以及数据分析系统110的性能。
如上所述,数据源120向数据分析系统110提供电子数据。数据源120可以是计算机、数据库、或云存储系统。数据源120也可以是能够从另一个源获取数据的计算机系统。数据源120可以远离数据分析系统110,并且经由网络130提供数据。另外,一些或所有数据源120可以直接耦合到数据分析系统并且在不通过网络130传递数据的情况下提供数据。通过数据源120提供的数据通常被组织成数据记录,每个数据记录都包括一个或多个值。例如,由数据源提供的数据记录可以包括一系列逗号分隔的值。所述数据描述了与使用数据分析系统相关的企业的信息。例如,来自数据源120的数据可以描述与网站上可访问的内容和/或与社交媒体应用的基于计算机的交互(例如,点击跟踪数据)。
网络130表示数据分析系统110和数据源120之间的通信路径。在一个实施例中,网络130是互联网,并且使用标准通信技术和/或协议。可以使用以下技术和/或格式来表示在网络130上交换的数据,包括超文本标记语言(HTML)、可扩展标记语言(XML)等。在另一实施例中,实体可以使用定制的和/或专用的数据通信技术而代替上述方法或作为上述方法的补充。
图2是示出了根据一个实施例的使用数据分析系统110创建的、用于处理数据的工作流200的框图。在一个实施例中,工作流200是使用由数据分析系统110的GUI支持的视觉工作流环境来创建的。视觉工作流环境启用了一组拖放工具,其消除了对提供用于设计工作流的软件代码的需要,并且消除了对识别要由工作流实现的复杂公式的需要。在另一实施例中,在诸如可扩展标记语言(XML)文档之类的文档中创建和描述工作流200。工作流200是由数据分析系统110的计算机设备执行的。然而,在其他实施例中,工作流200被部署到另一计算机设备,该另一计算机设备可以经由网络(例如,网络130)通信地连接至数据分析系统110。
工作流可以包括执行特定处理操作或数据分析功能的一系列工具。作为一般示例,工作流的工具可以执行以下一项或多项数据分析功能:输入/输出;准备;参加;预测;空间;调查;以及解析和转换操作。实现工作流可以涉及对数据分析过程进行定义、执行、和自动化,其中,数据被传递到工作流中的每个工具,并且每个工具对接收到的数据执行其相应的处理操作。记录(包括聚合的一组个体记录)可以通过工作流的工具进行传递,这使个体处理操作可以更有效地对数据进行操作。这样数据聚合技术即使在处理大量数据的情况下也可以提高开发和运行工作流的速度。工作流可以定义或者以其他方式构建可重复的一系列操作,从而规定指定工具的操作顺序。在某些情况下,在工作流中包括的工具是以线性顺序执行的。在其他情况下,多个工具可以并行执行。
如图所示,图2的工作流200包括输入/输出工具,其被示出为输入工具205和206以及浏览工具230。输入工具205和206的功能是访问来自特定数据源120的记录。输入工具205和206将所访问的记录引入工作流中,并且将所述记录提供给工作流200的后续工具中。在此示例中,输入工具205将访问记录提供给过滤工具210,输入工具206将访问记录提供给选择工具211。浏览工具230位于工作流200的末端,并且接收从对工作流200的上游工具中的每个的执行所产生的输出。尽管在该示例中浏览工具230位于工作流200的末尾,但是可以在工作流的任何位置添加浏览工具230,以浏览和验证来自对工作流上游工具的执行的结果。
继续图2的示例,工作流200包括准备工具,其被示出为过滤工具210、选择工具211、公式工具215、和采样工具212。过滤工具210基于表达式来查询记录,并且将数据分为两个流,即真流和假流,真流包括满足表达式的记录,假流包括不满足表达式的记录。选择工具211可以用于对字段进行选择、取消选择、重新排序和重命名,改变字段类型或大小,以及分配描述。公式工具215使用一个或多个表达式来创建或更新字段,以执行宽泛的多种计算和/或操作。采样工具212将接收到的记录流限制到记录的数量、百分比、或随机集合。
工作流200还包括混合多个数据源的连接工具220。具体地,连接工具220基于公共字段(或记录位置)来组合两个输入数据流。图2的工作流200还被显示为包括汇总工具225,该汇总工具是解析和变换工具,其可以将数据重构和重塑为在进一步分析中所使用的格式。汇总工具225还可以通过分组、求和、计数、空间处理、和字符串连接来执行数据汇总。在一个实施例中,由汇总工具225生成的输出包括一个或多个计算的结果。
在一些实施例中,对工作流200的执行将使得输入工具205一次传递一条记录通过过滤工具210和公式工具215,直到所有记录都已被处理,并到达连接工具220为止。此后,输入工具206将开始一次传递一条记录通过选择工具211和采样工具212,直到将记录传递到相同的连接工具220为止。工作流200的某些个体工具可以具有实现其自己的并行操作的能力,例如在处理最后一个数据块时或者将计算机密集型操作(例如,排序工具)分成多个部分时,启动对数据块的读取。然而,在某些现有的工作流技术中,工作流的每个工具都会以管线方式、一次一条记录地个体地处理一组记录中的每个记录,直到达到工作流中的工具为止,其需要多个记录来执行处理操作(例如,排序工具、连接工具、汇总工具等)。
图3是示出了根据一个实施例的、用作图1的数据分析系统110的典型计算机系统300的功能视图的高级框图。计算机系统300可以执行数据分析应用160,以实现图2的工作流。
所示出的计算机系统300包括耦合至芯片组304的至少一个处理器302。处理器302可以包括在同一管芯上的多个处理器核心。同样耦合到芯片组304的是主存储器140、辅存储器150、键盘310、图形适配器312、定点设备314、和网络适配器316。显示器318耦合到图形适配器312。在一个实施例中,芯片组304的功能是由存储器控制器集线器320和I/O控制器集线器322提供的。网络适配器316将计算机系统300耦合到网络130。
在某些实施例中,计算机系统300可以具有另外、更少或不同的组件,并且这些组件可以不同地耦合。例如,计算机系统300的实施例可能缺少显示器和/或键盘。作为另一示例,计算机系统300可以具有多个主存储器140和/或辅存储器150。另外,在一些实施例中,计算机系统300可以被实例化为机架式刀片服务器或云服务器实例。
主存储器140是非暂时性计算机可读存储介质,并且保存处理器302使用的指令和数据。在一些实施例中,主存储器140是随机存取存储器。数据访问所需的时间量相对较短。因此,将由处理器访问的数据或近期内可能访问的数据存储在主存储器140内是有利的。
辅存储器150同样是非暂时性计算机可读存储介质,其保存处理器302所使用的指令和数据。辅存储器将数据存储在数据块中(在本文中被称为“辅数据块”),其作为单元进行访问。辅数据块的大小取决于辅存储器150的大小而不同,并且范围可以在1KB至8KB内。
取决于实施例,辅存储器150可以支持对辅数据块的随机访问或顺序访问(例如,取决于辅存储器是HDD还是SSD)。由此,涉及辅存储器150的数据访问所需的时间可以取决于被访问的位置而不同。无论如何,涉及辅存储器150的数据访问所需的时间量大于涉及主存储器140的等效访问所需的时间量。因此,这对于将由处理器访问的数据或近期内可能访问的数据存储在辅存储器150中的、计算机系统300的性能是不利的。
计算机系统300包括有限量的主存储器140。例如,系统300可以包括16GB或32GB的主存储器。然而,计算机系统300包括实际上无限量的辅存储器150。例如,系统可以包括数百GB或TB的辅存储器。通常而言,由数据分析系统110处理的数据量超过主存储器140的容量。因此,至少一些数据被存储在辅存储器150中。当数据传递通过工作流时,数据在主存储器140和辅存储器150之间移动。
计算机系统300适于执行用于提供本文所述功能的计算机程序模块。如本文所使用的,术语“模块”是指计算机程序指令和用于提供指定功能的其他逻辑。模块可以用硬件、固件和/或软件来实现。模块可以作为过程来执行。另外,模块可以作为过程中的一个或多个线程来执行。模块通常被存储在辅存储器308上,加载到主存储器306中,并且由处理器302执行。
图4是示出了根据一个实施例的数据分析系统110的数据分析应用160的更详细视图的框图。分析应用160包括数据接收器模块410、工具模块420、存储器管理模块430、和数据服务模块440。本领域技术人员将认识到,其他实施例可以具有与此处描述那些不同的组件和/或另外的组件,并且功能可以以不同的方式在各组件之间被分配。
数据接收器模块410从数据源120接收数据记录,并且将数据记录提供给数据分析应用160中的其他模块。在一个实施例中,数据接收器模块410用作数据分析应用中的工具之间的接口,例如图2中所示的输入工具206。在另一实施例中,不存在数据接收器模块410,并且数据接收器模块410的功能是由所述工具执行的。
工具模块420提供一组数据处理工具,所述数据处理工具执行特定的处理操作或数据分析功能,其包括以下中的一项或多项:输入/输出;准备;参加;预测;空间;调查;以及解析和转换操作。工具对由数据接收器模块410从数据源120接收的数据记录进行操作。工具模块420提供在结合图2描述的工作流200中包括的工具。
在一个实施例中,一个或多个工具模块420可以在处理用于工作流的数据记录时并行地执行。这样的工具模块可以作为多个单独线程运行,其中,每个线程在处理器302的单独核心上运行。例如,连接工具的实施例将与连接操作相关联的任务分配给多个线程,以利用处理器302的并行处理能力。
此外,由工具模块420提供的工具使用存储器来存储在工作流内正在处理的数据记录。工具模块420与存储器管理模块430交互,从而分配存储器以在处理期间使用,并且一旦完成处理就释放存储器。一些工具在处理数据时可以以某些模式使用存储器。例如,连接工具通常使用多次传递来处理数据记录。这样的工具通常分配大量的存储器来存储正在处理的数据记录,在第一传递期间访问每个数据记录一次,并且接着在随后的传递期间再次访问每个数据记录。
存储器管理模块430管理数据分析应用160的存储器使用。在一个实施例中,存储器管理模块430专用于数据分析应用160。存储器管理模块430可以与由数据分析系统110提供的存储器管理功能单独地接合。例如,存储器管理模块430可以与由在数据分析系统110上运行的操作系统提供的不同的存储器管理系统接合。存储器管理模块430将数据分析应用160的存储器操作从操作系统存储器管理系统中抽象掉。
为此,当工具实现工作流时,存储器管理模块430分配和释放存储器,以用于存储由工具模块420的工具所处理的数据记录。另外,存储器管理模块430选择性地将分配的存储器存储在主存储器140或辅存储器150中。通常而言,存储器管理模块430将当前正在由工具访问的数据记录存储在主存储器140中,并且将在当前没有被工具访问的数据记录存储在辅存储器150中。在工具访问记录时,存储器管理430在主存储器140和辅存储器150之间移动数据记录。另外,存储器管理模块430选择性地压缩主存储器140中的数据记录,以便有效地使用主存储器140的有限存储容量。
在一个实施例中,工具向存储器管理模块430提供通知,以指示工具何时可能访问包含所述数据记录的存储器块。例如,工具可以提供通知,以指示是否可能在短时间内或长时间内访问特定块。另外,通知可以告知存储器管理模块430工具何时打算再次访问块,以及工具何时已经完全完成对块的访问。例如,通知可以告知存储器管理模块430工具何时已经暂时完成对块的访问,但是将来将再次访问该块。通知还可以告知存储器管理模块430工具何时将不再访问块。
存储器管理模块430可以在决定是否将特定存储器块存储在主存储器140和辅存储器150中,以及存储该块的状态(例如,准备、压缩)时,使用工具发出的通知。存储器管理模块430还可使用通知来确定何时释放(例如,回收)特定块。此外,在一个实施例中,存储器管理模块430使用该通知来保存描述访问特定块的工具的数量的几个计数。存储器管理模块430保存指示当前正在访问块的工具数量的访问计数,以及指示将来可以访问块的工具数量的锁定计数。当锁定计数达到零时,存储器管理模块430可以释放该块。
存储器管理模块430通过将工具模块420的工具所访问的记录存储在相对较快的主存储器140中,从而提高了数据分析系统110和数据分析应用160的性能。特别地,存储器管理模块430增强了工具(例如,连接工具)的性能,该工具跨大量数据记录执行了多次传递。
数据输出模块440输出由数据分析应用160执行的处理结果。即,数据输出模块440接收通过执行工作流200产生的已处理数据记录,并做出可供其他系统和/或人工审阅者使用的数据记录。例如,数据输出模块440可以提供GUI,通过该GUI,与企业相关联的人员审阅者可以审阅从与企业相关联的数据记录的处理而产生的工作流200的输出。
图5是示出了根据一个实施例的存储器管理模块430的更详细视图的框图。存储器管理模块430包括分配模块510、压缩模块520、数据传输模块530和存储器控制模块540。其他实施例可以具有与这里描述的组件不同的组件和/或另外的组件,并且功能可以以不同的方式在各组件之间被分配。
分配模块510响应于来自工具模块420和/或数据分析应用160内的其他模块的请求来分配和释放存储器块。分配模块510从数据分析应用160内的其他模块接收分配请求并作为响应而分配存储器块。例如,当工具正在处理工作流时,可以从工具模块420的工具接收分配请求。存储器分配模块510从块的虚拟池(使得其看起来无限)中分配块。考虑到存储器架构的限制,这些虚拟块可以在主存储器140中或在辅存储器150中。分配模块510分配的存储器块与关于辅存储器150描述的辅数据块不同。
具体地,分配模块510接收存储器分配请求,响应于该请求而分配逻辑连续的存储器块,并且将该存储器块的句柄(handle)返回给请求者。在一些实施例中,分配请求指定块大小,并且分配模块510基于块大小来分配块。在一个实施例中,分配模块510分配两种不同类型的块:未经压缩的存储器块和压缩的存储器块。未经压缩的存储器块保存未经压缩的数据记录。压缩的存储器块小于未经压缩的存储器块,并保存压缩的数据记录(即,一个或多个已经受到压缩的未经压缩的存储器块)。分配模块510接收的存储器分配请求指定要分配的存储器块的类型。
分配模块510还接收指定到存储器块的句柄的存储器释放请求。分配模块510释放这样的存储器块,以使得该块可用于在随后的请求中重新分配。分配模块510保留可用于被重新分配的自由块的列表。
当主存储器使用率超过阈值或降到阈值以下时,压缩模块520选择性地压缩和解压缩存储器块。压缩的存储器块占用的存储空间比未经压缩的存储器块占用的存储空间要少得多。当用于压缩时,压缩模块520被提供有保存数据记录的未经压缩的存储器块的句柄,并被存储在主存储器140中。压缩模块520将数据记录压缩在由未经压缩的存储器块句柄标识的存储器块中,并且将压缩的数据记录存储在由压缩的存储器块句柄标识的位置处。压缩模块520将压缩的存储器块句柄返回给请求者。请注意,在执行压缩之后,未经压缩的存储器块和压缩的存储器块保持在主存储器140中。在一个实施例中,压缩模块520使用专用的、单独的线程来执行压缩和解压缩操作。以该方式,压缩和解压缩任务不会阻塞在数据分析系统110上执行的其他线程。
当压缩模块520执行压缩时,其向分配模块510请求压缩的存储器块句柄。分配模块510响应于该请求而分配新的压缩的存储器块,或从自由列表返回压缩的存储器块。压缩的存储器块可以小于就绪块,并且压缩模块520可以使用一个以上的压缩的存储器块来存储未经压缩的存储器块的内容。
为了解压缩,压缩模块520接收标识存储在主存储器140中的压缩的存储器块的压缩的存储器块句柄。压缩模块520从分配模块510请求并接收用于未经压缩的存储器块的一个或多个句柄,并且将一个或多个压缩的存储器块解压缩为经分配的未经压缩的存储器块。一旦执行解压缩,压缩模块520释放压缩的存储器块,或使用压缩的存储器块来服务随后的压缩请求。
压缩模块520使用针对压缩速度而优化的无损压缩算法,而不是针对压缩率而优化的算法。例如,压缩模块520可以使用Snappy压缩算法来压缩存储器块。压缩模块520还可使用其他压缩算法,例如,Huffman编码和Lempel-Ziv压缩的变型。
响应于来自存储器管理模块430中其他模块的请求,数据传输模块530在主存储器140和辅存储器150之间选择性地移动数据块。在一个实施例中,数据传输模块530在主存储器140和辅存储器150之间移动压缩的存储器块。压缩的存储器块可以大于辅存储器150所使用的辅数据块。因此,压缩的存储器块可以占用多个辅数据块。数据传输模块530将保存来自同一压缩的存储器块的数据的辅数据块以作为单元在主存储器140和辅存储器150之间移动。
存储器控制模块540与存储器管理模块430中的其他模块交互,以控制选择性压缩/解压缩以及存储器块在主存储器140与辅存储器150之间的传输。存储器控制模块540在工具处理工作流时监视工具模块420访问存储器块的请求。存储器控制模块540确保被请求访问的任何存储器以未经压缩状态存储在主存储器140中。这样的块被称为处于“就绪”状态。
如果所请求的存储器块未处于就绪状态,则存储器控制模块540从辅存储器150获得存储器块和/或将存储器块解压缩到主存储器140中,以使该块进入就绪状态。在一些实施例中,存储器控制模块540可以推测性地压缩、解压缩、和传输存储器块,以增加当工具模块420请求访问给定存储器块时,给定存储器块已经处于就绪状态的可能性。
为此,存储器控制模块540确定可用于存储存储器块的主存储器140的总量。随着工作流的执行,存储器控制模块540跟踪实际用于存储存储器块的主存储器140的量,并且通过扩展,还跟踪自由存储另外的存储器块的主存储器的量。另外,存储器控制模块540跟踪用于以各种不同状态存储存储器块的主存储器的量。
如果处于就绪状态的存储器块占用的主存储器使用率超过规定限制(称为“就绪状态阈值”),则存储器控制模块540使用压缩模块520来推测性地将处于就绪状态的至少一些存储器块压缩到“压缩”状态。在一个实施例中,就绪状态阈值是可用主存储器140的80%。
存储器控制模块540在主存储器140中保存压缩的存储器块和对应的未经压缩的存储器块;如果主存储器的使用率进一步增加,则压缩的存储器块准备好传输到辅存储器150。具有同样存储在主存储器中的对应的压缩的块的主存储器140中的未经压缩的存储器块被称为处于“就绪且经压缩”状态。如果工具模块420访问处于就绪且经压缩状态的存储器块,则存储器控制模块540可以通过释放(例如,通过回收)处于经压缩状态的对应块,将存储器块转换为就绪状态。在一个实施例中,如果工具模块420写入存储器块,则存储器控制模块540将存储器块转换为就绪状态,并且通过在就绪状态下写入转换后的存储器块来服务于请求。如果工具模块420从存储器块读取,则存储器控制模块540可以使用处于就绪且经压缩状态的存储器块来服务于读访问,同时使得存储器块处于该状态。
如果主存储器140的使用率继续增加到超过就绪状态阈值,则存储器控制模块540释放处于就绪且经压缩状态的存储器块中的至少一些,从而释放由这些块占用的主存储器。在一个实施例中,如果主存储器140的使用率超过释放阈值(该释放阈值大于就绪状态阈值),则存储器控制模块540释放处于就绪且经压缩状态的存储器块,从而为新分配存储器块腾出空间。在一个实施例中,释放阈值是主存储器的100%。因此,一旦主存储器的使用率达到100%,则存储器控制模块540就释放处于就绪且经压缩状态的存储器块。
另外,存储器控制模块540通过将处于经压缩状态的存储器块传输到辅存储器150,从而在主存储器140中腾出可用空间。在一个实施例中,存储器控制模块540跟踪处于经压缩状态的存储器块占用的主存储器140的量。如果处于经压缩状态的存储器块超过了主存储器的阈值量(“压缩”阈值),存储器控制模块540通过将压缩的块写入辅存储器并释放块被存储的主存储器140,来将多个压缩的块中的至少一些压缩的块传输到辅存储器150。辅存储器150中存储的存储器块被称为处于“磁盘上”状态。
当主存储器140的使用率降低时,存储器控制模块540将处于磁盘上状态的存储器块从辅存储器150推测地传输到主存储器。存储器控制模块540检测主存储器的使用率何时下降到使用率阈值以下(或者相反,主存储器中的未分配的可用空间何时超过阈值)。在一个实施例中,使用率阈值是50%。响应于主存储器使用率下降到使用率阈值以下,存储器控制模块540将处于磁盘上状态的存储器块中的至少一些传输到主存储器140。
这些传输的存储器块以经压缩状态被存储在主存储器140中。另外,存储器控制模块540将所传输的存储器块以磁盘上状态保持在辅存储器150中。因此,这些存储器块同时保持处于经压缩状态和磁盘上状态。如果主存储器140的使用率增加并且例如超过经压缩阈值,则存储器控制模块540释放具有对应的磁盘上存储器块的至少一些压缩的存储器块。以该方式,无需将存储器块从主存储器传输到辅存储器150,就可以恢复主存储器140。类似地,如果工具模块420访问同时处于经压缩状态和磁盘上状态的存储器块,则该存储器控制模块540将压缩版本的存储器块解压缩为就绪状态,并释放处于磁盘上状态的存储器块。
存储器控制模块540的实施例基于工具模块420何时分配和/或访问特定块,来按顺序对存储器块执行上述操作。当将块从就绪状态转换为就绪且经压缩状态时,存储器控制模块540首先压缩最新分配的存储器块。换句话说,存储器控制模块540以自分配以来经过的时间的升序来压缩块。当将压缩的块移动到辅存储器150(例如,到磁盘上状态)时,存储器控制模块540也使用该顺序。存储器控制模块540使用该顺序,因为对数据记录执行多次传递的工具将倾向于在分配时访问块,然后直到第二传递时才再次访问该块。因此,基于这样的假设来压缩最近分配的块:将在较近分配的块之前访问稍近分配的块。
当将存储器块从辅存储器150传输到主存储器140时,存储器控制模块540使用基于存储器块何时被传输到辅存储器150(即,何时将块转换到磁盘状态)的顺序。在实施例中,存储器控制模块540从辅存储器150获取存储器,辅存储器150从最早的块开始。换句话说,所以存储器控制模块540以从块被存储在辅存储器150中所经过时间的降序来获取块。存储器控制模块540基于以下假设使用该顺序:工具模块420将在访问较新的块之前访问较旧的块。
图6是示出了根据一个实施例的在数据分析应用内分配存储器的过程的流程图。在一些实施例中,该方法由存储器控制模块540执行,尽管该方法中的一些或全部操作可以在其他实施例中由其他实体执行。在一些实施例中,流程图中的操作以不同顺序执行,并且可以包括不同和/或附加步骤。
存储器控制模块540接收分配请求以分配存储器块(610)。存储器控制模块540准许接收到的分配请求,并确定主存储器140的使用率(620)。例如,存储器控制模块540确定处于就绪状态的存储器块以及处于经压缩状态的存储器块所占用的主存储器140的量。响应于主存储器使用率超过就绪状态阈值,存储器控制模块540压缩处于就绪状态的存储器块,以产生处于就绪且经压缩状态的存储器块以及处于经压缩状态的存储器块(630)。响应于主存储器使用率超过释放阈值,存储器控制模块540释放处于就绪且经压缩状态的存储器块,同时将对应的存储器块保持在压缩状态(640)。
响应于处于经压缩状态的存储器块超过经压缩阈值,存储器控制模块540将压缩的存储器块传输到辅存储器150,以形成处于磁盘上状态的存储器块(650)。那些压缩的存储器块可以同时保持在压缩状态和磁盘上状态。如果可用的主存储器140增加,例如增加超过经压缩阈值,则存储器控制模块540可以从主存储器140释放具有对应的磁盘上存储器块的压缩的存储器块中的一个或多个。
响应于主存储器使用率下降到使用率阈值以下,存储器控制模块540将处于磁盘上状态的存储器块从辅存储器150转移到主存储器140(660)。这些存储器块可以维持在磁盘状态和压缩状态两者中。
图7是示出了根据一个实施例的、将数据块提供给工具模块420以请求访问该数据块的过程的流程图。在一些实施例中,由存储器控制模块540执行该方法,但该方法中的一些或全部操作可以在其他实施例中由其他实体执行。在一些实施例中,以不同顺序执行流程图中的操作,并且操作可以包括不同和/或另外的步骤。
存储器控制模块540接收用于访问存储器块的请求(710)。在某些实例中,由工具模块420进行该请求。在一些实施例中,存储器控制模块540确定所请求的存储器块是否处于就绪状态(720)。当所请求的存储器块以未经压缩状态存储在主存储器140中时,该存储器块处于就绪状态。
响应于确定所请求的存储器块不处于就绪状态,存储器控制模块540将所请求的存储器块的状态更新为就绪状态(730)。例如,存储器控制模块540在确定所请求的存储器块处于经压缩状态时,解压缩所请求的存储器块。作为另一示例,在确定所请求的存储器块以磁盘上状态存储时,存储器控制模块540将所请求的存储器块从辅存储器150传输到主存储器140。当存储器控制模块540确定所请求的存储器块处于就绪状态时,存储器控制模块540不改变所请求的存储器块的状态,并且可以继续执行下一步骤。接着,存储器控制模块540响应于访问请求,而供应所请求的存储器块(740)。例如,存储器控制模块540将所请求的存储器块发送到做出访问请求的工具模块420。
在另一实施例中,在接收到针对处于就绪且经压缩状态的存储器块的读取访问请求时,存储器控制模块540使用处于就绪且经压缩状态的存储器块的版本(即,未经压缩版本的块)供应该请求,并且将处于经压缩状态的存储器块版本留在主存储器中。这样,请求得到满足,并保留了执行压缩的存储器块的工作。
组件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实现所描述的实施例的机制可以具有不同的名称、格式或协议。此外,如所描述的,可以经由硬件和软件的组合来实现该系统,或者可以完全由硬件元件来实现该系统。同样,本文描述的各种系统组件之间的功能的特定划分仅仅是示例性的,而非强制性的。由单个系统组件执行的功能可以替代地由多个组件执行,并且由多个组件执行的功能可以替代地由单个组件执行。
以上描述的某些部分针对算法和信息操作的符号表示来呈现特征。这些算法描述和表示是数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的手段。这些操作尽管在功能上或逻辑上进行了描述,但应理解为由计算机程序实现。此外,在不失一般性的情况下,有时将这些操作的布置称为模块或功能名称证明是方便的。
如从上述讨论中可以明显看出,除非另有明确说明,否则应理解,在整个说明书中,使用例如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论是指计算机系统或类似的电子计算设备的动作和过程,其操纵和转换表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备中的物理(电子)量的数据。
本文描述的某些实施例包括以算法形式描述的处理步骤和指令。应当注意,实施例的过程步骤和指令可以体现在软件、固件或硬件中,并且当体现在软件中时,可以被下载以驻留在实时网络操作系统所使用的不同平台上并从其操作。
本文提出的算法和操作与任何特定的计算机或其他装置并非固有相关。根据本文的教导,各种通用系统也可以用在程序上,或者其可以证明构造更专用的装置以执行所需的方法步骤是方便的。各种这些系统所需的结构以及等同的变型对于本领域技术人员将是显而易见的。另外,没有参考任何特定的编程语言来描述本实施例。应当理解,如本文所述的,可以使用各种编程语言来实现实施例的教导。
实施例很适合于众多拓扑上的宽泛的多种计算机网络系统。在该领域内,大型网络的配置和管理包括存储设备和计算机,该存储设备和计算机通过网络(例如,互联网)通信地耦合到不同的计算机和存储设备。
最后,应该注意的是,主要是出于可读性和指导性目的而选择本说明书中使用的语言,并且可能尚未选择该语言来描绘或限制本发明的主题。因此,实施例的公开意图是说明性的,而非限制性的。
Claims (20)
1.一种管理计算机中的存储器的计算机实现的方法,包括:
监视与所述计算机相关联的主存储器的使用率,所述主存储器存储处于就绪状态的未经压缩的存储器块;
响应于处于所述就绪状态的所述未经压缩的存储器块对主存储器的使用率超过就绪状态阈值,
压缩处于所述就绪状态的所述未经压缩的存储器块中的至少一些,以形成经压缩的存储器块,
将所述未经压缩的存储器块中的所述至少一些作为处于就绪且经压缩状态的存储器块存储在所述主存储器中,以及
将所述经压缩的存储器块作为处于经压缩状态的存储器块存储在所述主存储器中;
响应于处于所述就绪且经压缩状态的所述存储器块对主存储器的使用率超过释放阈值,释放处于所述就绪且经压缩状态的所述存储器块中的至少一些;以及
响应于处于所述经压缩状态的所述存储器块对主存储器的使用率超过经压缩阈值,将处于所述经压缩状态的至少一些存储器块传输到与所述计算机相关联的辅存储器,以形成处于磁盘上状态的存储器块。
2.根据权利要求1所述的方法,还包括:
从在所述计算机上执行的模块接收用于访问存储器块的请求;
确定所请求的存储器块是否处于所述就绪状态;以及
响应于所请求的存储器块不处于所述就绪状态的确定,将所请求的存储器块改变为所述就绪状态;以及
响应于访问请求,供应处于所述就绪状态的所请求的存储器块。
3.根据权利要求1所述的方法,还包括:
响应于主存储器使用率下降到使用率阈值以下,将处于所述磁盘上状态的至少一些存储器块从所述辅存储器传输到所述主存储器。
4.根据权利要求3所述的方法,其中,从所述辅存储器传输到所述主存储器的所述存储器块以所述经压缩状态被存储在所述主存储器中,所述方法还包括:
将已传输的、处于所述磁盘上状态的存储器块保留在所述辅存储器上;以及
响应于主存储器使用率超过所述经压缩阈值,释放从所述辅存储器传输到所述主存储器的以所述经压缩状态被存储的所述存储器块。
5.根据权利要求1所述的方法,还包括:
从在所述计算机上执行的模块接收用于访问处于所述就绪且经压缩状态的存储器块的请求;
确定访问请求是读请求还是写请求;
响应于确定所述访问请求是写请求,进行以下操作:
将所请求的存储器块改变为所述就绪状态;以及
释放与所请求的存储器块相对应的、处于所述经压缩状态的存储器块;
响应于确定所述访问请求是读请求,进行以下操作:
使用处于所述就绪且经压缩状态的所述存储器块来供应所述读请求;以及
将所请求的存储器块维持在所述就绪且经压缩状态。
6.根据权利要求1所述的方法,其中,压缩处于所述就绪状态的所述未经压缩的存储器块中的至少一些,以形成经压缩的存储器块包括:
以自分配所述未经压缩的存储器块以来所经过时间的升序来压缩处于所述就绪状态的所述未经压缩的存储器块。
7.根据权利要求1所述的方法,其中,所述主存储器相对于所述辅存储器提供对存储器块的更快的访问。
8.一种用于管理计算机中的存储器的计算机系统,所述系统包括:
非暂时性计算机可读存储介质,其存储可执行计算机程序指令,所述计算机程序指令包括当被执行时使得计算机处理器执行以下步骤的指令,所述步骤包括:
监视与所述计算机相关联的主存储器的使用率,所述主存储器存储处于就绪状态的未经压缩的存储器块;
响应于处于所述就绪状态的所述未经压缩的存储器块对主存储器的使用率超过就绪状态阈值,
压缩处于所述就绪状态的所述未经压缩的存储器块中的至少一些,以形成经压缩的存储器块,
将所述未经压缩的存储器块中的所述至少一些作为处于就绪且经压缩状态的存储器块存储在所述主存储器中,以及
将所述经压缩的存储器块作为处于经压缩状态的存储器块存储在所述主存储器中;
响应于处于所述就绪且经压缩状态的所述存储器块对主存储器的使用率超过释放阈值,释放处于所述就绪且经压缩状态的所述存储器块中的至少一些;以及
响应于处于所述经压缩状态的所述存储器块对主存储器的使用率超过经压缩阈值,将处于所述经压缩状态的至少一些存储器块传输到与所述计算机相关联的辅存储器,以形成处于磁盘上状态的存储器块。
9.根据权利要求8所述的系统,其中,由所述计算机处理器执行的步骤还包括:
从在所述计算机上执行的模块接收用于访问存储器块的请求;
确定所请求的存储器块是否处于所述就绪状态;以及
响应于所请求的存储器块不处于所述就绪状态的确定,将所请求的存储器块改变为所述就绪状态;以及
响应于访问请求,供应处于所述就绪状态的所请求的存储器块。
10.根据权利要求8所述的系统,其中,由所述计算机处理器执行的步骤还包括:
响应于主存储器使用率下降到使用率阈值以下,将处于所述磁盘上状态的至少一些存储器块从所述辅存储器传输到所述主存储器。
11.根据权利要求10所述的系统,其中,从所述辅存储器传输到所述主存储器的所述存储器块以所述经压缩状态被存储在所述主存储器中,其中,由所述计算机处理器执行的步骤还包括:
将已传输的、处于所述磁盘上状态的存储器块保留在所述辅存储器上;以及
响应于主存储器使用率超过所述经压缩阈值,释放从所述辅存储器传输到所述主存储器的以所述经压缩状态被存储的所述存储器块。
12.根据权利要求8所述的系统,其中,由所述计算机处理器执行的步骤还包括:
从在所述计算机上执行的模块接收用于访问处于所述就绪且经压缩状态的存储器块的请求;
确定访问请求是读请求还是写请求;
响应于确定所述访问请求是写请求,进行以下操作:
将所请求的存储器块改变为所述就绪状态;以及
释放与所请求的存储器块相对应的、处于所述经压缩状态的存储器块;
响应于确定所述访问请求是读请求,进行以下操作:
使用处于所述就绪且经压缩状态的所述存储器块来供应所述读请求;以及
将所请求的存储器块维持在所述就绪且经压缩状态。
13.根据权利要求8所述的系统,其中,压缩处于所述就绪状态的所述未经压缩的存储器块中的至少一些,以形成经压缩的存储器块包括:
以自分配所述未经压缩的存储器块以来所经过时间的升序来压缩处于所述就绪状态的所述未经压缩的存储器块。
14.根据权利要求8所述的系统,其中,所述主存储器相对于所述辅存储器提供对存储器块的更快的访问。
15.一种非暂时性计算机可读存储介质,其存储用于管理计算机中的存储器的可执行计算机程序指令,所述计算机程序指令包括当被执行时使得计算机处理器执行以下操作的指令:
监视与所述计算机相关联的主存储器的使用率,所述主存储器存储处于就绪状态的未经压缩的存储器块;
响应于处于所述就绪状态的所述未经压缩的存储器块对主存储器的使用率超过就绪状态阈值,
压缩处于所述就绪状态的所述未经压缩的存储器块中的至少一些,以形成经压缩的存储器块,
将所述未经压缩的存储器块中的所述至少一些作为处于就绪且经压缩状态的存储器块存储在所述主存储器中,以及
将所述经压缩的存储器块作为处于经压缩状态的存储器块存储在所述主存储器中;
响应于处于所述就绪且经压缩状态的所述存储器块对主存储器的使用率超过释放阈值,释放处于所述就绪且经压缩状态的所述存储器块中的至少一些;以及
响应于处于所述经压缩状态的所述存储器块对主存储器的使用率超过经压缩阈值,将处于所述经压缩状态的至少一些存储器块传输到与所述计算机相关联的辅存储器,以形成处于磁盘上状态的存储器块。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中,用于管理所述计算机中的存储器的所述计算机程序指令还包括当被执行时使得所述计算机处理器执行以下操作的指令:
从在所述计算机上执行的模块接收用于访问存储器块的请求;
确定所请求的存储器块是否处于所述就绪状态;以及
响应于所请求的存储器块不处于所述就绪状态的确定,将所请求的存储器块改变为所述就绪状态;以及
响应于访问请求,供应处于所述就绪状态的所请求的存储器块。
17.根据权利要求15所述的非暂时性计算机可读存储介质,其中,用于管理所述计算机中的存储器的所述计算机程序指令还包括当被执行时使得所述计算机处理器执行以下操作的指令:
响应于主存储器使用率下降到使用率阈值以下,将处于所述磁盘上状态的至少一些存储器块从所述辅存储器传输到所述主存储器。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中,从所述辅存储器传输到所述主存储器的所述存储器块以所述经压缩状态被存储在所述主存储器中,其中,用于管理所述计算机中的存储器的所述计算机程序指令还包括当被执行时使得所述计算机处理器执行以下操作的指令:
将已传输的、处于所述磁盘上状态的存储器块保留在所述辅存储器上;以及
响应于主存储器使用率超过所述经压缩阈值,释放从所述辅存储器传输到所述主存储器的以所述经压缩状态被存储的所述存储器块。
19.根据权利要求15所述的非暂时性计算机可读存储介质,其中,用于管理所述计算机中的存储器的所述计算机程序指令还包括当被执行时使得所述计算机处理器执行以下操作的指令:
从在所述计算机上执行的模块接收用于访问处于所述就绪且经压缩状态的存储器块的请求;
确定访问请求是读请求还是写请求;
响应于确定所述访问请求是写请求,进行以下操作:
将所请求的存储器块改变为所述就绪状态;以及
释放与所请求的存储器块相对应的、处于所述经压缩状态的存储器块;
响应于确定所述访问请求是读请求,进行以下操作:
使用处于所述就绪且经压缩状态的所述存储器块来供应所述读请求;以及
将所请求的存储器块维持在所述就绪且经压缩状态。
20.根据权利要求15所述的非暂时性计算机可读存储介质,其中,用于压缩处于所述就绪状态的所述未经压缩的存储器块中的至少一些以形成经压缩的存储器块的所述计算机程序指令包括当被执行时使得所述计算机处理器执行以下操作的指令:
以自分配所述未经压缩的存储器块以来所经过时间的升序来压缩处于所述就绪状态的所述未经压缩的存储器块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/785,353 | 2017-10-16 | ||
US15/785,353 US10558364B2 (en) | 2017-10-16 | 2017-10-16 | Memory allocation in a data analytics system |
PCT/US2018/055890 WO2019079187A1 (en) | 2017-10-16 | 2018-10-15 | MEMORY ASSIGNMENT IN AN ANALYTICAL DATA SYSTEM |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111226201A CN111226201A (zh) | 2020-06-02 |
CN111226201B true CN111226201B (zh) | 2021-06-08 |
Family
ID=66095732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880067100.2A Active CN111226201B (zh) | 2017-10-16 | 2018-10-15 | 管理计算机中的存储器的方法和计算机系统 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10558364B2 (zh) |
EP (1) | EP3698254B1 (zh) |
JP (1) | JP6768989B1 (zh) |
KR (1) | KR102170624B1 (zh) |
CN (1) | CN111226201B (zh) |
AU (1) | AU2018350897B2 (zh) |
CA (1) | CA3078397C (zh) |
SG (1) | SG11202001675RA (zh) |
WO (1) | WO2019079187A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12045654B2 (en) * | 2021-02-09 | 2024-07-23 | Alteryx, Inc. | Memory management through control of data processing tasks |
US11762874B2 (en) | 2021-07-28 | 2023-09-19 | Alteryx, Inc. | Interactive workflow for data analytics |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875454A (en) * | 1996-07-24 | 1999-02-23 | International Business Machiness Corporation | Compressed data cache storage system |
US6625671B1 (en) * | 1999-05-03 | 2003-09-23 | Computer Network Technology Corporation | Compression of buffered data |
CN103140834A (zh) * | 2010-08-03 | 2013-06-05 | 超威半导体公司 | 用于填充存储器区域的处理器支持 |
CN104516824A (zh) * | 2013-10-01 | 2015-04-15 | 国际商业机器公司 | 数据存储系统中的存储管理方法和系统 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832310A (en) | 1993-12-30 | 1998-11-03 | Unisys Corporation | Serial I/O channel having dependent and synchronous sources of control data and user defined data |
US6606704B1 (en) | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6360300B1 (en) * | 1999-08-31 | 2002-03-19 | International Business Machines Corporation | System and method for storing compressed and uncompressed data on a hard disk drive |
US6564274B1 (en) | 1999-12-17 | 2003-05-13 | Omnicluster Technologies, Inc. | Modular architecture for small computer networks |
JP2001297006A (ja) | 2000-04-17 | 2001-10-26 | Hitachi Ltd | 半導体集積回路装置および情報処理システム |
JP3673274B1 (ja) * | 2002-05-13 | 2005-07-20 | トレック・2000・インターナショナル・リミテッド | ポータブルデータ記憶デバイスに記憶されたデータを圧縮および解凍するためのシステムおよび装置 |
US7181457B2 (en) * | 2003-05-28 | 2007-02-20 | Pervasive Software, Inc. | System and method for utilizing compression in database caches to facilitate access to database information |
US7003597B2 (en) | 2003-07-09 | 2006-02-21 | International Business Machines Corporation | Dynamic reallocation of data stored in buffers based on packet size |
US7188227B2 (en) | 2003-09-30 | 2007-03-06 | International Business Machines Corporation | Adaptive memory compression |
US7711876B2 (en) * | 2005-03-23 | 2010-05-04 | International Business Machines Corporation | Dynamic category compression in a data storage library |
US8438351B2 (en) * | 2007-06-06 | 2013-05-07 | Hewlett-Packard Development Company, L.P. | Binary level update of compressed read-only file systems |
US9331919B2 (en) | 2007-11-30 | 2016-05-03 | Solarwinds Worldwide, Llc | Method for summarizing flow information of network devices |
WO2010033834A1 (en) | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters |
US20100115182A1 (en) | 2008-11-06 | 2010-05-06 | Sony Corporation | Flash memory operation |
US9552299B2 (en) | 2010-06-11 | 2017-01-24 | California Institute Of Technology | Systems and methods for rapid processing and storage of data |
US20120011144A1 (en) | 2010-07-12 | 2012-01-12 | Frederik Transier | Aggregation in parallel computation environments with shared memory |
US9436558B1 (en) | 2010-12-21 | 2016-09-06 | Acronis International Gmbh | System and method for fast backup and restoring using sorted hashes |
JP5712609B2 (ja) * | 2010-12-24 | 2015-05-07 | 富士通株式会社 | データ処理装置及びデータ記録方法 |
US8819361B2 (en) * | 2011-09-12 | 2014-08-26 | Microsoft Corporation | Retaining verifiability of extracted data from signed archives |
US8880481B1 (en) | 2012-03-29 | 2014-11-04 | Pivotal Software, Inc. | Inverse distribution function operations in a parallel relational database |
WO2013179451A1 (ja) | 2012-05-31 | 2013-12-05 | 国立大学法人東京大学 | 並列データ処理システム、計算機および並列データ処理方法 |
US20130339473A1 (en) | 2012-06-15 | 2013-12-19 | Zynga Inc. | Real time analytics via stream processing |
US9183200B1 (en) | 2012-08-02 | 2015-11-10 | Symantec Corporation | Scale up deduplication engine via efficient partitioning |
US10565099B2 (en) * | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
US9141554B1 (en) * | 2013-01-18 | 2015-09-22 | Cisco Technology, Inc. | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques |
EP2973042A4 (en) | 2013-03-15 | 2016-11-09 | Uda Llc | HIERARCHICAL PARALLEL MODELS FOR REAL-TIME EXTRACTION OF HIGHLY DATA STREAM INFORMATION, AND SYSTEM AND METHOD FOR THEIR CREATION |
US10102148B2 (en) * | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
US9176887B2 (en) | 2014-01-05 | 2015-11-03 | Quantum Corporation | Compressed level two block buffer metadata cache |
US20160092361A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Caching technologies employing data compression |
US9817612B2 (en) | 2014-11-20 | 2017-11-14 | International Business Machines Corporation | High-performance hash joins using memory with extensive internal parallelism |
US9652384B2 (en) * | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
US10013443B2 (en) | 2015-06-25 | 2018-07-03 | Bank Of America Corporation | Comparing data stores using hash sums on disparate parallel systems |
US10489350B2 (en) * | 2017-02-24 | 2019-11-26 | Advanced Micro Devices, Inc. | Data compression with inline compression metadata |
-
2017
- 2017-10-16 US US15/785,353 patent/US10558364B2/en active Active
-
2018
- 2018-10-15 EP EP18867619.1A patent/EP3698254B1/en active Active
- 2018-10-15 KR KR1020207012710A patent/KR102170624B1/ko active IP Right Grant
- 2018-10-15 CN CN201880067100.2A patent/CN111226201B/zh active Active
- 2018-10-15 WO PCT/US2018/055890 patent/WO2019079187A1/en unknown
- 2018-10-15 AU AU2018350897A patent/AU2018350897B2/en active Active
- 2018-10-15 JP JP2020520635A patent/JP6768989B1/ja active Active
- 2018-10-15 CA CA3078397A patent/CA3078397C/en active Active
- 2018-10-15 SG SG11202001675RA patent/SG11202001675RA/en unknown
-
2019
- 2019-12-31 US US16/731,049 patent/US10996855B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875454A (en) * | 1996-07-24 | 1999-02-23 | International Business Machiness Corporation | Compressed data cache storage system |
US6625671B1 (en) * | 1999-05-03 | 2003-09-23 | Computer Network Technology Corporation | Compression of buffered data |
CN103140834A (zh) * | 2010-08-03 | 2013-06-05 | 超威半导体公司 | 用于填充存储器区域的处理器支持 |
CN104516824A (zh) * | 2013-10-01 | 2015-04-15 | 国际商业机器公司 | 数据存储系统中的存储管理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
AU2018350897A1 (en) | 2020-03-05 |
EP3698254A1 (en) | 2020-08-26 |
JP2020537260A (ja) | 2020-12-17 |
CA3078397A1 (en) | 2019-04-25 |
US20190114085A1 (en) | 2019-04-18 |
CA3078397C (en) | 2021-02-09 |
EP3698254A4 (en) | 2021-08-04 |
KR20200051835A (ko) | 2020-05-13 |
WO2019079187A1 (en) | 2019-04-25 |
EP3698254B1 (en) | 2023-02-22 |
KR102170624B1 (ko) | 2020-10-27 |
US20200133504A1 (en) | 2020-04-30 |
US10996855B2 (en) | 2021-05-04 |
AU2018350897B2 (en) | 2020-03-26 |
SG11202001675RA (en) | 2020-03-30 |
US10558364B2 (en) | 2020-02-11 |
CN111226201A (zh) | 2020-06-02 |
JP6768989B1 (ja) | 2020-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11100420B2 (en) | Input processing for machine learning | |
US10540606B2 (en) | Consistent filtering of machine learning data | |
US9020991B2 (en) | System and method for analyzing available space in data blocks | |
US9811577B2 (en) | Asynchronous data replication using an external buffer table | |
Lai et al. | Towards a framework for large-scale multimedia data storage and processing on Hadoop platform | |
US10762456B2 (en) | Migration estimation with partial data | |
US9507636B2 (en) | Resource management and allocation using history information stored in application's commit signature log | |
JP2020537261A (ja) | 連続するデータブロックの非同期処理 | |
CN111226201B (zh) | 管理计算机中的存储器的方法和计算机系统 | |
CN111221698A (zh) | 任务数据采集方法与装置 | |
CN111880964B (zh) | 用于基于出处的数据备份的方法和系统 | |
US10133997B2 (en) | Object lifecycle analysis tool | |
US12045654B2 (en) | Memory management through control of data processing tasks | |
AU2022218687A9 (en) | Memory management through control of data processing tasks |
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 | ||
GR01 | Patent grant |