1.本发明涉及操作系统领域,特别涉及一种文件加载方法、计算设备及存储 介质。
背景技术:2.随着计算机技术的发展,计算机中各种存储设备的读写速度也越来越快。 但由于内部存储器的读写速度依然比外部存储器的读写速度快的多,因此当计 算机中对文件进行处理时,还是要将文件从外部存储器中取出,加载到对应的 内部存储器中的文件缓存页。为了提高计算机的性能,计算机也由单个处理器 向多个处理器发展。
3.现有技术中,计算设备中的多个处理器会以numa架构进行部署。numa 全称non-uniform memory access,译为“非一致性内存访问”。这种构架下, cpu厂商把内存控制器集成到cpu内部,一般一个cpu socket会有一个独立 的内存控制器。每个cpu scoket独立连接到一部分内存,这部分cpu直连的 内存称为“本地内存”。cpu之间通过qpi(quick path interconnect)总线进行 连接。cpu可以通过qpi总线访问不和自己直连的“远程内存”。在numa架 构下,内存的访问出现了本地和远程的区别:访问远程内存的延时会明显高于 访问本地内存。
4.当包括多处理器的计算机中,有处理器将文件存储到离自己较近的内存时, 其他处理器再次访问文件时访问耗时就比较长,读写速度就相对较低。
5.为此,需要一种新的文件加载方法。
技术实现要素:6.为此,本发明提供一种文件加载方法,以力图解决或者至少缓解上面存在 的问题。
7.根据本发明的第一方面,提供一种文件加载方法,适于在计算设备中执行, 并设置有多个节点,每个节点中包括一个或多个处理器,方法包括步骤:当进 程向内部存储器中加载文件时,判断进程所在第一节点对应的第一内存模块是 否分配有文件缓存页;若未分配有文件缓存页,则根据文件的文件信息确定所 述文件的缓存页信息,缓存页信息包括所述文件的历史文件缓存页所在第二内 存模块对应的第二节点;判断第二节点与第一节点是否相同;若不同,则将进 程迁移到第二节点;在第二内存模块中分配文件缓存页;进程根据第二内存模 块中分配的文件缓存页,将文件加载到内部存储器中。
8.可选地,在根据本发明的方法中,还包括步骤:若第一内存模块中分配有 文件缓存页,则进程根据第一内存模块中分配的文件缓存页,将文件加载到内 部存储器中。
9.可选地,在根据本发明的方法中,还包括步骤:若文件的文件信息中不包 括文件的缓存页信息,则在第一内部模块中分配文件缓存页;进程根据第一内 存模块中分配的文件缓存页,将文件加载到内部存储器中。
10.可选地,在根据本发明的方法中,还包括步骤:根据第一内存模块对应的 第一节点生成缓存页信息;将缓存页信息存储到文件的文件信息中。
11.可选地,在根据本发明的方法中,还包括步骤:若第二节点与第一节点相 同,则在第一内存模块中分配文件缓存页;进程根据第一内存模块中分配的文 件缓存页,将文件加载到内部存储器中。
12.可选地,在根据本发明的方法中,节点的生成包括步骤:将计算设备中的 处理器以非统一内存访问架构进行构建,得到多个节点,节点为numa节点。
13.可选地,在根据本发明的方法中,计算设备中预先将内部存储器的存储资 源和内部存储器与处理器之间的通信资源进行拆分到各节点中,在每个节点中 建立有内存模块,第一内存模块为第一节点中处理器的本地内存,第二内存模 块为第二节点中处理器的本地内存。
14.根据本发明的第二方面,提供了一种计算设备,包括:一个或多个处理器; 存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置 为由一个或多个处理器执行,一个或多个程序包括用于执行根据本发明的文件 加载方法。
15.根据本发明的第三方面,提供了一种存储一个或多个程序的计算机可读存 储介质,一个或多个程序包括指令,该指令当由计算设备执行时,使得计算设 备执行根据本发明的文件加载方法。
16.根据本发明的第四方面,提供一种文件加载方法,适于在服务器系统中执 行,系统包括内部存储器,并设置有多个节点,每个节点中包括一个或多个处 理器,方法包括步骤:当进程向内部存储器中加载文件时,判断进程所在第一 节点对应的第一内存模块是否分配有文件缓存页;若未分配有文件缓存页,则 根据文件的文件信息确定文件的缓存页信息,缓存页信息包括文件的历史文件 缓存页所在第二内存模块对应的第二节点;判断第二节点与第一节点是否相同; 若不同,则将进程迁移到第二节点;在第二内存模块中分配文件缓存页;进程 根据第二内存模块中分配的文件缓存页,将文件加载到内部存储器中。
17.本发明公开了一种文件加载方法,适于在计算设备中执行。计算设备中包 括内部存储器,并设置有多个节点,每个节点中包括一个或多个处理器,方法 包括步骤:当进程向内部存储器中加载文件时,判断进程所在第一节点对应的 第一内存模块是否构建有文件缓存页;若未构建有文件缓存页,则根据文件的 文件信息确定文件的缓存页信息,缓存页信息包括文件的文件缓存页所在第二 内存模块对应的第二节点;判断第二节点与第一节点是否相同;若不同,则将 进程迁移到第二节点;在第二内存模块中分配文件缓存页;进程根据第二内存 模块中分配的文件缓存页,将文件加载到内部存储器中。本发明当进程需要加 载文件并且没有申请文件缓存页时,根据文件的缓存页信息进行判断,判断文 件的历史文件缓存页所在节点是否与进程所在节点一致;若不一致,则在历史 文件缓存页所在节点构建文件缓存页,以便在同一节点对应的内存模块中存储 文件的所有信息,保证文件在内部模块中的完整性。并且将进程迁移到历史文 件缓存页所在节点,以便在同一节点下根据该节点的本地内存对文件进行读写, 提高多进程对文件的读写效率。
附图说明
18.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明 性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方 面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面 的详细描述,本发明公开的
上述以及其它目的、特征和优势将变得更加明显。 遍及本公开,相同的附图标记通常指代相同的部件或元素。
19.图1示出了根据本发明一个示范性实施例的计算设备中设置有节点的示意 图;
20.图2示出了根据本发明一个示范性实施例的计算设备200的结构框图;
21.图3示出了根据本发明一个示范性实施例的文件加载方法300的流程示意 图;
22.图4示出了现有技术中分配文件缓存页的示意图;
23.图5示出了根据本发明一个示范性实施例的分配文件缓存页的示意图。
具体实施方式
24.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了 本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被 这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本 公开,并且能够将本公开的范围完整的传达给本领域的技术人员。相同的附图 标记通常指代相同的部件或元素。
25.图1示出了根据本发明一个示范性实施例的计算设备中设置有节点的示意 图。如图1所示,计算设备200中包括多个处理器:第一处理器111、第二处理 器121、第三处理器122、第四处理器131、第五处理器132和第六处理器141。 图1中所示的计算设备中所包括的处理器的数量仅为示例性的,本发明对计算 设备中包括的处理器数量和各处理器具体类型不做限制。计算设备中还包括内 部存储器(图中未示出)。
26.为了对计算机中的计算和存储资源更好的管理,提高计算机的运行效果, 将计算设备中包括的处理器以非统一内存访问架构(numa)进行构建。如图 1所示,计算设备200中构建有第一节点110~第四节点140,每个节点(node) 中包括一个或多个处理器。非统一内存访问架构(numa)是一种用于多处理 器的电脑内存体设计,内存访问时间取决于处理器的内存位置。在numa下, 处理器访问它自己的本地存储器的速度比非本地存储器快一些。图1中对处理 器的构建方法仅为示例性的,本发明对在计算设备200中构建非统一内存访问 架构的具体方式不做限制。
27.进一步的,将内部存储器的存储资源和内部存储器与处理器之间的通信资 源进行拆分到各节点中,在每个节点中建立有内存模块。如图1所示:第一节 点110中包括第一处理器111、第一内存模块112和第一处理器111与第一内存 模块112通信资源。第二节点120中包括第二处理器121、第三处理器122、第 二内存模块123与处理器(121~122)与第二内存模块123的通信资源。第三节 点130中包括第四处理器131、第五处理器132、第三内存模块133和第三内存 模块133与处理器(131~132)的通信资源。第四节点140中包括第六处理器 141、第四内存模块142与第四内存模块142与第六处理器141的通信资源。
28.根据本发明的一个实施例,由于内部存储器的存储资源和通信资源被拆分 到各个节点之中,因此虽然处理器仍然可以访问各个内存模块,但访问各内存 模块的速度不同。处理器访问本节点中的内存模块的速度较快,响应时间较短, 而访问其他节点中的内存模块时,就需要与其他处理器的内部连接通道(inter
‑ꢀ
connect)访问,这种方式访问的速度较慢,响应时间较长。对于节点中的处理 器,本节点中的内存模块为该处理器的本地内存,其他节点中的内存模块为该 处理器的远程内存(或非本地内存)。
29.以图1为例,第一节点中,第一处理器111访问第一内存模块112的速度 较快,访问
第二节点120中第二内存模块123的速度较慢。第一内存模块112 为第一处理器111的本地内存。第二内存模块123为第一处理器111的远程内 存。第二节点中,第二内存模块123为第二处理器121和第三处理器122的本 地内存。
30.计算设备200中第一节点110~第四节点140为硬件层的组成部分。计算设 备的硬件层200中还包括外部存储器(图中未示出)。如图1所示,计算设备 200中还运行有操作系统160,作为计算设备200的系统层,为计算设备中运行 的应用提供软件运行环境。本发明对操作系统160的具体种类不做限制。根据 本发明的一个实施例,计算设备200中还可包括一个或多个应用,本发明对计 算设备200中运行的应用类型和数量不作限制。
31.图2示出了根据本发明一个示范性实施例的计算设备200的结构框图。如 图2所示,在基本配置202中,计算设备200典型地包括系统存储器206和一 个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器 206之间的通信。
32.取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于: 微处理器(μp)、微控制器(μc)、数字信息处理器(dsp)或者它们的任何 组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的 一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器 核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处 理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处 理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204 的一个内部部分。
33.取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不 限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等) 或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个 程序222以及程序数据228。在一些实施方式中,程序222可以布置为在操作系 统上由一个或者多个处理器204利用程序数据228执行根据本发明的方法300 的指令223。
34.计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储 存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口 控制器230到基本配置202的通信。操作系统220、程序222以及数据224的至 少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计 算设备200上电或者要执行程序222时,经由储存接口总线234而加载到系统 存储器206中,并由一个或者多个处理器204来执行。
35.计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、 外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通 信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元 250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或 者扬声器之类的各种外部设备进行通信。示例外围接口244可以包括串行接口 控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多 个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触 摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通 信。示例的通信设备246可以包括网络控制器260,其可以被布置为以便经由 一个或者多个通信端口264与一个或者多个其他计算设备200通过网络通信链 路的通信。
36.网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸 如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、 程序模块,并
且可以包括任何信息递送介质。“调制数据信号”可以这样的信 号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式 进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之 类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线 介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质 和通信介质二者。
37.在根据本发明的设备200中,程序222包括文件加载方法300的多条程序 指令,这些程序指令可以指示处理器204执行本发明的计算设备200中运行的 文件加载方法300中的部分步骤,以便计算设备200中的各部分通过执行本发 明的文件加载方法300来将文件加载到内部存储器中。
38.计算设备200可以实现为服务器,例如文件服务器、数据库、服务器、应 用程序服务器等,这些电子设备可以是诸如个人数字助理(pda)、无线网络 浏览设备、应用专用设备、或者可以包括上面任何功能的混合设备。可以实现 为包括桌面计算机和笔记本计算机配置的个人计算机,也在一些实施例中,计 算设备200被配置为文件加载方法300。
39.图3示出了根据本发明一个示范性实施例的文件加载方法300的流程示意 图。如图3所示,首先执行步骤s310,当进程向内部存储器中加载文件时,判 断所在第一节点对应的第一内存模块是否分配有文件缓存页。
40.进程为计算设备中运行应用所创建的用户进程,包括系统应用和用户安装 的应用等,进程还可以实现为计算设备中运行的操作系统160所创建的系统进 程,本发明对进程的种类和进程所创建的方式不做限制。文件为在外部存储器 中所存储的文件,本发明对文件的文件类型不做限制。文件缓存页为外部存储 器中分配的用于存储文件的页结构。
41.当需要对文件进行读、写或执行等操作时,需要由进程将文件从外部存储 器加载到内部存储器中。由于处理器访问内部存储器的速度与比外部存储器的 速度快的多,因此在第一次读写文件时将要操作的文件先加载到内部存储器的 文件缓存页。这样下次读写文件时就优先从内部存储器中获取文件,执行相应 的处理操作,不需要再次从外部存储器中读取文件,以达到较快的读写速度。
42.进程运行所基于的处理器所属的节点为该进程所在的第一节点。第一节点 中包括第一内存模块。根据本发明的一个实施例,计算设备中设置有多个节点, 每个节点包括一个或多个处理器。生成节点时,将计算设备中的处理器以非统 一内存访问架构进行构建,得到多个节点。根据本发明的一个实施例,节点 (node)为numa节点(numa node)。第一内存模块为第一节点中处理器 的本地内存。本发明对第一节点中所包括处理器的数量不做限制。
43.在给进程分配文件缓存页时,优先将进程所在节点最近的内存资源作为文 件缓存页。因此在第一内存模块中查找是否已经给进程分配了文件缓存页。进 程可能会在进程生命周期周期中多次加载文件,因此可能之前已经在第一内存 模块中分配了文件缓存页,本次还可以继续使用。若第一内存模块中分配有文 件缓存页,则进程根据第一内存模块中分配的文件缓存页,将文件加载到内部 存储器中。
44.图4示出了现有技术中分配文件缓存页的示意图。如图4所示:现有技术 中当开始读写文件时,判断该缓存页是否存在,若该缓存页不存在,则分配距 离当前进程所在节点最近的文件缓存页,将文件存储到离该进程所在处理器最 近的存储模块中。随后向进程返
回所建立的文件缓存页,以便进程将文件存储 到该文件缓存页中。
45.现有技术中存在这样的问题,若有多个进程读写文件,每个进程运行在不 同的处理器中,并且不同进程获取文件的不同部分。例如:第一节点中包括进 程1,第二节点中包括进程2,第三节点中包括进程3,第四节点中包括进程4。 进程1~进程4同时读取文件,并且在各自所在节点的本地内存中申请了文件缓 存页,进程1读取文件的前20%,进程2读取文件的20%~50%的部分,进程3 读取文件的50%~75%,进程4读取文件的75%~100%。这样文件就会在第一节 点~第四节点中的存储模块中分散存储。后续任意节点中的进程需要从内部存 储器中获取该文件时,就需要从各个内存模块中分别获取文件的不同部分,读 取效率差,响应时间长,影响计算机运行效率。
46.而本发明中通过文件的文件信息,对是否在进程所在处理器的本地内存中 分配文件缓存页,以及是否对进程进行迁移进行判断,从而解决了上述技术问 题。
47.随后,执行步骤s320,若未分配有文件缓存页,则根据文件的文件信息确 定文件的缓存页信息,缓存页信息包括文件的历史文件缓存页所在第二内存模 块对应的第二节点。文件的文件信息记载了文件的基本信息,其中包括缓存页 信息。缓存页信息记载了文件在历史被加载到内部存储器时所存储的位置,及 历史分配的文件缓存页所在第二内存模块对应的第二节点。历史文件缓存页即 为之前为文件在内部存储器中存储所分配的文件缓存页。根据本发明的一个实 施例,第二内存模块为第二节点中处理器的本地内存。
48.根据本发明的一个实施例,若文件之前被分配了第三内存模块中的文件缓 存页,并加载到第三节点的第三内存模块中,则文件的缓存页信息为第三节点。 根据该缓存页信息即可确定该文件之前被加载到第三节点的第三内存模块。该 文件上一次被加载到第三节点的第三内存模块时,有可能是文件全部被加载到 第三模块,此时需要读取或重写,或者是加载了一部分,此时由另一进程加载 另一部分。
49.根据本发明的一个实施例,若文件的文件信息中不包括文件的缓存页信息, 则在第一内部模块中分配文件缓存页;进程根据第一内存模块中分配的文件缓 存页,将文件加载到内部存储器中。若文件的文件信息中不包括文件的缓存页 信息,则该文件为首次从外部存储器加载到内部存储器中,此时直接从进程所 在处理器最近的第一内存模块分配文件缓存页,以便加载文件,提高文件读写 效率。
50.进一步的,将文件加载到文件缓存页后,根据第一内存模块对应的第一节 点生成缓存页信息,再将缓存页信息存储到文件的文件信息中。生成缓存页信 息时,将第一节点作为缓存页信息,第一节点即为下一次分配文件缓存页时的 缓存页信息;第一内存模块中分配的文件缓存页即为下一次分配文件缓存页时 的历史文件缓存页。将缓存页信息存储到文件的文件信息中,以便后续进程从 内部存储器中读取或重写文件,还可以继续从第一内存模块中分配文件缓存页, 记载文件的其他部分。
51.若文件信息中包括文件的缓存页信息,则执行步骤s330,判断第二节点与 第一节点是否相同。即历史文件缓存页所在的节点与当前进程所在的节点是否 相同。
52.根据本发明的一个实施例,若第二节点与第一节点相同,则在第一内存模 块中分配文件缓存页,接着进程根据第一内存模块中分配的文件缓存页,将文 件加载到内部存储器中。由于文件或文件的一部分之前就存储在该进程所在节 点中,因此不需要迁移进程,直接在进程所在节点的内部存储器中分配文件缓 存页,存储文件。
53.随后,执行步骤s340,若不同,则将进程迁移到第二节点。若文件的历史 文件缓存页在第二存储模块,之前由第二节点中处理器的进程将文件进行存储 到本地内存,则为了保证文件时钟在一个存储模块中进行读写,需要将进程迁 移到第二节点。进一步的,第二内存模块为所述第一节点中处理器的远程内存, 将进程迁移到第二节点,后续在第二存储模块中分配文件缓存页后,进程在第 二节点的处理器中从第二存储模块中读写文件,也能获取较高的读写速度,提 高文件访存效率。
54.随后,执行步骤s350,在第二内存模块中分配文件缓存页。始终在第二内 存模块中读写文件,能够保证文件的全部都存储在第二内存模块中。
55.最后,执行步骤s360,进程根据第二内存模块中分配的文件缓存页,将文 件加载到内部存储器中。由于进程已经被迁移到了第二节点中的处理器,所以 从第二内存模块中读写文件,能够有较高的读写速度和较低的访问延迟。
56.图5示出了根据本发明一个示范性实施例的分配文件缓存页的示意图。如 图5所示,当进程开始读写文件时,获取文件对应的文件缓存页。若进程所在 节点中已经分配了文件缓存页,则将该文件缓存页返回给进程,供进程读写文 件。
57.若进程所在节点未分配文件缓存页,则获取文件信息,并判断文件信息中 是否有缓存页信息。若文件信息中没有缓存页信息,则此次为首次向内部存储 器中加载文件,直接在进程所在节点中分配文件缓存页,并生成缓存页信息以 便后续进程读写文件。随后将分配的文件缓存页返回给进程,供进程读写文件。
58.若文件信息中有缓存页信息,且缓存页信息为第一节点,且当前进程所在 节点为第一节点,则之前文件就被加载到第一存储模块,这次也在第一节点的 第一存储模块中分配文件缓存页,将分配的文件缓存页返回给进程,供进程读 写文件。
59.若缓存页信息为第二节点,且当前进程所在节点为第一节点。之前在第二 节点的第二存储模块中分配了历史文件缓存页,加载了部分文件,则此时为了 保证第二存储模块中文件的完整性,便于后续进程从第二存储模块中读写文件, 此次进程读写文件也需要在第二存储模块中读写文件。且为了保证进程从第二 存储模块中读写文件的速度,需要将进程迁移到第二节点,并且在第二存储模 块中分配文件缓存页,将分配的文件缓存页返回给进程,供进程读写文件。这 样整个文件就都被存储到第二存储模块中,其他进程读写文件时,后续进程可 迁移到第二节点的处理器中,从第二存储模块中读写文件,这样获取文件的距 离租金,读写性能可达到最优。
60.根据本发明的一个实施例,本发明对现有技术中文件分布在多个节点的情 况进行测试,作为对比测试;以及对本发明方案文件全部分布在同一节点下, 需要迁移进程时对进程进行迁移进行测试。
61.具体的:对比测试和本发明中,使用128个进程读文件,文件大小为8m, 然后将文件内存写入到另一个文件b。统计两种方案下30内完成读写的次数。
62.对比测试中,文件分布存储在多个节点,进程也随机分布在多个几点,测 试结果为35370次。
63.测试本发明时,文件存储在一个节点,测试的进程需要迁移时迁移到文件 存储的节点中的处理器上,得到测试结果为98130次。
64.经过测试,可以验证得到本发明方案能够提高文件读写速度以及文件加载 效率,
大幅优化计算机读写文件过程。
65.根据本发明的一个实施例,本发明中的一种文件加载方法还适于在服务器 系统中执行。服务器系统中包括一个或多个计算设备。每个计算设备中包括内 部存储器及一个或多个处理器。服务器系统中每个计算设备将本机的内部存储 器和处理器作为共同提供服务的硬件资源提供给服务器系统,成为服务器系统 所包括的内部存储器和处理器。
66.服务器系统设置多个节点,每个节点包括一个或多个处理器。每个节点包 括多个处理器时,这些处理器可分布在系统中不同的计算设备中。不同计算设 备中的处理器可根据需求自由组合成为服务器系统的节点。
67.当在服务器系统中执行一种文件加载方法时,可通过执行前述的步骤 s310~s360,实现在内部存储器中加载文件。在服务器系统中执行文件加载方 法,能够提高在文件系统中的多进程对文件的读写效率,提高服务器系统的服 务效率。
68.本发明公开了一种文件加载方法,适于在计算设备中执行。计算设备中包 括内部存储器,并设置有多个节点,每个节点中包括一个或多个处理器,方法 包括步骤:当进程向内部存储器中加载文件时,判断进程所在第一节点对应的 第一内存模块是否构建有文件缓存页;若未构建有文件缓存页,则根据文件的 文件信息确定文件的缓存页信息,缓存页信息包括文件的文件缓存页所在第二 内存模块对应的第二节点;判断第二节点与第一节点是否相同;若不同,则将 进程迁移到第二节点;在第二内存模块中分配文件缓存页;进程根据第二内存 模块中分配的文件缓存页,将文件加载到内部存储器中。本发明当进程需要加 载文件并且没有申请文件缓存页时,根据文件的缓存页信息进行判断,判断文 件的历史文件缓存页所在节点是否与进程所在节点一致;若不一致,则在历史 文件缓存页所在节点构建文件缓存页,以便在同一节点对应的内存模块中存储 文件的所有信息,保证文件在内部模块中的完整性。并且将进程迁移到历史文 件缓存页所在节点,以便在同一节点下根据该节点的本地内存对文件进行读写, 提高多进程对文件的读写效率。
69.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发 明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详 细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
70.类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或 多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一 起分组到单个实施例、图、或者对其的描述中。
71.本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元 或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与 该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个 模块或者此外可以分成多个子模块。
72.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适 应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实 施例中的模块或单元或组间组合成一个模块或单元或组间,以及此外可以把它 们分成多个子模块或子单元或子组间。除了这样的特征和/或过程或者单元中的 至少一些是相互排斥之外,可以采用任何组合对本说明书中公开的所有特征以 及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈 述,本说明书中公开的每个特征可以由提供相同、等
同或相似目的的替代特征 来代替。
73.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它 实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意 味着处于本发明的范围之内并且形成不同的实施例。
74.此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者 由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实 施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的 装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实 施由为了实施该发明的目的的元素所执行的功能。
75.这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而, 本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入 有形媒介,例如软盘、cd-rom、硬盘驱动器或者其它任意机器可读的存储介 质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器, 并被所述机器执行时,所述机器变成实践本发明的设备。
76.在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、 处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一 个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码; 处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明 的文件加载方法。
77.以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。 计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计 算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如 载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程 序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括 在计算机可读介质的范围之内。
78.如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、
ꢀ“
第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意 图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它 方式的给定顺序。
79.尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技 术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施 例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的 而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,对于本技 术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范 围,对本发明所做的公开是说明性的,而非限制性的。
技术特征:1.一种文件加载方法,适于在计算设备中执行,所述计算设备中包括内部存储器,并设置有多个节点,每个节点中包括一个或多个处理器,所述方法包括步骤:当进程向所述内部存储器中加载文件时,判断所述进程所在第一节点对应的第一内存模块是否分配有文件缓存页;若未分配有文件缓存页,则根据所述文件的文件信息确定所述文件的缓存页信息,所述缓存页信息包括所述文件的历史文件缓存页所在第二内存模块对应的第二节点;判断所述第二节点与所述第一节点是否相同;若不同,则将所述进程迁移到所述第二节点;在所述第二内存模块中分配文件缓存页;所述进程根据所述第二内存模块中分配的文件缓存页,将文件加载到所述内部存储器中。2.如权利要求1所述的方法,其中,所述方法还包括步骤:若所述第一内存模块中分配有文件缓存页,则所述进程根据所述第一内存模块中分配的文件缓存页,将文件加载到所述内部存储器中。3.如权利要求1所述的方法,其中,所述方法还包括步骤:若所述文件的文件信息中不包括所述文件的缓存页信息,则在所述第一内部模块中分配文件缓存页;所述进程根据所述第一内存模块中分配的文件缓存页,将文件加载到所述内部存储器中。4.如权利要求3所述的方法,其中,所述方法还包括步骤:根据所述第一内存模块对应的第一节点生成缓存页信息;将所述缓存页信息存储到所述文件的文件信息中。5.如权利要求1所述的方法,其中,所述方法还包括步骤:若所述第二节点与所述第一节点相同,则在所述第一内存模块中分配文件缓存页;所述进程根据所述第一内存模块中分配的文件缓存页,将文件加载到所述内部存储器中。6.如权利要求1-5中任一项所述的方法,其中,所述节点的生成包括步骤:将计算设备中的处理器以非统一内存访问架构进行构建,得到多个节点,所述节点为numa节点。7.如权利要求6所述的方法,其中,所述计算设备中预先将内部存储器的存储资源和内部存储器与处理器之间的通信资源进行拆分到各节点中,在每个节点中建立有内存模块,所述第一内存模块为所述第一节点中处理器的本地内存,所述第二内存模块为所述第二节点中处理器的本地内存。8.一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个装置,所述一个或多个装置包括用于执行根据权利要求1-7中任一项所述的方法的指令。9.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,
所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1-7中任一项所述的方法。10.一种文件加载方法,适于在服务器系统中执行,所述系统包括内部存储器,并设置有多个节点,每个节点中包括一个或多个处理器,所述方法包括步骤:当进程向所述内部存储器中加载文件时,判断所述进程所在第一节点对应的第一内存模块是否分配有文件缓存页;若未分配有文件缓存页,则根据所述文件的文件信息确定所述文件的缓存页信息,所述缓存页信息包括所述文件的历史文件缓存页所在第二内存模块对应的第二节点;判断所述第二节点与所述第一节点是否相同;若不同,则将所述进程迁移到所述第二节点;在所述第二内存模块中分配文件缓存页;所述进程根据所述第二内存模块中分配的文件缓存页,将文件加载到所述内部存储器中。
技术总结本发明公开了一种文件加载方法、计算设备及存储介质,并包括步骤:判断进程所在第一节点对应的第一内存模块是否构建有文件缓存页;若未构建有文件缓存页,则根据文件的文件信息确定文件的缓存页信息;判断第二节点与第一节点是否相同;若不同,则将进程迁移到第二节点;在第二内存模块中分配文件缓存页;进程根据第二内存模块中分配的文件缓存页,将文件加载到内部存储器中。本发明当进程需要加载文件并且没有申请文件缓存页时,判断文件的历史文件缓存页所在节点是否与进程所在节点一致;保证文件在内部模块中的完整性。并且将进程迁移到历史文件缓存页所在节点,以便根据该节点的本地内存对文件进行读写,提高多进程对文件的读写效率。效率。效率。
技术研发人员:周鹏 胡翔 陈毅翀 叶中玉 黄江慧
受保护的技术使用者:统信软件技术有限公司
技术研发日:2022.04.11
技术公布日:2022/7/5