CN110442380B - 一种数据预热方法及计算设备 - Google Patents
一种数据预热方法及计算设备 Download PDFInfo
- Publication number
- CN110442380B CN110442380B CN201910595150.4A CN201910595150A CN110442380B CN 110442380 B CN110442380 B CN 110442380B CN 201910595150 A CN201910595150 A CN 201910595150A CN 110442380 B CN110442380 B CN 110442380B
- Authority
- CN
- China
- Prior art keywords
- list
- application program
- file
- file list
- physical memory
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据预热方法,在计算设备中执行,包括步骤:获取应用程序所对应的预热触发事件列表和快照触发事件列表;当发生预热触发事件时,获取应用程序的关联文件列表,将各关联文件加载至物理内存中;当发生快照触发事件时,获取当前加载于物理内存中的磁盘文件列表,根据磁盘文件列表来更新应用程序的关联文件列表。本发明一并公开了相应的计算设备。
Description
技术领域
本发明涉及缓存数据预热技术领域,尤其涉及一种用于加速操作系统启动的内核缓存数据预热方法及计算设备。
背景技术
计算机在运行应用程序时,需要将磁盘中的数据加载至物理内存中,然后CPU再从物理内存中读取数据,磁盘与物理内存的数据访问速度存在多个数量级的差距。针对该问题,现代操作系统中引入了缓存机制(cache机制),以实现数据的快速访问。在缓存机制中,若磁盘中的某些数据已经被加载至物理内存中,那么下次需要读取该数据时,如果对应的磁盘数据未经修改,操作系统将直接读取物理内存中所缓存的数据,而不是重新读取磁盘。
目前,操作系统中的缓存机制均为被动型缓存机制,只有当磁盘文件第一次被访问后,再次被访问时,才可能有加速效果。对于尚未被访问过的磁盘文件,无法主动、提前地将其缓存至物理内存中,无法实现加速效果。
发明内容
为此,本发明提供一种数据预热方法及计算设备,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种数据预热方法,在计算设备中执行,包括步骤:获取应用程序所对应的预热触发事件列表和快照触发事件列表;当发生预热触发事件时,获取所述应用程序的关联文件列表,将所述关联文件加载至物理内存中;当发生快照触发事件时,获取当前加载于物理内存中的磁盘文件列表,根据所述磁盘文件列表来更新所述应用程序的关联文件列表。
可选地,在根据本发明的数据预热方法中,还包括步骤:获取所述应用程序的关联文件列表的使用次数;根据所述使用次数来确定在并行加载情况下,将所述关联文件加载至物理内存中的加载权重。
可选地,在根据本发明的数据预热方法中,还包括步骤:设置所述关联文件列表的生命周期;在所述生命周期内,不更新所述关联文件列表。
可选地,在根据本发明的数据预热方法中,还包括步骤:设置延迟时间;当发生快照触发事件后,经过所述延迟时间,获取当前加载于物理内存中的磁盘文件列表,根据所述磁盘文件列表来更新所述应用程序的关联文件列表。
可选地,在根据本发明的数据预热方法中,通过读取/proc文件系统中的目标文件来获取当前加载于物理内存中的磁盘文件列表。
可选地,在根据本发明的数据预热方法中,目标文件的内容包括:当前加载于物理内存中的磁盘文件的大小、位于物理内存中的文件部分占实际磁盘文件大小的比例和文件路径。
可选地,在根据本发明的数据预热方法中,所述根据所述磁盘文件列表来更新所述应用程序的关联文件列表的步骤,包括:将所述磁盘文件列表作为所述应用程序的关联文件列表;或者将所述磁盘文件列表中,位于白名单且不位于黑名单中的磁盘文件作为所述应用程序的关联文件。
可选地,在根据本发明的数据预热方法中,还包括步骤:设置所述应用程序的配置文件,所述配置文件中定义有所述应用程序的预热触发事件列表和快照触发事件列表。
可选地,在根据本发明的数据预热方法中,所述配置文件还包括关联文件列表的使用次数、关联文件列表的生命周期、发生快照触发事件到更新关联文件列表的延迟时间、磁盘文件的白名单和黑名单。
可选地,在根据本发明的数据预热方法中,在物理磁盘挂载后、图形界面启动之前开始执行。
可选地,在根据本发明的数据预热方法中,在满足任一终止条件时终止执行,所述终止条件包括:执行时间达到预设时长;所述计算设备的可用物理内存小于预设阈值;所有应用程序的配置文件均已执行完毕。
根据本发明的第二个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如上所述的数据预热方法。
根据本发明的第三个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的数据预热方法。
根据本发明的数据预热方法,预先设置应用程序所对应的预热触发事件列表和快照触发事件列表,通过预热触发事件和快照触发事件来预测用户行为。当发生预热触发事件时,认为用户将要启动应用程序,获取应用程序的关联文件列表,将关联文件加载至物理内存中,实现关联文件的主动、提前缓存,从而加快应用程序的响应速度。当发生快照触发事件时,通常用户已启动应用程序,这时,获取当前加载于物理内存中的磁盘文件列表,根据磁盘文件列表来更新该应用程序的关联文件列表,更新后的关联文件列表可用于用户下次登录操作系统后的应用程序数据预热过程。
本发明的数据预热方法能够实现应用程序的相关数据(即关联文件)的主动、提前缓存,大大提高了用户登录操作系统后的应用程序的响应速度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的数据预热方法200的流程图;
图3示出了根据本发明一个实施例的操作系统登录界面300的示意图;
图4示出了根据本发明一个实施例的目标文件的格式的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中的问题,本发明提供一种数据预热方法,该方法能够实现应用程序数据(即应用程序的关联文件)的主动、提前缓存,大大提高了用户登录操作系统后的应用程序的响应速度。
本发明的数据预热方法在计算设备中执行。计算设备例如可以是桌面电脑、笔记本电脑等个人配置的计算机,或手机、平板电脑、多媒体播放器、智能可穿戴设备等移动终端,但不限于此。
图1示出了根据本发明一个实施例的计算设备100的示意图。需要说明的是,图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的数据预热方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的数据预热方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。操作系统120例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作系统120添加驱动模块。
在计算设备100启动运行时,处理器104会从存储器106中读取操作系统120的程序指令并执行。应用122运行在操作系统120之上,利用操作系统120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至存储器106中,处理器104从存储器106中读取并执行应用122的程序指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备100中,应用122包括数据预热程序128,数据预热程序128通常实现为Daemon程序,又称为守护进程。数据预热程序128通常作为系统服务使用,在系统后台运行,不与前台的用户进行交互。数据预热程序128中包括用于执行本发明的数据预热方法200的指令,该指令可以指示处理器104执行本发明的数据预热方法200,实现应用程序数据的主动、提前缓存,大大提高了用户登录操作系统后初次打开应用程序的响应速度。
图2示出了根据本发明一个实施例的数据预热方法200的流程图。方法200在计算设备(例如前述计算设备100)中执行,具体地,方法200由计算设备中的数据预热程序执行。
考虑到方法200需要以磁盘挂载为运行条件,且在图形界面启动之后,很多应用程序可能已经开始运行,应用程序的数据已经存在于内存中,这时便没有对应用程序进行数据预热的必要了。因此,根据一种实施例,方法200在物理磁盘挂载后、图形界面启动之前开始执行。
具体地,systemd(即system daemon,是Linux下的一种init软件)在local-fs.target出现后(即物理磁盘可以挂载后)、display-manager.service出现之前(即图形界面开始启动之前),通过warm-sched.service服务启动warm-daemon,warm-daemon即为本发明的数据预热程序。warm-daemon执行本发明的数据预热方法200,用于实现应用程序相关数据的主动、提前预热,从而加快应用程序的响应速度。
例如,当按下计算设备上的开机键(电源键)后,计算设备中的各个硬件被供电并进行上电自检,检测核心硬件是否可以正常工作。当确认各硬件自检正常后,挂载物理磁盘,根据磁盘的主引导记录(MBR)找到操作系统的存储位置,将操作系统加载到内存中,执行操作系统的代码,启动图形界面,在计算设备的屏幕上显示操作系统的登录界面,如图3所示。
本发明的数据预热方法200在物理磁盘挂载后、图形界面启动前开始执行。即,在计算设备显示如图3所示的操作系统登录界面300时,数据预热方法200已经开始执行。当用户在输入框310中输入密码时(用户输入密码的时长通常为几秒,甚至更长时间),数据预热方法200在后台执行,可以在用户实际启动应用程序之前将应用程序的相关数据主动缓存至内存中,从而在后续用户实际启动应用程序时,大大提高应用程序的响应速度,减少用户在使用应用程序时的等待时间,提高用户体验。
如图2所示,方法200始于步骤S210。
在步骤S210中,获取应用程序所对应的预热触发事件列表和快照触发事件列表。
根据一种实施例,可以预先设置应用程序的配置文件,配置文件中定义有一些配置项。配置文件例如可以是JSON格式,但不限于此。编写完配置文件后,将配置文件安装至指定目录,例如,安装至/var/lib/warm-sched/etc/目录。随后,数据预热程序warm-daemon将从该指定目录获取配置文件,并根据配置文件中定义的配置项来对应用程序进行数据预热。
配置文件中的配置项包括应用程序所对应的预热触发事件列表和快照触发事件列表。预热触发事件列表包括至少一个预热触发事件,快照触发事件列表包括至少一个快照触发事件。
预热触发事件列表用于定义进行数据预热的时机。当预热触发事件发生时(若预热触发事件列表包括多个预热触发事件,则当列表中的所有预热触发事件均发生后),进行数据预热,将应用程序的关联文件加载至物理内存中。应用程序的关联文件即为与应用程序相关的、在应用程序运行时通常需要加载至物理内存中的文件。
实践中,用户经常使用的应用程序集中在少量几个特定程序里(例如浏览器、即时通讯软件等)。某些应用程序之间存在关联性,例如用户启动一个IDE应用后,后续很可能继续使用编译器软件。此外,在用户在操作系统登录界面上输入密码的几秒钟时间(甚至更长时间)内,CPU等资源几乎处于空闲状态。参考上述情况,可以为某些应用程序设置预热触发事件,使之在用户输入操作系统的登录密码时,或与之相关的前序应用被启动时等合适的时机,将该应用程序的相关数据(即关联文件)加载至物理内存中,从而在用户尚未启动该应用程序时,将该应用程序的相关数据主动缓存至物理内存。这样,当用户后续启动应用程序、对应用程序进行操作时,应用程序可以进行快速响应,提高用户体验。
快照触发事件列表用于定义设置应用程序的关联文件列表的时机。当快照触发事件发生时(若快照触发事件列表包括多个快照触发事件,则当列表中的所有快照触发事件均发生后),进行物理内存快照,即,获取当前加载于物理内存中的磁盘文件列表,然后根据磁盘文件列表来更新应用程序的关联文件列表。
应当指出,本领域技术人员可以通过在配置文件中指定预热触发事件和快照触发事件,来灵活地控制进行数据预热和设置关联文件列表的时机,本发明对预热触发事件和快照触发事件的具体设置情况不做限制。根据一种实施例,可作为预热触发事件或快照触发事件的事件包括但不限于以下类型:
1.X11App事件,例如某个应用的进程出现变动;
2.systemd unit事件,例如systemd的某个service出现变动;
3.process事件,例如系统中出现某个特定进程;
4.file system事件,磁盘上某个文件出现变动,例如增加、修改、删除等;
5.inner内部事件,例如操作系统启动了10分钟,或刚启动等特定事件;
6.预热事件,例如其他应用的预热触发事件或快照触发事件。
本领域技术人员可以理解,除以上6种类型的事件之外,还可能存在一些目前没有被发现的事件类型,这些事件类型也可以作为某些应用程序的预热触发事件或快照触发事件。总之,本发明不限制预热触发事件和快照触发事件的具体类型,任意事件类型都在本发明的保护范围之列。
除预热触发事件列表和快照触发事件列表之外,应用程序的配置文件中还设置有其他配置项,例如关联文件列表的使用次数、关联文件列表的生命周期、发生快照触发事件到更新关联文件列表的延迟时间、磁盘文件的白名单和黑名单等,但不限于此。
关联文件列表的使用次数可以用来确定在并行加载情况下,将关联文件加载至物理内存中的加载权重。当物理内存出现多个文件的并行加载情况时,关联文件列表的使用次数越多,列表中的关联文件在并行加载时的加载权重越大,越能被优先进行加载。配置文件中记录有关联文件列表的使用次数,具体地,可以在配置文件中设置使用次数的初始值,后续在数据预热方法200的执行过程中,关联文件列表每被使用一次(即,每当列表中的文件被加载至物理内存中),关联文件列表的使用次数加一。
关联文件列表的生命周期用于表示关联文件列表的有效期限。由于应用程序的关联文件列表是通过对物理内存进行快照而得到的,考虑到对物理内存进行快照需要花费时间代价,因此,可以设置关联文件列表的生命周期,在生命周期内,不更新关联文件列表,即不需要对物理内存进行快照。配置文件中设置有关联文件列表的生命周期,例如,可以将生命周期设置为10次启动,即,一个关联文件列表可以应用于10次操作系统启动过程中,当某次关联文件列表被更新后,用户后续10次启动操作系统的过程中,都不再对该关联文件列表进行更新。
配置文件中还设置有发生快照触发事件到更新关联文件列表的延迟时间。在发生快照触发事件后,经过延迟时间,再对物理内存进行快照(即获取当前加载于物理内存中的磁盘文件列表),根据磁盘文件列表来更新应用程序的关联文件列表。通过设置延迟时间,可以留出一定的时间余量,保证应用程序的关联文件均已加载至物理内存中,从而使更新后的关联文件列表更加全面、准确。
磁盘文件的白名单和黑名单用于对物理内存中的磁盘文件进行进一步筛选,以得出应用程序的关联文件列表。根据一种实施例,在对物理内存进行快照得到当前加载于物理内存中的磁盘文件列表后,可以直接将该磁盘文件列表作为应用程序的关联文件列表。这种方式操作简单,得到的关联文件列表也比较完整,但是其中可能包含很多与本应用程序无关的文件。
白名单和黑名单则用于对物理内存中的磁盘文件列表进行进一步筛选,将位于白名单且不位于黑名单中的磁盘文件作为所述应用程序的关联文件,得到应用程序的关联文件列表。白名单、黑名单可以按照任意规则来实现文件的筛选,例如,白名单、黑名单中可以指定文件的存储路径、或指定文件的名称等,本发明对白名单、黑名单的具体格式不做限制。
上文介绍了配置文件中的预设触发事件列表、快照触发事件列表、关联文件列表的使用次数、关联文件列表的生命周期、发生快照触发事件到更新关联文件列表的延迟时间、磁盘文件的白名单和黑名单等配置项。本领域技术人员可以理解,除上述配置项之外,配置文件中还可以设置其他配置项,本发明对配置文件中所包括的配置项的数量、种类以及作用等均不做限制。
以下以Chrome浏览器为例,来说明本发明的配置文件的格式:
在步骤S210中获取了应用程序对应的预热触发事件列表和快照触发事件列表后,数据预热程序warm-daemon(中的events模块)会监听计算设备中的各类事件源,当监听到预热触发事件时,执行下述步骤S220;当监听到快照触发事件时,执行下述步骤S230。
在步骤S220中,当发生预热触发事件时,获取应用程序的关联文件列表,将各关联文件加载至物理内存中。
具体地,可以在解析关联文件列表后,依次调用open(2)、mmap(2)、read(2)来将相应的关联文件加载至内存中。预热触发事件例如可以是成功登录操作系统、成功启动桌面环境(DE)等,但不限于此。预热触发事件发生于用户启动应用程序之前。经过步骤S220,可以在用户启动应用程序之前,将应用程序的关联文件主动加载至内存中。这样,当用户后续启动应用程序、对应用程序进行操作时,应用程序可以进行快速响应,提高用户体验。
在步骤S220中,若预热触发事件列表中仅包括一个预热触发事件,则当监听到该预热触发事件发生时,即获取应用程序的关联文件列表,将各关联文件加载至物理内存中。若预热触发事件列表中包括多个预热触发事件,则当监听到列表中的多个预热触发事件均已发生后,再获取应用程序的关联文件列表,将各关联文件加载至物理内存中。
以上述Chrome浏览器的配置文件为例,预热触发事件列表中仅包括"snapshot:DE"一个预热触发事件。相应地,当监听到DE预热完毕后,即将Chrome浏览器的关联文件加载至物理内存中。
需要说明的是,步骤S220将关联文件加载至物理内存的步骤是一个增量加载磁盘文件的过程,其只会将存在于关联文件列表但尚未存在于物理内存中的磁盘文件加载至物理内存中,而不会删除某个已经存在于物理内存中的文件。例如,当前物理内存中包括a、b、c、d四个文件,应用程序的关联文件列表包括c、e、f三个文件,则执行步骤S220将把文件e、f加载至物理内存中。
在步骤S220将各关联文件加载至物理内存的过程中,可能会出现多个文件并行加载的情况。根据一种实施例,获取应用程序的关联文件列表的使用次数,根据使用次数来确定在并行加载情况下,将关联文件加载至物理内存中的加载权重。关联文件列表的使用次数越多,列表中的关联文件在并行加载时的加载权重越大,越能被优先进行加载。
应当指出,当用户登录操作系统后,步骤S220、S230通常先后执行。当数据预热程序warm-daemon第一次根据应用程序的配置文件来进行步骤S220的数据预热时,由于关联文件列表需要由后续步骤S230的物理内存快照步骤得出,因此在步骤S220中,关联文件列表为空,相应地,本次步骤S220便无法基于关联文件列表来实现数据预热,进而无法实现应用程序的加速响应。执行步骤S230后,才可以得出应用程序的关联文件列表。得出的关联文件列表可用于用户下次登录操作系统后的应用程序数据预热过程。
为了避免用户warm-daemon第一次使用配置文件时,因关联文件列表为空而无法实现数据预热,根据一种实施例,在实际应用配置文件之前,可以先对配置文件进行调试,使之预先生成应用程序的关联文件列表。然后再将配置文件放置在指定目录/var/lib/warm-sched/etc/下,正式投入使用。
在步骤S230中,当发生快照触发事件时,获取当前加载于物理内存中的磁盘文件列表,根据磁盘文件列表来更新应用程序的关联文件列表。
快照触发事件例如可以是启动了应用程序、出现了应用程序窗口等,但不限于此。快照触发事件发生于应用程序启动时或应用程序启动后,这时,物理内存中已经加载有与该应用程序相关的数据,相应地,可以对物理内存进行快照,根据当前物理内存中已有的文件来更新应用程序的关联文件列表,更新后的关联文件列表可用于用户下次登录操作系统后的应用程序数据预热过程。
在步骤S230中,若快照触发事件列表中仅包括一个快照触发事件,则当监听到该快照触发事件发生时,即获取当前加载于物理内存中的磁盘文件列表(即对物理内存进行快照),并根据磁盘文件列表来更新应用程序的关联文件列表。
若快照触发事件列表中包括多个快照触发事件,则当监听到列表中的多个快照触发事件均已发生后,再获取当前加载于物理内存中的磁盘文件列表(即对物理内存进行快照),并根据磁盘文件列表来更新应用程序的关联文件列表。
以上述Chrome浏览器的配置文件为例,快照触发事件列表中包括"inner:user"、"x11:Google-chrome"两个快照触发事件,相应地,当监听到系统进入user会话、且出现WMClass为Google-chrome的X11窗口后,获取当前加载于物理内存中的磁盘文件列表,并根据该磁盘文件列表来更新Chrome浏览器的关联文件列表,更新后的关联文件列表可用于用户下次登录操作系统后,对Chrome浏览器进行数据预热,加快Chrome浏览器的响应速度。
根据一种实施例,在步骤S230发生快照触发事件后,不是立刻进行物理内存快照,而是经过延迟时间后,再获取当前加载于物理内存中的磁盘文件列表,根据磁盘文件列表来更新所述应用程序的关联文件列表。通过设置延迟时间,可以留出一定的时间余量,保证应用程序的关联文件均已加载至物理内存中,从而使更新后的关联文件列表更加准确。延迟时间的值可以由本领域技术人员自行设置,本发明对此不做限制。在一个实施例中,可以将延迟时间设置为1秒。
由于应用程序的关联文件列表是通过对物理内存进行快照而得到的,考虑到对物理内存进行快照需要花费时间代价,因此,根据一种实施例,可以设置关联文件列表的生命周期,在生命周期内,不更新关联文件列表,即不执行步骤S230。
根据一种实施例,通过对Linux kernel的VFS系统进行改造,可以在/proc系统中导出一个名为mincores的目标文件。/proc/mincores目标文件的文件内容为当前加载于物理内存中的磁盘文件的情况,例如当前加载于物理内存中的磁盘文件的大小、位于物理内存中的文件部分占实际磁盘文件大小的比例和文件路径等,但不限于此。图4示出了根据本发明一个实施例的目标文件的格式的示意图,图中的三列信息依次为当前加载于物理内存中的磁盘文件的大小、位于物理内存中的文件部分占实际磁盘文件大小的比例和磁盘文件的存储路径。
通过读取目标文件/proc/mincores,即可快速、高效地获取当前加载于物理内存中的磁盘文件列表。
需要说明的是,现有的/proc系统中不存在mincores文件,无法快速获取当前时刻存在于物理内存中的磁盘文件列表。按照现有技术,只能通过Linux内核提供的mincore(2)接口来查询某一磁盘文件是否位于物理内存中。如果想要知道所有文件在内存中的加载情况,则需要遍历整个文件系统,依次判断各文件是否在物理内存中,耗时很长(通常需要几分钟),且在遍历查询的过程中,磁盘所有的目录文件都被加载至内存,这样也破坏了内存数据,使物理内存中的磁盘文件列表的检测结果不准确。
本发明通过对Linux内核模块进行改造,修改内核底层代码,从内存cache开始遍历(需要在内核态去访问对应的数据结构)所有存在于内存中的磁盘文件,然后通过/proc/mincores目标文件导出到用户态,从而可以快速(1秒钟以内)、高效地获取当前加载于物理内存中的磁盘文件列表。
在获取到当前加载于物理内存中的磁盘文件列表之后,根据磁盘文件列表来更新应用程序的关联文件列表。根据一种实施例,可以直接将磁盘文件列表作为应用程序的关联文件列表。这种方式操作简单,得到的关联文件列表也比较完整,但是其中可能包含很多与本应用程序无关的文件。根据另一种实施例,可以采用白名单和黑名单来对磁盘文件列表中的文件进行进一步筛选,将磁盘文件列表中位于白名单且不位于黑名单中的磁盘文件作为应用程序的关联文件,得到应用程序的关联文件列表。白名单、黑名单可以按照任意规则来实现文件的筛选,例如,白名单、黑名单中可以指定文件的存储路径、或指定文件的名称等,本发明对白名单、黑名单的具体格式不做限制。
根据一种实施例,在满足任一终止条件时,数据预热方法200终止执行。终止条件例如可以包括方法200的执行时间(即数据预热程序warm-daemon的运行时间)达到预设时长、计算设备的可用物理内存小于预设阈值、所有应用程序的配置文件均已执行完毕等,但不限于此。预设时长、预设阈值的值可以由本领域技术人员自行设置,本发明对此不做限制。在一个实施例中,可以将预设时长设为30分钟,预设阈值设置为200M。
本发明的数据预热方法200用于优化用户登录操作系统后,冷启动应用程序的体验。数据预热程序warm-daemon在操作系统刚启动时就开始运行,当其运行时间达到预设时长,例如30分钟后,应用程序通常已经被启动,数据基本上已经预热完了,就没有必要继续执行方法200了。当计算设备的可用物理内存小于预设阈值,例如200M时,可用物理内存可能不足以将应用程序的关联文件完全加载,方法200缺少客观执行条件,因此终止执行。当所有应用程序的配置文件均执行完毕时,需要进行数据预热的应用程序均已完成数据预热,这时也没有必要再执行方法200了。
A11:A1-10中任一项所述的方法,在满足任一终止条件时终止执行,所述终止条件包括:
执行时间达到预设时长;
所述计算设备的可用物理内存小于预设阈值;
所有应用程序的配置文件均已执行完毕。
A12:一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器;
当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如权利要求1-11中任一项所述的数据预热方法。
A13:一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-11中任一项所述的数据预热方法。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据预热方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (11)
1.一种数据预热方法,在计算设备中物理磁盘挂载后、图形界面启动前开始执行,以便在用户实际启动应用程序之前将应用程序的相关数据主动缓存至内存中,包括步骤:
获取应用程序所对应的预热触发事件列表和快照触发事件列表;
当发生预热触发事件时,获取所述应用程序的关联文件列表,将所述关联文件加载至物理内存中,所述预热触发事件包括与所述应用程序相关的前序应用程序启动时;
当发生快照触发事件时,获取当前加载于物理内存中的磁盘文件列表,根据所述磁盘文件列表来更新所述应用程序的关联文件列表,具体为:将所述磁盘文件列表作为所述应用程序的关联文件列表;或者将所述磁盘文件列表中,位于白名单且不位于黑名单中的磁盘文件作为所述应用程序的关联文件,以便将更新后的所述应用程序的关联文件列表用于用户下次登录操作系统后的应用程序数据预热过程,其中,所述快照触发事件包括启动了应用程序和出现了应用程序窗口。
2.如权利要求1所述的方法,还包括步骤:
获取所述应用程序的关联文件列表的使用次数;
根据所述使用次数来确定在并行加载情况下,将所述关联文件加载至物理内存中的加载权重。
3.如权利要求1或2所述的方法,还包括步骤:
设置所述关联文件列表的生命周期;
在所述生命周期内,不更新所述关联文件列表。
4.如权利要求1-3中任一项所述的方法,还包括步骤:设置延迟时间;
当发生快照触发事件后,经过所述延迟时间,获取当前加载于物理内存中的磁盘文件列表,根据所述磁盘文件列表来更新所述应用程序的关联文件列表。
5.如权利要求1-4中任一项所述的方法,其中,通过读取/proc文件系统中的目标文件来获取当前加载于物理内存中的磁盘文件列表。
6.如权利要求5所述的方法,其中,所述目标文件的内容包括:当前加载于物理内存中的磁盘文件的大小、位于物理内存中的文件部分占实际磁盘文件大小的比例和文件路径。
7.如权利要求1-6中任一项所述的方法,还包括步骤:
设置所述应用程序的配置文件,所述配置文件中定义有所述应用程序的预热触发事件列表和快照触发事件列表。
8.如权利要求7所述的方法,其中,所述配置文件还包括关联文件列表的使用次数、关联文件列表的生命周期、发生快照触发事件到更新关联文件列表的延迟时间、磁盘文件的白名单和黑名单。
9.如权利要求1-8中任一项所述的方法,在满足任一终止条件时终止执行,所述终止条件包括:
执行时间达到预设时长;
所述计算设备的可用物理内存小于预设阈值;
所有应用程序的配置文件均已执行完毕。
10.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器;
当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如权利要求1-9中任一项所述的数据预热方法。
11.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-9中任一项所述的数据预热方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910595150.4A CN110442380B (zh) | 2019-07-03 | 2019-07-03 | 一种数据预热方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910595150.4A CN110442380B (zh) | 2019-07-03 | 2019-07-03 | 一种数据预热方法及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442380A CN110442380A (zh) | 2019-11-12 |
CN110442380B true CN110442380B (zh) | 2021-11-09 |
Family
ID=68428484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910595150.4A Active CN110442380B (zh) | 2019-07-03 | 2019-07-03 | 一种数据预热方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442380B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022170772A1 (zh) * | 2021-02-09 | 2022-08-18 | 荣耀终端有限公司 | 一种应用程序运行加速的方法及设备 |
CN115098180A (zh) * | 2022-05-23 | 2022-09-23 | 深圳市大头兄弟科技有限公司 | 网页加载速度提升方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269431B1 (en) * | 1998-08-13 | 2001-07-31 | Emc Corporation | Virtual storage and block level direct access of secondary storage for recovery of backup data |
CN102567136A (zh) * | 2010-12-15 | 2012-07-11 | 研祥智能科技股份有限公司 | 一种计算机系统的备份、还原方法、装置及计算机系统 |
CN102902919A (zh) * | 2012-08-30 | 2013-01-30 | 北京奇虎科技有限公司 | 一种可疑操作的识别处理方法、装置和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146928B1 (en) * | 2012-12-31 | 2015-09-29 | Emc Corporation | Techniques for storing metadata of a filesystem in persistent memory |
CN103677922B (zh) * | 2013-12-13 | 2018-01-09 | 北京奇虎科技有限公司 | 对应用软件进行启动的方法和装置 |
CN104461876B (zh) * | 2014-11-26 | 2017-09-22 | 北京航空航天大学 | 一种基于运行快照序列的并行程序重现调试方法 |
CN105117246A (zh) * | 2015-08-04 | 2015-12-02 | 晶晨半导体(上海)有限公司 | 电子设备快速启动的方法 |
-
2019
- 2019-07-03 CN CN201910595150.4A patent/CN110442380B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269431B1 (en) * | 1998-08-13 | 2001-07-31 | Emc Corporation | Virtual storage and block level direct access of secondary storage for recovery of backup data |
CN102567136A (zh) * | 2010-12-15 | 2012-07-11 | 研祥智能科技股份有限公司 | 一种计算机系统的备份、还原方法、装置及计算机系统 |
CN102902919A (zh) * | 2012-08-30 | 2013-01-30 | 北京奇虎科技有限公司 | 一种可疑操作的识别处理方法、装置和系统 |
Non-Patent Citations (2)
Title |
---|
Linux启动过程分析与优化;邱晟;《中国优秀硕士学位论文全文数据库(电子期刊)》;20060515(第5期);第I138-252页 * |
PES: A prefetch evaluation system for VM snapshot deduplication;Sumitha Rani M 等;《2016 International Conference on Computation of Power, Energy Information and Commuincation (ICCPEIC)》;20160901;第154-158页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110442380A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5976020B2 (ja) | アンチマルウェアメタデータのルックアップを行うためのシステム及び方法 | |
US20150012924A1 (en) | Method and Device for Loading a Plug-In | |
US8943592B1 (en) | Methods of detection of software exploitation | |
US20120017276A1 (en) | System and method of identifying and removing malware on a computer system | |
CN111427596B (zh) | 一种软件升级的方法、装置及终端设备 | |
US11099889B2 (en) | Method-call-chain tracking method, electronic device, and computer readable storage medium | |
WO2017186066A1 (zh) | 软件管理方法及装置 | |
CN111428241B (zh) | 一种多安全访问策略控制方法及计算设备 | |
CN109359092B (zh) | 文件管理方法、桌面显示方法、装置、终端及介质 | |
CN113204385B (zh) | 一种插件加载方法、装置、计算设备及可读存储介质 | |
CN110442380B (zh) | 一种数据预热方法及计算设备 | |
US10915624B2 (en) | Method and apparatus for determining behavior information corresponding to a dangerous file | |
CN108563472B (zh) | 基于多开应用的服务插件加载方法及装置 | |
CN110874298B (zh) | 一种请求数据存储方法及终端设备 | |
EP3574428B1 (en) | Safe data access through any data channel | |
US9141803B2 (en) | Self-healing of operating system components | |
CN114880189A (zh) | 应用程序的监控方法、装置及计算设备 | |
CN113722715B (zh) | 一种导入文件检查方法、检查系统及计算设备 | |
CN113312623B (zh) | 访问控制中的进程检测方法、装置、电子设备和存储介质 | |
US8918873B1 (en) | Systems and methods for exonerating untrusted software components | |
CN110928754A (zh) | 运维审计方法、装置、设备及介质 | |
KR101384929B1 (ko) | 사용자 단말의 저장 매체를 위한 미디어 스캐닝 방법 및 미디어 스캐닝 장치 | |
CN108664293B (zh) | 安卓系统中的应用控制方法和装置 | |
JP7476140B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
US20240160735A1 (en) | Malware Detection and Registry Repair Scripting |
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 |