CN110955486B - 文件缓存效率的追踪方法、装置、存储介质及终端 - Google Patents
文件缓存效率的追踪方法、装置、存储介质及终端 Download PDFInfo
- Publication number
- CN110955486B CN110955486B CN201811126354.5A CN201811126354A CN110955486B CN 110955486 B CN110955486 B CN 110955486B CN 201811126354 A CN201811126354 A CN 201811126354A CN 110955486 B CN110955486 B CN 110955486B
- Authority
- CN
- China
- Prior art keywords
- file
- preset
- file access
- access information
- virtual machine
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种文件缓存效率的追踪方法、装置、存储介质及终端。该方法包括:检测到预设文件访问事件被触发;基于预设程序代码获取所述预设访问事件对应的文件访问信息;采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率。通过采用上述技术方案,可以在操作***运行时动态地对文件缓存效率进行追踪,有效地减少内核空间和用户空间交互的数据量,从而,降低了追踪文件缓存效率对操作***的负担,提高了***稳定性。
Description
技术领域
本申请实施例涉及终端技术领域,尤其涉及一种文件缓存效率的追踪方法、装置、存储介质及终端。
背景技术
目前,很多数据均是以文件的形式进行存储的。在终端的操作***中,文件缓存(page cache)是一个非常重要的角色,将文件内容缓存在内存中可以提高文件的访问效率。
然而,由于内存容量远远小于外部存储器的容量,随着终端使用时间的增加,文件缓存需要不断地删除和添加。因此,更加准确地删除不需要的文件缓存,或者预先添加后续可能用到的文件缓存是文件缓存优化的重要课题。动态追踪文件缓存的效率是判断和优化文件缓存效果的最直接也最重要的标准。然而,相关技术中的动态追踪文件缓存的效率的方案仍不够完善,对***产生非常大的负担。
发明内容
本申请实施例提供一种文件缓存效率的追踪方法、装置、存储介质及终端,可以优化文件缓存效率的追踪方案。
第一方面,本申请实施例提供了一种文件缓存效率的追踪方法,包括:
检测到预设文件访问事件被触发;
基于预设程序代码获取所述预设访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;
采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率。
第二方面,本申请实施例还提供了一种文件缓存效率的追踪装置,该追踪装置包括:
事件检测模块,用于检测到预设文件访问事件被触发;
信息获取模块,用于基于预设程序代码获取所述预设访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;
信息存储模块,用于采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的文件缓存效率的追踪方法。
第四方面,本申请实施例提供了一种终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的文件缓存效率的追踪方法。
本申请实施例提供一种文件缓存效率的追踪方案,若检测到预设文件访问事件被触发,则基于预设程序代码获取该预设访问事件对应的文件访问信息,并采用预设虚拟机对应的存储格式对该文件访问信息进行存储,其中,该文件访问信息用于指示用户空间基于该文件访问信息计算文件缓存效率。通过采用上述技术方案,可以基于实现在内核空间中的预设虚拟机,在内核空间中的与预设文件访问事件对应的待调用函数之前***预设程序代码,利用该预设程序代码获取并存储文件访问信息,以供用户空间基于该文件访问信息计算文件缓存效率,可以在操作***运行时动态地对文件缓存效率进行追踪,有效地减少内核空间和用户空间的交互,从而,降低了追踪文件缓存效率对操作***的负担,提高了***稳定性。
附图说明
图1是本申请实施例提供的一种文件缓存效率的追踪方法的流程图;
图2是本申请实施例提供的另一种文件缓存效率的追踪方法的流程图;
图3是本申请实施例提供的又一种文件缓存效率的追踪方法的流程图;
图4是本申请实施例提供的一种文件缓存效率的追踪装置的结构框图;
图5是本申请实施例提供的一种终端的结构示意图;
图6是本申请实施例提供的一种智能手机的结构框图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1是本申请实施例提供的一种文件缓存效率的追踪方法的流程图,该方法可以由文件缓存效率的追踪装置来执行,其中,该装置可由软件和/或硬件实现,一般可集成在终端中。如图1所示,该方法包括:
步骤110、检测到预设文件访问事件被触发。
示例性的,本申请实施例中的终端可包括手机、平板电脑、笔记本电脑、计算机以及智能家电等设置安装有操作***的设备。
本申请实施例中对操作***的类型不做限定,例如可包括安卓(Android)操作***、塞班(Symbian)操作***、视窗化(Windows)操作***以及苹果(ios)操作***等等。为了便于说明,本申请实施例将以安卓操作***为例进行后续的说明。在终端的Android操作***中,对各类文件的访问非常频繁。而在Android的文件访问中,文件缓存是一个非常重要的角色,通过将文件内容缓存在内存中,可以提高文件访问效率。但是,由于内存容量有限,其远远小于外部存储器的容量,将文件缓存于内存中可能需要删除已缓存的其它文件。也就是说文件缓存过程就是不断删除和添加文件的过程。因此,如何更加准确的删除不需要的文件缓存,或者预先添加后续可能用到的文件缓存是文件缓存优化的重要课题。目前,动态追踪文件缓存的效率是判断和优化文件缓存效果的最直接也是最重要的标准。相关技术中通常采用类似ftrace的Linux内核级的追踪框架实时动态追踪文件缓存的效率。然而,采用这类追踪框架会对操作***产生非常大的负担,且容易影响***的稳定性,需要改进。
示例性的,通常需要对内核信息进行追踪时,会使用类似ftrace的Linux内核级的追踪框架。最早ftrace是一个函数追踪器(function tracer),仅能够记录内核的函数调用流程,如今ftrace已经发展成为一个框架(framework),可采用***(plugin)的方式支持开发人员添加更多种类的追踪(trace)功能,帮助开发人员了解Linux内核的运行时行为,以便进行故障调试或性能分析,因此,可以用于对文件访问的内核信息进行追踪。然而,采用ftrace一类的追踪框架进行文件访问追踪时,会将收集到的信息写入环形缓存(ringbuffer)中,且收集过程中不能对信息进行筛选或统计等操作,在收集内核信息时,仅能够获取内核标准格式的信息,导致收集的信息量较大,而ring buffer中的存储空间有限,为了防止信息丢失,用户空间程序就会不断地读取ring buffer中的内容,然后在用户空间对读取到的信息进行筛选、计算或统计等操作。这样,会产生大量的内核空间和用户空间的交互,用户空间程序会占用大量的处理器,如中央处理器(central processing unit,CPU),的资源。另外,若想要收集内核标准格式信息以外其他类型信息,则需要在内核中***相应的代码,基于ftrace等架构在内核中***代码尝尝会导致内核崩溃等异常,降低***稳定性,导致开发周期较长,在实际量产***中难以集成。
本申请实施例中,可以基于实现在内核空间中的预设虚拟机实现文件访问追踪,进而,用户空间基于文件访问追踪结果计算文件缓存效率。示例性的,所述预设文件访问事件可包括文件读取(read)、文件写入(write)、文件同步(fsync)和文件数据同步(fdatasync)中的至少一种。其中,read表示读取文件;write表示写文件;fsync表示同步内存中所有已修改的文件数据到储存设备,fsync除了同步文件的修改内容(脏页),还会同步文件的描述信息(metadata,包括size、访问时间st_atime&st_mtime等等);fdatasync表示刷新数据到磁盘,fdatasync的功能与fsync类似,但是仅仅在必要的情况下才会同步metadata,因此可以减少一次IO写操作。当然,还可包含其他文件访问事件,不同的操作***中文件访问事件的类型或叫法可能不同,本领域技术人员可根据实际使用的操作***进行适应性的选择。
对于很多操作***来说,内核一般基于Linux实现,***底层一般为LinuxKernel,***会进行内核空间和用户空间的划分,不同的操作***划分方式或划分结果可能不同。用户空间一般指用户进程所在的内存区域,应用程序运行在用户空间,用户进程的数据存放于用户空间;而内核空间是操作***占据的内存区域,操作***和驱动程序运行在内核空间,操作***的数据存放于***空间。这样,可以将用户数据和***数据进行隔离,保证***的稳定性。一般的,用户空间和内核空间通过***调用(system call)进行交互,***调用可以理解为由操作***实现提供的所有***调用所构成的集合,即程序接口或应用编程接口(Application Programming Interface,API),是应用程序与***之间的接口。操作***的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为***调用的接口呈现给用户。***调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。
本申请实施例中,在应用程序对文件进行访问时,需要通过***调用的方式访问内核空间,也即,需要调用相应的***调用接口访问内核空间,因此,可根据预设文件访问事件对应的***调用接口是否被调用来判断预设文件访问事件是否被触发,若被调用,则可认为预设文件访问事件被触发。
示例性的,在调用相应的***调用接口后,还需要调用内核空间中的相应函数来实现文件访问,可将该相应函数称为待调用函数。以上述的read、write、fsync和fdatasync为例,每个预设文件访问事件都对应着相应的待调用函数,用于实现读取文件、写入文件、文件同步以及文件数据同步的功能。在不同的操作***中,函数具体的实现形式可能不同,本申请实施例不做限定。
步骤120、基于预设程序代码获取所述预设访问事件对应的文件访问信息。
本申请实施例中,可预先基于预设虚拟机的程序代码编写方式,在内核空间中的待调用函数之前,***预设程序代码,该预设程序代码用于获取文件访问信息。其中,该预设程序代码在预设文件访问事件对应的待调用函数之前执行。基于预设虚拟机***预设程序代码获取文件访问信息,能够保证***的稳定性。
示例性的,可先执行该预设程序代码,然后再执行待调用函数,预设程序代码用于对执行待调用函数时的与文件访问相关的信息进行获取,这些信息本申请实施例中称为文件访问信息。文件访问信息可包括反映文件访问过程的细节信息,包括文件名称、存储路径及访问文件的主体,如访问的什么文件,该文件存储于哪里,由哪个应用访问该文件,具体的访问方式以及对该文件被访问的次数等等。其中,该文件被访问的次数可以通过统计该文件被应用程序访问的次数的方式得到,即该文件被应用A读取一次,上述被访问的次数加1,然后,该文件又被应用B写一次,上述被访问次数累加1,其后,该文件又被应用A同步一次,上述被访问次数再次累加,依次类推,该被应用程序访问的次数随着应用程序操作该文件而改变。
步骤130、采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储。
需要说明的是,该文件访问信息用于指示用户空间基于该文件访问信息计算文件缓存效率。
本申请实施例中,利用预设虚拟机对应的存储格式对所获取的文件访问信息进行存储,而并非采用内核标准格式进行存储,能够节省存储空间。用户空间不需要不停地读取文件访问信息,而是可以定期或在需要时一次性读取所需的文件访问信息即可,可有效减少内核空间和用户空间的交互次数,且由于采用预设虚拟机的存储格式,读取信息量更少,传输量小,所以交互数据量也减小,从而降低文件访问追踪对***的负担,提高***稳定性。
用户空间在获取上述文件访问信息后,提取针对每个文件的文件访问次数,以及该文件由外部存储中读取的次数,并基于每个文件的文件访问次数和该文件由外部存储中读取的次数计算文件缓存效率。如,采用上述公式计算文件缓存效率:
需要说明的是,无论是需要读文件内容还是向文件中写入内容均需要先读取该文件,因此,对于针对文件的不同访问类型的操作,需要先由文件缓存或外部存储中读取该文件。
通过实时追踪文件缓存效率,可以为文件缓存优化提供有力的依据,如,若文件a的文件缓存效率是70%,也可以称为文件a的命中率为70%,即文件a由缓存中读取的概率是70%,换言之,文件a由外部存储中读取的概率是30%。类似的,计算出文件b的文件缓存效率是10%。假设对于文件b,上次访问时间与当前时刻的时间差小于文件a的上次访问时间与当前时刻的时间差(也就是说最长时间没有再次访问的文件是文件a),基于该文件缓存效率可以在优化文件缓存时,不将文件a由文件缓存中删除,而由文件缓存中清理掉文件b。
可以理解的是,基于文件缓存效率的文件缓存的优化方式并不限于上述示例列举的方式,还可以将文件缓存中的文件依据文件缓存效率排序,按照时间顺序由文件效率最低的开始清理等等,本申请实施例不作具体限定。
本实施例的技术方案,若检测到预设文件访问事件被触发,则基于预设程序代码获取该预设访问事件对应的文件访问信息,并采用预设虚拟机对应的存储格式对该文件访问信息进行存储,其中,该文件访问信息用于指示用户空间基于该文件访问信息计算文件缓存效率。通过采用上述技术方案,可以基于实现在内核空间中的预设虚拟机,在内核空间中的与预设文件访问事件对应的待调用函数之前***预设程序代码,利用该预设程序代码获取并存储文件访问信息,以供用户空间基于该文件访问信息计算文件缓存效率,可以在操作***运行时动态地对文件缓存效率进行追踪,有效地减少内核空间和用户空间交互的数据量,从而,降低了追踪文件缓存效率对操作***的负担,提高了***稳定性。
在一些实施例中,所述预设虚拟机包括扩展伯克利包过滤器(extended BerkeleyPacket Filter,eBPF),所述预设虚拟机对应的存储格式包括哈希表。eBPF是一套实现在内核中的虚拟机,它最初被设计用来实现网络数据包的过滤,如今已经有了在内核任何位置进行***虚拟机代码并实行的能力,并且一般***的虚拟机代码在之前还会进行大量检测,保证不会影响***的稳定性。目前在eBPF中规定的存储格式包括哈希表(Hash table),哈希表又称散列表,是根据关键码值(Key value,简称键值)而直接访问的数据结构,它通过把键值映射到表中一个位置来访问记录,以加快查找的速度。这样设置的好处在于,能够进一步保证***稳定性,减少内核空间和用户空间的交互。
图2是本申请实施例提供的另一种文件缓存效率的追踪方法的流程图,以预设虚拟机为eBPF为例,该方法包括如下步骤:
步骤201、检测到预设文件访问事件被触发。
示例性的,可根据预设文件访问事件对应的***调用接口是否被调用来判断预设文件访问事件是否被触发,若被调用,则可认为预设文件访问事件被触发。预设文件访问事件可包括read、write、fsync和fdatasync。
步骤202、判断内核空间中是否存在基于预设虚拟机编写的预设程序代码,若是,则执行步骤203,否则,执行步骤207。
示例性的,判断内核空间中的虚拟文件***层中,调用与预设文件访问事件对应的待调用函数的起始位置处,是否存在基于预设虚拟机编写的预设程序代码。
其中,假设当前的预设文件访问事件为read,对应的待调用函数可以是vfs_read函数等,函数原型可以是ssize_t vfs_read(struct file*file,char__user*buf,size_tcount,loff_t*pos)。在vfs_read函数之前的位置***基于eBPF编写的预设程序代码。
本申请实施例中,若预设文件访问事件被触发,则在基于预设程序代码获取所述预设访问事件对应的文件访问信息之前,判断内核空间中与预设文件访问事件对应的待调用函数之前是否存在基于预设虚拟机编写的预设程序代码。这样设置的好处在于,不会破坏内核空间中现有代码。虚拟文件***层可理解为一种文件抽象层,用于实现文件访问的待调用函数一般处于该层中,可以在调用待调用函数的起始位置处写入基于预设虚拟机的程序,用于获取文件访问信息,使得在判断是否存在预设程序代码时的时机和位置更加明确,保证预设程序代码能够成功被执行。
步骤203、通过所述预设程序代码获取所述待调用函数对应的参数内容或内核数据结构内容。
示例性的,可先执行预设程序代码,再执行待调用函数。对于某些待调用函数,文件访问信息是以函数参数的形式存在的,可以通过预设程序代码获取该待调用函数对应的参数内容,以获取文件访问信息。还有一些待调用函数,文件访问信息是以内核数据结构的元素的形式存在的,可以通过预设程序代码获取该待调用函数对应的内核数据结构内容。还有一些待调用函数,一些文件访问信息会存在于函数参数里面,还有一些可能会存在于对应的内核数据结构中,因此可利用预设程序代码对待调用函数执行过程中涉及到的函数参数内容和内核数据结构内容进行获取。这样设置的好处在于,能够成功准确地获取到文件访问信息。在执行待调用函数时,一些文件访问信息会存在于函数参数里面,如文件路径、文件大小或文件ID等;还有一些可能会存在于对应的内核数据结构中,如文件名称、访问文件的应用名或访问文件的应用ID等。其中,存在的形式不做限定,在获取到函数参数内容或内核数据结构内容后,可能需要进行转换,从而得到最终所需的文件访问信息。
步骤204、根据所述参数内容或内核数据结构内容确定所述待调用函数对应的文件访问信息。
其中,文件访问信息可包括文件名称、文件ID、文件路径、访问文件的应用名、访问文件的应用ID等等。
例如,由上述vfs_read函数可以看出,参数buf指向用户空间的内存地址,从而能够得到文件访问信息中的文件路径。通过对函数参数内容和内核数据结构内容的获取,能够全面地得到上述文件访问信息。在获取到函数参数内容或内核数据结构内容后,可能需要进行转换,从而得到最终所需的文件访问信息。例如,有些内核数据结构中会存在文件描述或用于表示文件名称的数字等,文件描述或数字与文件名称存在一一对应的关系,因此,可以转换成所需要的文件名称。
步骤205、以所述文件访问信息包含的文件标识及访问文件的主体作为哈希表的键值,对所述文件访问信息进行存储,得到第二哈希表。
需要说明的是,文件标识包括文件ID,访问文件的主体包括应用ID,如对于文件a,其文件ID可以是123,对于应用A来说,其应用ID可以是MN,则对于应用A访问文件a的一条访问记录,其在第二哈希表中的键值可以是MN123,代表应用A访问了文件a。并且,键值对应于MN123,其存储的实际内容可以是文件名、文件路径、应用A访问文件a的次数等等。其中,文件a被应用A访问的次数是由文件a创建(或应用A被安装)时起的统计值。这样设置的好处在于,能够简洁准确地对文件访问信息进行存储,且方便查询。
需要说明的是,作为访问文件的主体的应用可以是第三方应用也可以是***应用,该应用可以是应用进程或应用线程等。
需要说明的是,所述文件标识还可以包括文件所属的设备号。设备号可理解为终端中硬件或软件的分区的标号,如数据data区、***system区以及存储卡区等的标号。不相同的两个设备号中可能存在文件ID相同的文件,若以文件ID和应用ID作为键值可能产生文件混淆的问题。此时,若将设备号、文件ID和应用ID作为键值可以有效地杜绝发生文件混淆的问题。
步骤206、在内核空间接收到所述用户空间的预设读取请求时,根据所述预设读取请求查询所述第二哈希表,并将查询结果反馈给所述用户空间,以供用户空间基于文件访问信息计算文件缓存效率。
示例性的,在内核空间接收到用户空间的预设读取请求时,根据所述预设读取请求查询所述第二哈希表,将键值对应的列与文件被应用访问的次数对应的列作为查询结果发送至用户空间。用户空间基于查询结果统计出各个文件的文件访问的次数,以及各个文件的文件访问次数中由外部存储中读取该文件的次数。用户空间基于各个文件的文件访问次数和由外部存储中读取该文件的次数计算各个文件的文件缓存效率。这样设计的好处在于,将统计的工作转移至用户空间,减少内核空间的进程所处理的数据量。用户空间的进程可以针对查询结果进行进一步的分析或统计等操作。如各个文件被应用程序访问的次数,各个文件被应用程序访问时由外部存储中读取的次数、读取次数较多的文件有哪些,访问该读取次数较多的文件的应用有哪些,哪个应用访问该读取次数较多的文件的次数最多等等,进而可以对用户的文件访问习惯进行分析。
可选的,在内核空间接收到用户空间的预设读取请求时,根据该读取请求查询第二哈希表得到键值及文件被应用访问的次数,统计各个文件被应用访问的次数,以及各个文件被应用访问的次数中由外部存储中读取该文件的次数,将各个文件被应用访问的次数以及由外部存储中读取该文件的次数作为查询结果反馈给所述用户空间。用户空间基于各个文件的文件访问次数和由外部存储中读取该文件的次数计算各个文件的文件缓存效率。这样设计的好处在于,减少了内核空间与用户空间交互的数据量,减少***负担。
步骤207、执行待调用函数。
示例性的,若待调用函数被调用的起始位置并不存在预设程序代码,那么可说明当前的文件访问事件并不被关注,不需要对本次文件访问进行追踪,也不需要获取相应的文件访问信息,可直接执行待调用函数。
本申请实施例提供的文件缓存效率的追踪方法,利用eBPF框架在内核中实现实时的文件访问统计,通过在待调用函数被调用的起始位置处***eBPF程序来实现文件访问信息的获取,并存储于哈希表中,当接收到用户空间的预设读取请求时,由内核空间根据预设读取请求对哈希表进行查询,并将查询结果反馈给用户空间。实践证明,每次传输量可降低到几十KB,可见,通过采用本申请实施例提供的方案,可有效减少内核空间和用户空间交互的数据量,降低文件访问追踪对***的负担,提高***稳定性。
图3是本申请实施例提供的又一种文件缓存效率的追踪方法的流程图,该方法包括:
步骤301、通过用户空间接收过滤条件设置操作,根据过滤条件设置操作生成第一哈希表。
示例性的,可在终端中向用户展示文件追踪设置界面,用户可基于该设置界面输入过滤条件设置操作,如选择自己关心的应用程序中的文件、用户关心的应用程序访问的文件或者存储于特定路径下的文件作为目标应用、目标文件或目标存储路径。用户空间根据用户输入的过滤条件设置操作生成第一哈希表,用于指示内核空间对目标应用中的文件、目标应用访问的文件或目标存储路径下的文件进行实时的访问追踪。可选的,可以将应用名称、文件名称或存储路径作为键值,将过滤方式作为对应的存储内容(如保留或滤除)。可选的,还可以将过滤方式作为键值,将应用名称、文件名称或存储路径作为对应的存储内容等等。
步骤302、将第一哈希表由用户空间传递至内核空间。
内核空间获取存储有过滤条件信息的第一哈希表。
步骤303、检测到预设文件访问事件被触发。
步骤304、判断内核空间中是否存在基于预设虚拟机编写的预设程序代码,若是,则执行步骤305,否则,执行步骤310。
步骤305、通过所述预设程序代码获取所述待调用函数对应的参数内容或内核数据结构内容。
步骤306、根据所述参数内容或内核数据结构内容确定所述待调用函数对应的文件访问信息。
步骤307、根据第一哈希表中的过滤条件信息对文件访问信息进行过滤。
需要说明的是,过滤可以是正向过滤,也可以是反向过滤。这样设置的好处在于,在对文件访问信息进行存储之前,能够有选择性的进行过滤,进一步减少存储量。另外,第一哈希表由用户空间传递至内核空间,可支持由用户自行对预设哈希表进行设置,如选取自己关心的某个应用或某个路径下的文件作为过滤条件信息,指示内核空间将这些文件对应的文件访问信息筛选出来进行存储。
示例性的,可判断当前文件访问信息对应的文件是否属于目标应用程序(或是否处于目标路径下,或是有目标应用程序访问),若是,则说明是需要进行追踪的文件访问,可将当前文件访问信息进行保留;若不是,则说明是不需要进行追踪的文件访问,可忽略当前文件访问信息,即进行滤除。
步骤308、以过滤后的文件访问信息包含的文件标识及访问文件的主体作为哈希表的键值,对过滤后的文件访问信息进行存储,得到第二哈希表。
步骤309、在内核空间接收到所述用户空间的预设读取请求时,根据所述预设读取请求查询所述第二哈希表,并将查询结果反馈给所述用户空间,以供用户空间基于文件访问信息计算文件缓存效率。
这样设置的好处在于,用户空间可以按照自己的意愿随时或定期向内核空间发送预设读取请求,由内核空间完成查询,而不是由用户空间读取整个存储有文件访问信息的哈希表并自行查询,能够进一步减少用户空间与内核空间之间的交互数据量,降低追踪文件缓存效率的操作对***的负载。
步骤310、执行待调用函数。
本申请实施例提供的文件访问追踪方法,可以由用户对需要进行文件缓存效率追踪的文件进行预先设置,在内核空间通过eBPF程序获取到文件访问信息后,根据用户的设置进行相应的过滤,再存储于哈希表中,不仅可以进一步减少存储量,还可增强文件缓存效率追踪的针对性和个性化,在用户空间需要读取文件访问信息时,能够进一步减少内核空间和用户空间交互的数据量,实现了轻量级的追踪文件缓存效率的方案,有利于部署到量产***中。
图4是本申请实施例提供的一种文件缓存效率的追踪装置的结构框图,该装置可由软件和/或硬件实现,一般集成在终端中,可通过执行文件缓存效率的追踪方法在***运行时动态地对文件缓存效率进行追踪。如图4所示,该装置包括:
事件检测模块410,用于检测到预设文件访问事件被触发;
信息获取模块420,用于基于预设程序代码获取所述预设访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;
信息存储模块430,用于采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率。
本申请实施例提供一种文件缓存效率的追踪装置,若检测到预设文件访问事件被触发,则基于预设程序代码获取该预设访问事件对应的文件访问信息,并采用预设虚拟机对应的存储格式对该文件访问信息进行存储,以供用户空间读取并基于此文件访问信息计算文件缓存效率。通过采用上述技术方案,可以基于实现在内核空间中的预设虚拟机,在内核空间中的与预设文件访问事件对应的待调用函数之前***预设程序代码,利用该预设程序代码获取并存储文件访问信息,以供用户空间基于该文件访问信息计算文件缓存效率,可以在操作***运行时动态地对文件缓存效率进行追踪,有效地减少内核空间和用户空间的交互,从而,降低了追踪文件缓存效率对操作***的负担,提高了***稳定性。
可选的,还包括:
判读模块,用于在基于预设程序代码获取所述预设访问事件对应的文件访问信息之前,判断内核空间中的虚拟文件***层中,调用与预设文件访问事件对应的待调用函数的起始位置处,是否存在基于预设虚拟机编写的预设程序代码。
可选的,信息获取模块420具体用于:
通过所述预设程序代码获取所述待调用函数对应的参数内容或内核数据结构内容;
根据所述参数内容或内核数据结构内容确定所述待调用函数对应的文件访问信息。
需要说明的是,所述预设虚拟机包括扩展伯克利包过滤器eBPF,所述预设虚拟机对应的存储格式包括哈希表。
可选的,信息存储模块430具体用于:
以所述文件访问信息包含的文件标识及访问文件的主体作为哈希表的键值,对所述文件访问信息进行存储,得到第二哈希表。
可选的,还包括:
结果反馈模块,用于在采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储之后,在内核空间接收到所述用户空间的预设读取请求时,根据所述预设读取请求查询所述第二哈希表,并将查询结果反馈给所述用户空间。
可选的,还包括:
信息过滤模块,用于在采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储之前,获取存储有过滤条件信息的第一哈希表,其中,所述第一哈希表由所述用户空间传递至内核空间;
根据所述过滤条件信息对所述文件访问信息进行过滤;
相应的,信息存储模块430用于:
采用所述预设虚拟机对应的存储格式对过滤后的文件访问信息进行存储。
可选的,所述文件访问信息包括文件访问次数和所述文件由外部存储中读取的次数;
相应的,用户空间基于所述文件访问信息计算文件缓存效率,包括:
用户空间基于所述文件访问次数和所述文件由外部存储中读取的次数计算文件缓存效率。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行文件缓存效率的追踪方法,该方法包括:
检测到预设文件访问事件被触发;
基于预设程序代码获取所述预设访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;
采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机***存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机***中,或者可以位于不同的第二计算机***中,第二计算机***通过网络(诸如因特网)连接到第一计算机***。第二计算机***可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机***中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的文件缓存效率的追踪操作,还可以执行本申请任意实施例所提供的文件缓存效率的追踪方法中的相关操作。
本申请实施例提供了一种终端,该终端内具有操作***,该终端中可集成本申请实施例提供的文件缓存效率的追踪装置。其中,终端可以为智能手机、PAD(平板电脑)、掌上游戏机及智能穿戴设备等。图5是本申请实施例提供的一种终端的结构示意图。如图5所示,该终端包括存储器510及处理器520。所述存储器510,包括内部存储及外部存储,用于存储计算机程序、缓存文件及文件访问信息等;所述处理器520读取并执行所述存储器510中存储的计算机程序。所述处理器520在执行所述计算机程序时实现以下步骤:检测到预设文件访问事件被触发;基于预设程序代码获取所述预设访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率。
上述示例中列举的存储器及处理器均为终端的部分元器件,所述终端还可以包括其它元器件。以智能手机为例,说明上述终端可能的结构。图6是本申请实施例提供的一种智能手机的结构框图。如图6所示,该智能手机可以包括:存储器601、中央处理器(CentralProcessing Unit,CPU)602(又称处理器,以下简称CPU)、外设接口603、RF(RadioFrequency,射频)电路605、音频电路606、扬声器611、触摸屏612、电源管理芯片608、输入/输出(I/O)子***609、其他输入/控制设备610以及外部端口604,这些部件通过一个或多个通信总线或信号线607来通信。
应该理解的是,图示智能手机600仅仅是终端的一个范例,并且智能手机600可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面就本实施例提供的集成有文件缓存效率的追踪装置的智能手机进行详细的描述。
存储器601,所述存储器601可以被CPU602、外设接口603等访问,所述存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在存储器601中存储计算机程序,还可以存储预设文件及预设白名单等。
外设接口603,所述外设接口603可以将设备的输入和输出外设连接到CPU602和存储器601。
I/O子***609,所述I/O子***609可以将设备上的输入输出外设,例如触摸屏612和其他输入/控制设备610,连接到外设接口603。I/O子***609可以包括显示控制器6091和用于控制其他输入/控制设备610的一个或多个输入控制器6092。其中,一个或多个输入控制器6092从其他输入/控制设备610接收电信号或者向其他输入/控制设备610发送电信号,其他输入/控制设备610可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器6092可以与以下任一个连接:键盘、红外端口、USB接口以及诸如鼠标的指示设备。
触摸屏612,所述触摸屏612是用户终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
I/O子***609中的显示控制器6091从触摸屏612接收电信号或者向触摸屏612发送电信号。触摸屏612检测触摸屏上的接触,显示控制器6091将检测到的接触转换为与显示在触摸屏612上的用户界面对象的交互,即实现人机交互,显示在触摸屏612上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
RF电路605,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,RF电路605接收并发送RF信号,RF信号也称为电磁信号,RF电路605将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。RF电路605可以包括用于执行这些功能的已知电路,其包括但不限于天线***、RF收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC(COder-DECoder,编译码器)芯片组、用户标识模块(Subscriber Identity Module,SIM)等等。
音频电路606,主要用于从外设接口603接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器611。
扬声器611,用于将手机通过RF电路605从无线网络接收的语音信号,还原为声音并向用户播放该声音。
电源管理芯片608,用于为CPU602、I/O子***及外设接口所连接的硬件进行供电及电源管理。
本申请实施例提供的终端,可以在操作***运行时动态地对文件缓存效率进行追踪,有效地减少内核空间和用户空间的交互,从而,降低了追踪文件缓存效率对操作***的负担,提高了***稳定性。
上述实施例中提供的文件缓存效率的追踪装置、存储介质及终端可执行本申请任意实施例所提供的文件缓存效率的追踪方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的文件缓存效率的追踪方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (10)
1.一种文件缓存效率的追踪方法,其特征在于,包括:
检测到预设文件访问事件被触发;
基于预设程序代码获取所述预设文件访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;
采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率;
所述预设虚拟机对应的存储格式包括哈希表;
所述文件访问信息包括该文件被访问的次数;
所述预设虚拟机包括扩展伯克利包过滤器eBPF。
2.根据权利要求1所述的方法,其特征在于,在基于预设程序代码获取所述预设文件访问事件对应的文件访问信息之前,还包括:
判断内核空间中的虚拟文件***层中,调用与预设文件访问事件对应的待调用函数的起始位置处,是否存在基于预设虚拟机编写的预设程序代码。
3.根据权利要求2所述的方法,其特征在于,基于预设程序代码获取所述预设文件访问事件对应的文件访问信息,包括:
通过所述预设程序代码获取所述待调用函数对应的参数内容或内核数据结构内容;
根据所述参数内容或内核数据结构内容确定所述待调用函数对应的文件访问信息。
4.根据权利要求1所述的方法,其特征在于,在采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储之前,还包括:
获取存储有过滤条件信息的第一哈希表,其中,所述第一哈希表由所述用户空间传递至内核空间;
根据所述过滤条件信息对所述文件访问信息进行过滤;
相应的,采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,包括:
采用所述预设虚拟机对应的存储格式对过滤后的文件访问信息进行存储。
5.根据权利要求1所述的方法,其特征在于,采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,包括:
以所述文件访问信息包含的文件标识及访问文件的主体作为哈希表的键值,对所述文件访问信息进行存储,得到第二哈希表。
6.根据权利要求5所述的方法,其特征在于,在采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储之后,还包括:
在内核空间接收到所述用户空间的预设读取请求时,根据所述预设读取请求查询所述第二哈希表,并将查询结果反馈给所述用户空间。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述文件访问信息包括文件访问次数和所述文件由外部存储中读取的次数;
相应的,用户空间基于所述文件访问信息计算文件缓存效率,包括:
用户空间基于所述文件访问次数和所述文件由外部存储中读取的次数计算文件缓存效率。
8.一种文件缓存效率的追踪装置,其特征在于,包括:
事件检测模块,用于检测到预设文件访问事件被触发;
信息获取模块,用于基于预设程序代码获取所述预设文件访问事件对应的文件访问信息,其中,所述预设程序代码包括基于预设虚拟机编写的程序代码,且所述预设程序代码在所述预设文件访问事件对应的待调用函数之前执行;
信息存储模块,用于采用所述预设虚拟机对应的存储格式对所述文件访问信息进行存储,其中,所述文件访问信息用于指示用户空间基于所述文件访问信息计算文件缓存效率;
所述预设虚拟机对应的存储格式包括哈希表;
所述文件访问信息包括该文件被访问的次数;
所述预设虚拟机包括扩展伯克利包过滤器eBPF。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的文件缓存效率的追踪方法。
10.一种终端,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7任一所述的文件缓存效率的追踪方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811126354.5A CN110955486B (zh) | 2018-09-26 | 2018-09-26 | 文件缓存效率的追踪方法、装置、存储介质及终端 |
PCT/CN2019/093512 WO2020062981A1 (zh) | 2018-09-26 | 2019-06-28 | 文件缓存效率的追踪方法、装置、存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811126354.5A CN110955486B (zh) | 2018-09-26 | 2018-09-26 | 文件缓存效率的追踪方法、装置、存储介质及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955486A CN110955486A (zh) | 2020-04-03 |
CN110955486B true CN110955486B (zh) | 2022-08-23 |
Family
ID=69950248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811126354.5A Active CN110955486B (zh) | 2018-09-26 | 2018-09-26 | 文件缓存效率的追踪方法、装置、存储介质及终端 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110955486B (zh) |
WO (1) | WO2020062981A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699021A (zh) * | 2020-12-08 | 2021-04-23 | 网易(杭州)网络有限公司 | 信息处理方法、装置、终端设备和服务器 |
CN116743903B (zh) * | 2022-09-09 | 2024-05-14 | 荣耀终端有限公司 | 一种芯片识别方法及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514110A (zh) * | 2012-06-20 | 2014-01-15 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
CN103731396A (zh) * | 2012-10-10 | 2014-04-16 | ***通信集团江西有限公司 | 资源访问方法、***及缓存资源信息推送装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100571281C (zh) * | 2007-06-29 | 2009-12-16 | 清华大学 | 海量数据分级存储方法 |
US9910689B2 (en) * | 2013-11-26 | 2018-03-06 | Dynavisor, Inc. | Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host |
US9460001B2 (en) * | 2014-03-21 | 2016-10-04 | Veritas Technologies Llc | Systems and methods for identifying access rate boundaries of workloads |
-
2018
- 2018-09-26 CN CN201811126354.5A patent/CN110955486B/zh active Active
-
2019
- 2019-06-28 WO PCT/CN2019/093512 patent/WO2020062981A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514110A (zh) * | 2012-06-20 | 2014-01-15 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
CN103731396A (zh) * | 2012-10-10 | 2014-04-16 | ***通信集团江西有限公司 | 资源访问方法、***及缓存资源信息推送装置 |
Non-Patent Citations (1)
Title |
---|
"Profiling JVM Applications in Production";Sasha Goldshtein;《SREcon18 Americas Conference》;20180327;正文第11-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110955486A (zh) | 2020-04-03 |
WO2020062981A1 (zh) | 2020-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110955631B (zh) | 文件访问追踪方法、装置、存储介质及终端 | |
US11397590B2 (en) | Method for preloading application, storage medium, and terminal | |
CN110955584B (zh) | 块设备访问追踪方法、装置、存储介质及终端 | |
CN109960507B (zh) | 编译优化方法、装置、存储介质、智能终端及服务器 | |
WO2019120037A1 (zh) | 模型构建方法、网络资源预加载方法、装置、介质及终端 | |
CN108512695B (zh) | 监控应用卡顿的方法及装置 | |
CN107491560B (zh) | 页面图片显示方法、装置、存储介质、服务器及移动终端 | |
CN108153647B (zh) | 日志处理方法、装置、终端设备及存储介质 | |
CN108038231B (zh) | 日志处理方法、装置、终端设备及存储介质 | |
CN107896243B (zh) | 网络数据加载的加速方法、装置、存储介质及移动终端 | |
CN107872523B (zh) | 网络数据的加载方法、装置、存储介质及移动终端 | |
CN108874466B (zh) | 控件调用方法、电子装置及计算机可读存储介质 | |
CN110888821B (zh) | 一种内存管理方法及装置 | |
CN110222288B (zh) | 页面展示方法、装置及存储介质 | |
US20200021652A1 (en) | Method and device for synchronizing data, and electronic device | |
US11138956B2 (en) | Method for controlling display of terminal, storage medium, and electronic device | |
US10901947B2 (en) | Method for recognizing infrequently-used data and terminal | |
CN109948090B (zh) | 网页加载方法及装置 | |
CN109033247B (zh) | 一种应用程序的管理方法、装置、存储介质及终端 | |
CN110046497B (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN112148579B (zh) | 一种用户界面的测试方法和装置 | |
US20140149972A1 (en) | Method, device and terminal for improving running speed of application | |
CN110955486B (zh) | 文件缓存效率的追踪方法、装置、存储介质及终端 | |
CN106776259B (zh) | 一种移动终端帧率检测方法、装置及移动终端 | |
CN112445725A (zh) | 预读取文件页的方法、装置和终端设备 |
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 |