CN116755951B - 内存颠簸的衡量方法、设备及存储介质 - Google Patents

内存颠簸的衡量方法、设备及存储介质 Download PDF

Info

Publication number
CN116755951B
CN116755951B CN202311029252.2A CN202311029252A CN116755951B CN 116755951 B CN116755951 B CN 116755951B CN 202311029252 A CN202311029252 A CN 202311029252A CN 116755951 B CN116755951 B CN 116755951B
Authority
CN
China
Prior art keywords
memory
time
refault
electronic device
value
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
Application number
CN202311029252.2A
Other languages
English (en)
Other versions
CN116755951A (zh
Inventor
林琨力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202311029252.2A priority Critical patent/CN116755951B/zh
Publication of CN116755951A publication Critical patent/CN116755951A/zh
Application granted granted Critical
Publication of CN116755951B publication Critical patent/CN116755951B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种内存颠簸的衡量方法、设备及存储介质。该方法将固定的时间段划分成多个不均等的时间片,通过统计不均等时间片(不同阶段)对应的refault值的变化来衡量内存当前的压力状态,从而准确的检测出该时间段中内存颠簸的发生。

Description

内存颠簸的衡量方法、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存颠簸的衡量方法、设备及存储介质。
背景技术
refault distance算法是一种页面回收(也可以表示为:内存回收)算法,主要用于衡量页面颠簸(也可以表示为:内存颠簸),进而根据衡量结果,如refault值,实现内存回收。
但是,在目前的实现方案中,refault distance算法衡量的是一个固定时间段的内存颠簸,得到的refault值是单调递增的。因此,基于refault值实现的内存回收,经常会存在错误回收的情况。
发明内容
为了解决上述技术问题,本申请提供一种内存颠簸的衡量方法、设备及存储介质,旨在降低错误回收的情况发生。
第一方面,本申请提供一种内存颠簸的衡量方法,应用于电子设备。该方法包括:根据设定的n个时间粒度,对第一时间段进行时间片划分,得到M个时间片;其中,M个时间片为不均等的时间片,且时间差为非等差数列;n为大于2的整数,M=n-1;根据设定的时间间隔,每隔时间间隔获取一次当前时刻的内存信息;基于内存回收算法,对每一时间片内的内存信息进行分析处理,确定每一时间片对应的refault值;根据M个时间片各自对应的refault值,确定第一时间段内,不同阶段的内存颠簸程度。
示例性的,上述所说的每一时间片对应的refault值,即为下文所说的时间片refault值。
由此,将固定的时间段划分成多个不均等的时间片,通过统计不均等时间片(不同阶段)对应的refault值的变化来衡量内存当前的压力状态,从而准确的检测出该时间段中内存颠簸的发生。
此外,关于该方面中内存颠簸的衡量方法中每一操作步骤的执行主体,可以参考下述图5,此处暂不赘述。
根据第一方面,n个时间粒度根据电子设备对应的内存供给时延和PSI机制确定。
根据第一方面,或者以上第一方面的任意一种实现方式,n个时间粒度中的第一个时间粒度根据内存供给时延确定,除第一个时间粒度的M个时间粒度根据PSI机制确定。
根据第一方面,或者以上第一方面的任意一种实现方式,第一个时间粒度小于内存供给时延。
由于电子设备在丢帧2帧时,用户层便可以感知的,因此为了尽可能降低用户的感知,通知内存供给时延要求丢帧不能超过1帧,故而此处的内存供给时延为1帧对应的时间。
由此,通过将第一个时间粒度设置为小于内存供给时延,从而可以及时发现内存颠簸,进而更加及时的进行调整。
根据第一方面,或者以上第一方面的任意一种实现方式,内存供给时延根据电子设备的刷新率确定。
关于根据电子设备的刷新率确定内存供给时延的细节,可以参见下述实施例记载的内容,此处暂不赘述。
根据第一方面,或者以上第一方面的任意一种实现方式,第一时间段的时长为10s,n为6;在电子设备的内存供给时延为8ms时,PSI机制对应的时间粒度包括300ms和5ms时,第一时间粒度为5ms,第二个时间粒度为100ms,第三个时间粒度为300ms,第四个时间粒度为1s,第五个时间粒度为5s,第六个时间粒度为10s。
根据第一方面,或者以上第一方面的任意一种实现方式,时间间隔为n个时间粒度中的第一个时间粒度。
例如5ms。关于每隔时间间隔获取一次内存信息的细节,可以参见下述图5对应的描述,此处暂不赘述。
根据第一方面,或者以上第一方面的任意一种实现方式,M个时间片满足下述公式:(T(n-1)-2T(n-2) +T(n-3)) != (T(n) – 2T(n-1)+T(n-2))。
根据第一方面,或者以上第一方面的任意一种实现方式,第一时间段中M个时间片整体的时间差分布呈递增趋势。
根据第一方面,或者以上第一方面的任意一种实现方式,根据设定的时间间隔,每隔时间间隔获取一次当前时刻的内存信息,包括:根据设定的时间间隔,每隔时间间隔获取一次当前时刻的内存信息,并根据当前时刻为内存信息添加对应的时间戳;按照时间戳的先后顺序,缓存获取到的每一内存信息。
关于该方面的实现可以参见图5和图6的描述部分,此处暂不赘述。
根据第一方面,或者以上第一方面的任意一种实现方式,基于内存回收算法,对每一时间片内的内存信息进行分析处理,确定每一时间片对应的refault值,包括:按照划分的时间片,获取缓存的每一时间片内的内存信息;基于内存回收算法,对每一时间片内的内存信息进行分析处理,确定每一时间片对应的refault值。
关于该方面的实现可以参见图5和图6的描述部分,此处暂不赘述。
根据第一方面,或者以上第一方面的任意一种实现方式,在根据M个时间片各自对应的refault值,确定第一时间段内,不同阶段的内存颠簸程度之后,方法包括:根据不同阶段的内存颠簸程度,调整内存回收算法的参数信息。
关于基于不均等时间片确定的不同阶段的内存颠簸程度,调整的内存回收算法的相关参数,例如下文所说的swappiness参数、scan_type类型、trim_mode选择、触发回收的refault值等。
由此,通过基于不均等时间片来确定不同阶段refault值,进而可以更好的衡量出不同阶段内存的压力状态,以及内存颠簸情况,从而基于衡量结果动态调整内存回收算法涉及的相关参数,更好的适用于实际的使用场景,有效降低了错误的内存回收发生,保证了用户使用体验。
第二方面,本申请提供了一种电子设备。该电子设备包括:存储器和处理器,存储器和处理器耦合;存储器存储有程序指令,程序指令由处理器执行时,使得所述电子设备执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请提供了一种计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请提供了一种芯片,该芯片包括处理电路、收发管脚。其中,该收发管脚、和该处理电路通过内部连接通路互相通信,该处理电路执行第一方面或第一方面的任一种可能的实现方式中的方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1A为示例性示出的内存中存储内存页的链表示意图;
图1B为示例性示出的内存页在活跃链表和不活跃链表的移动示意图;
图1C和图1D为示例性示出的文件页在活跃链表和不活跃链表的移动示意图;
图2为示例性示出的一段时间内,电子设备实际的refault值变化趋势的曲线示意图;
图3为示例性示出的基于原生refault distance算法确定的图2所示场景下原生refault值单调递增的曲线示意图;
图4为示例性的示出的基于本申请实施例提供的内存颠簸的衡量方法确定的图2所示场景下refault值变化趋势的曲线示意图;
图5为示例性示出的实现本申请实施例提供的内存颠簸的衡量方法时涉及的供功能模块/接口的时序图;
图6为示例性示出的时间片refault值处理单元确定不均等时间片对应的时间片refault值的示意图;
图7为示例性示出的电子设备的硬件结构示意图;
图8为示例性示出的电子设备的软件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
内存又称主存,是中央处理器(Central Processing Unit,CPU)能直接寻址的存储空间。为了加快读写速度,电子设备中的进程(应用程序)在启动过程中通常都需要借助内存来完成数据处理。例如,进程(应用程序)在启动过程中,会从内存中存放内存页的链表中获取对应的内存,以便在启动过程中或者在启动之后进行使用。
关于内存中存放内存页的链表,通常为基于最近最少使用(Least RecentlyUsed,LRU)算法构建的链表。关于内存中存放的内存页,可能是文件页(file page),也可能是匿名页(anonymous page),还可能是不可回收页。并且,文件页和匿名页又可以分为活跃的和不活跃的。基于此,内存中存放内存页的链表可以分为图1A示出的5中链表,如基于LRU算法创建的用于存放不活跃的匿名页的链表“LRU_INACTIVE_ANON”、基于LRU算法创建的用于存放活跃的匿名页的链表“LRU_ACTIVE_ANON”、基于LRU算法创建的用于存放不活跃的文件页的链表“LRU_INACTIVE_FILE”、基于LRU算法创建的用于存放活跃的文件页的链表“LRU_ACTIVE_FILE”、基于LRU算法创建的用于存储不可回收的内存页(文件页、匿名页)的链表“LRU_UNEVICTABLE”。
以文件页为例,其在链表中的流转如图1B所示。参见图1B,文件页是由内核从磁盘中读出,从不活跃链表(inactive_list)的头部(head)写入到文件也对应的不活跃链表(inactive_list)的。
继续参见图1B,示例性的,对于需要从inactive_list中释放的不活跃的文件页,会遵循先进先出的访问机制,按照inactive_list中文件页的移动方向移动到inactive_list的尾部(tail),进而将该不活跃的文件页释放掉。
继续参见图1B,示例性的,在一些可能的情况中,如果inactive_list中的某个文件页在释放前,被再次访问了,则可以通过activate_page() ,将该文件页从inactive_list中调整到活跃链表(active_list)的头部(head),即从active_list的头部,将inactive_list中的该文件页添加到active_list。
继续参见图1B,示例性的,active_list中的文件页将按照active_list中文件页的移动方向移动到active_list的尾部(tail),这样便可以获取到需要的文件页。
继续参见图1B,示例性的,对于active_list中最近最少使用的内存页,可以先移动到inactive_list,然后基于上述移动和释放的逻辑,实现在inactive_list和active_list之间的移动,以及从inactive_list的尾部的释放。
以进程启动过程中要获取的内存页为文件页为例。参见图1C,示例性的,在LRU_ACTIVE_FILE中当前存放的是文件页1~文件页4,LRU_INACTIVE_FILE中当前存放的是文件页5~文件页8的情况下,如果进程启动过程中获取的文件页为文件页8,即执行的是步骤①。
继续参见图1C,示例性的,由于文件页8位于LRU_INACTIVE_FILE中,因此需通过activate_page()将文件页8从LRU_INACTIVE_FILE移动到LRU_ACTIVE_FILE,即执行步骤②。
继续参见图1C,示例性的,由于LRU_ACTIVE_FILE也遵循先进先出的访问机制,因此想要读取移动到LRU_ACTIVE_FILE中的文件页8,需要将先进入LRU_ACTIVE_FILE的其他文件页移动到LRU_ACTIVE_FILE。即,执行步骤③,依次将活跃链表中的文件页1~文件页4,从到LRU_ACTIVE_FILE的头部,经LRU_INACTIVE_FILE的尾部,移动到LRU_INACTIVE_FILE中。
参见图1D,示例性的,如果在将文件页1~文件页4从到LRU_ACTIVE_FILE的头部,经LRU_INACTIVE_FILE的尾部,移动到LRU_INACTIVE_FILE的过程中,系统内存不足,需要回收内存时,则可以从LRU_INACTIVE_FILE的尾部,将最近最少使用的文件页释放,如图1D中的文件页5,即执行步骤④。
继续参见图1D,在将LRU_ACTIVE_FILE中,位于文件页8前的所有文件页都移出,即将文件页8移动到LRU_ACTIVE_FILE的尾部后,便可以执行步骤⑤,从LRU_ACTIVE_FILE中读取出文件页8。
示例性的,如果文件页5因为系统内存不足时触发的内存回收被回收被释放后,紧接着再次被访问到,就需要重新将文件页5读入内存,具体为直接将文件页5添到LRU_ACTIVE_FILE。即,发生缺页中断,而缺页中断的发生,会导致内存出现抖动,即内存颠簸现象。
如果同一文件页频繁的被释放和重新读入,就会重复出现缺页中断,即可能导致持续的内存颠簸。本实施例中,将文件页第一次出现的缺页中断称为page fault,将该文件页被释放/回收后再次读入时造成的缺页中断称为refault。
由于,文件页的读入和释放都需要占有IO带宽、CPU资源,以及电量。因此,持续的内存颠簸将增大IO带宽、CPU资源和电量的消耗。
此外,在系统内存不足,导致被频繁访问的文件页不断被释放,而后(这预设时间内)重新读入的场景中,会导致程序无法立即读取到需要的文件页,需要等待需要的文件页被重新读入内存,进入影响程序的执行,如电子设备的用户界面将因为等待不能及时更新。通俗的说,电子设备的用户界面可能会因此出现卡顿现象。比如,用户开启游戏应用的过程中,需要使用相机拍摄照片。此时,用户将游戏应用切换到后台运行,在前台启动相机应用,如果相机应用刚启动,用户立马将后台运行的游戏应用切换回了前台进行操作,操作后又快速将其切换到后台,然后将相机应用切换到前台。这种频繁的前后台切换,可能造成active_list和inactive_list中的内存页(文件页、匿名页)不断被释放、重新读取,进而导致严重的内存颠簸,使得用户在切换到相机应用或者游戏应用的过程中,对应的用户界面出现卡顿,严重影响用户使用体验。
关于上述所说的因为缺页中断导致的内存颠簸的衡量,目前是基于refaultdistance算法实现。但是,在目前的实现方案中,refault distance算法衡量的是一个固定时间段的内存颠簸,得到的refault值是单调递增的。因此,基于refault值实现的内存回收,经常会存在错误回收的情况。
为了更好的理解,以下结合实例进行具体说明。
示例性的,假设固定时间段,如10s内,refault值的实际变换趋势如图2所示。在一些可能的实现方式中,当电子设备采用原生refault distance算法,确定refault值(后续称为:原生refault值),衡量内存颠簸时,可以是通过将这10s内某一时刻对应的原生refault值与预设的第一目标refault值、第二目标refault值进行比较,进而在该时刻对应的原生refault值大于,或等于第一目标refault值时,触发内存回收操作。以及,在该时刻对应的原生refault值大于或等于第二目标refault值时,触发内存回收。
示例性的,在另一些可能的实现方式中,当电子设备采用原生refault distance算法,确定refault值(后续称为:原生refault值),衡量内存颠簸时,还可以是通过确定这10s内对应的平均refault值,进而将平均refault值与预设的第一目标refault值、第二目标refault值进行比较。相应地,在平均refault值大于,或等于第一目标refault值时,触发内存回收操作。以及,在平均refault值大于或等于第二目标refault值时,触发内存回收。
由于图2中呈现的实际refault值在10秒内是不断递增的,虽然增长趋势不同。但基于原生refault distance算法确定的原生refault值,从整体上来说都是单调递增的。因此,基于原生refault distance算法,对图2所示实际情况的衡量结果,实质上如图3所示。这就导致,实际情况中,如图2中T1~T3时刻refault值本来递增不明显,但是由于基于原生refault distance算法确定的原生refault是一直单调递增的,因此在图3中,T1~T3时刻refault值相对T0~T1又增大了,此时就可能存在大于或等于第一目标refault值,甚至大于或等于第二目标refault值的情况,进而在原本无需进行内存回收的场景下,触发了内存回收。以及在无需进行内存回收的情况下,进行了内存回收。即,造成了错误的回收,进而影响了用户的正常使用,使得用户体验较差。
有鉴于此,本申请提供了一种内存颠簸的衡量方法,旨在将固定的时间段划分成多个不均等的时间片,通过统计不均等时间片(不同阶段)对应的refault值的变化来衡量内存当前的压力状态,从而准确的检测出该时间段中内存颠簸的发生,进而合理的调整内存回收算法中的相关参数,如swappiness参数、scan_type类型、trim_mode选择等,更加合理的进行内存回收操作,以降低错误回收的情况发生。
具体而言,基于本申请提供的内存颠簸的衡量方法,在一些可能的实现方式中,可以[T0, T1, T2,…,T(n)]的时间粒度,将整个时间段(10s),划分成1~T0, T2~T0,...,T(n)~T(n-1)等多个不均等的时间片。
此外,需要说明的是,在本实施例中,划分出的时间片的时长呈递增分布,但相邻两个时间片质检的时间差又非等差数列。即,划分出的时间片,从整体来说,时间差的分布为一个不断增长的过程,但是,每次增长的比例又非一个等差数列。
具体地,在实际应用中,划分的不均等时间片满足如下条件即可,对具体的时间粒度不做要求。
(T1-T0)<(T2-T1)<…<T(n)-T(n-1)
((T2-T1) – (T1-T0)) != ((T3-T2) – (T2-T1))
基于此可知,(T(n-1)-2T(n-2) +T(n-3)) != (T(n) – 2T(n-1)+T(n-2))。
按照上述划分原则,本实施例以6个时间粒度,划分10s这一时间段为例,如图2所示。在时间应用中,划分粒度的数量可以根据业务需要确定,并不局限于6个。
通过图2可以看出,在T1~T0这一时间片,基于refault distance算法确定的该时间片的refault值(后续称为:第一时间片refault值)呈递增趋势;在T2~T0这一时间片,基于refault distance算法确定的该时间片的refault值(后续称为:第二时间片refault值)增幅是下降的,即是呈递减趋势;在T3~T0这一时间片,基于refault distance算法确定的该时间片的refault值(后续称为:第三时间片refault值)增幅依旧是下降的,即是呈递减趋势;在T4~T0这一时间片,基于refault distance算法确定的该时间片的refault值(后续称为:第四时间片refault值)增幅是上升的,即是呈增趋势;在T5~T0这一时间片,基于refault distance算法确定的该时间片的refault值(后续称为:第五时间片refault值)增幅是上升的,即是呈增趋势。
基于上述对10s内的5个不均等时间片对应的refault值,可以将图2示出的10s内的refault值变换趋势转换为图4所示样式。
参见图4示出的10s内,基于不均等时间片确定的refault值变化趋势的曲线图可知,在这10s内,refault值的变化趋势并非如图3所示的单调递增,而是在T1~T0这一时间片内递增,在T2~T0这一时间片内先递增(T1~T0),再递减(T2~T1),在T3~T0这一时间片先递增(T1~T0),再持续递减(T2~T1,T3~T2),在T4~T0这一时间片先递增(T1~T0),再持续递减(T2~T1,T3~T2),再递增(T4~T3),在T5~T0这一时间片先递增(T1~T0),再持续递减(T2~T1,T3~T2),再持续递增(T4~T3,T5~T4)。即,在10s内,refault值先增大,然后降低,降低一段时间后,又重新递增。基于这一变化趋势可知,在T3~T0这段时间内,refault值只在T1~T0这一时间片提高,T3~T1这段时间马上降低了。故而可以确定,T1~T0这一时间片对应的refault值的提高是瞬时的,即T3~T0这一阶段出现的内存颠簸是瞬时的。因此针对此阶段发生的内存颠簸可以不做处理,即无需利用内存回收算法对内存进行回收。
继续参见图4,示例性的,在T5~T0这一时间片中,T0时刻refault值就很高,随着时间的推移,在T4时刻,T5时刻,refault值仍在持续提高。因此,可以确定T5~T0这一阶段,内存压力持续增大,内存颠簸也较为严重。故而,为了缓解内存颠簸现象,就需要触发内存回收操作。
由此,在本实施例中,根据业务需要,通过将一段较长的时间段,以不同的时间粒度划分为多个不均等,但时间差呈递增趋势的时间片,然后在基于不均等的时间片对应的refault值来衡量整个时间段内refault值的变化趋势,进而精准的确定不同阶段的内存压力,以更好的衡量该时间段内的内存颠簸究竟是瞬时的还是持续出现的,进而合理调整内存回收算法涉及的相关参数,以在合适的时机触发内存回收操作,从而减少了错误回收的情况发生。
此外,需要说明的时,关于划分固定的长时间段的时间粒度,可以根据当前电子设备内核要求的内存供给时延和PSI(Pressure Stall Information,一种评估系统资源压力的方法)确定。
示例性的,在一些可能的实现方式中,可以根据内存供给时延,确定第一个时间粒度。后续的时间粒度,则可以考虑与PSI对应的时间粒度做部分重叠。其余多的时间粒度,则可以基于上述不均等条件进行设置。
需要说明的是,内存供给时延与当前电子设备的刷新率有关,通常第一个时间粒度会小于当前电子设备对应的内存供给时延。
例如,对于120Hz刷新率的电子设备,其内存供给时延约8ms。对于8ms的内存供给时延,第一个时间粒度可以设置为5ms。
还例如,对于90Hz刷新率的电子设备,其内存供给时延约11ms。对于11ms的内存供给时延,第一个时间粒度可以设置为8ms。
还例如,对于60Hz刷新率的电子设备,其内存供给时延约16ms。对于16ms的内存供给时延,第一个时间粒度可以设置为13ms。
具体到本实施例中,以电子设备对应的内存供给时延为8ms,PSI对应的时间有300ms,5s为例。上述将10s划分为5个时间片时采用的6个时间粒度可以是:T0=5ms,T1=100ms,T2=300ms,T3=1s,T4=5s,T5=10s。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
基于上述描述,图5示出了实现本申请提供的内存颠簸的衡量方法时,涉及的功能模块/单元/接口之间具体交互的示例性时序图。在一些可能的情况下,可以设置一个定时器(函数),并将该定时器的定时时长设置为上述所说的第一个时间粒度,即最小的时间粒度(通常小于当前电子设备要求的内存供给时延)。
关于对定时器对应的定时时间的设置,以及定时器的启动,可以是在电子设备启动后、进程启动时等完成。
基于上述对定时器的设置,电子设备在实现本实施例提供的内存颠簸的衡量方法时,便可以参考下述对步骤101至步骤108的描述,实现对内存颠簸/内存压力的衡量,进而合理调整内存回收算法中涉及的相关参数,以在合适的场合触发内存回收。
101,定时器检测是否到达设定的定时时间。
具体地,若到达定时时间,则执行步骤102;否则,继续检测是否到达设定的定时时间。
102,在到达定时时间时,定时器通知查询单元获取当前时刻的内存信息。
需要说明的是,此处所说的内存信息可为上述实施例中所说的存放内存页的各链表的存储情况。
此外,关于本实施例中所说的查询单元,也可以理解为一个功能函数。其主要目的是用于在定时器达到设定的定时时间时,调用虚拟内存统计接口获取当前时刻的内存信息。
103,查询单元调用虚拟内存统计接口获取当前时刻的内存信息。
具体地,虚拟内存统计接口,即vmstat(VirtualMeomoryStatistics),是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。
具体到本实施例中,通过虚拟内存统计接口读取的是系统的/proc/vmstat信息,这其中就包括了本实施例所需的内存信息。
此外,还需要说明的是,如果内核主干合入了每一个内存管理分组(memorycgroup,memcg)中与确定refault值相关的信息,则虚拟内存统计接口还可以读取对应的每一个memcg中与确定refault值相关的信息。
104,虚拟内存统计接口项时间片refault值处理单元上报当前获取到的内存信息。
应当理解地,时间片refault值处理单元仅仅是为表示其是用于按照不均等时间片确定不同时间片对应的refault值(后续称为时间片refault值),进而根据不均等的时间片对应的时间片refault值确定内存压力、内存颠簸的。在实际应用中,可以命名为任何名称,封装成各种形式的功能函数,本申请对此不作限制。
105,时间片refault值处理单元将虚拟内存统计接口上报的内存信息,按照时间戳的先后顺序添加到对应的队列。
可理解地,为定时器设置的定时时间为最小的时间粒度,因此每个该时间粒度的时长,就会获取一次内存信息。而划分的不均等时间片通常大于该时间粒度对应的时长,因此需要对多次获取到的内存信息进行汇总,然后在基于内存回收算法,如refaultdistance算法,对该时间片对应的内存信息进行分析处理,才可以得到该时间片对应的refault值(后续称为:时间片refault值)。故而,虚拟内存统计接口上报的内存信息,需要先按照其获取时的系统时间(时间戳),顺序添加到对应的队列中,等到队列中存储够对应时间片的内存信息时,再从队列中取出处理。
106,时间片refault值处理单元按照划分的时间片,从队列中获取对应时间片的内存信息,并基于内存回收算法确定该时间片对应的时间片refault值。
为了便于说明,以下结合图6所示的实例进行说明。
参见图6,示例性的,以定时器设定的定时时长为5ms为例,即定时器每隔5ms通知查询单元调用虚拟内存统计接口获取一次内存信息。
继续参见图6,示例性的,以定时器启动时对应的时间为0ms为例,则第一次触发获取内存消息的时间为5ms,即虚拟内存统计接口上报给时间片refault值处理单元的第一个内存信息(图6中的内存信息1)便是5ms时刻的内存信息。相应地,第二次触发获取内存消息的时间便为10ms;第三次触发获取内存消息的时间便为15ms。
继续参见图6,示例性的,每隔5ms上报给时间片refault值处理单元的内存信息,将按序从对头添加到队列中。
仍以上述划分10s的时间段使用的时间粒度为5ms、100ms、300ms、1s、5s、10s为例。则第一个时间片对应的内存信息为(100ms-5ms)时间区域内的内存信息。基于此,在第100ms时获取的内存信息(n+1)添加到队列中后,时间片refault值处理单元将从该队列中取出内存信息1~内存信息(n+1),然后便可以基于内存回收算法确定该时间片对应的时间片refault值。
相应地,在第105ms获取的内存信息(n+2)上报给时间片refault值处理单元后,时间片refault值处理单元便可以继续将内存信息(n+2)添加到该队列,进而在该队列中缓存了第(300ms-100ms)时间区域内的内存信息时,便可以再次取出。
107,时间片refault值处理单元根据不均等的时间片分别对应的时间片refault值,确定内存压力、内存颠簸。
具体可以如图4所示,即根据不均等的时间片可以得到固定时间段内refarul值的变化趋势,从而更好的确定内存压力和内存颠簸,即得到精准的衡量结果。
108,时间片refault值处理单元根据衡量结果,通过参数修改接口,调整内存回收算法的相关参数。
示例性的,在一些可能的实现方式中,参数修改接口,例如可以是post_refault接口。其可以将确定的指示需要进行内存回收的时间片refault值传输给对应的功能模块/函数,例如管理内存回收算法或者运行内存回收算法的功能模块。进而由该功能模块根据当前接收到的参数信息,动态的调整内存回收算法的相关参数。
示例性的,关于调整的相关参数,例如可以包括swappiness参数、scan_type类型、trim_mode选择、触发回收的refault值等。
关于上述相关参数在内存回收中所起的作用,可以参见refault distant算法的相关文献,此处不再赘述。
由此,在本申请实施例提供的内存颠簸的衡量方法中,基于不均等时间片来确定不同阶段refault值,进而可以更好的衡量出不同阶段内存的压力状态,以及内存颠簸情况,从而基于衡量结果动态调整内存回收算法涉及的相关参数,更好的适用于实际的使用场景,有效降低了错误的内存回收发生,保证了用户使用体验。
此外,可以理解地是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
为了更好的理解本申请实施例提供的技术方案,在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例适用于的电子设备的硬件结构和软件架构进行说明。
关于本申请实施例适用于的电子设备,例如可以是手机、平板电脑、智能手表、PC设备等,此处不再一一列举,本实施例对此不作限制。为了便于说明,本实施例以手机为例进行说明。
参见图7,手机100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentification module,SIM)卡接口195等。
其中,处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器(Modem),图形处理器(graphicsprocessing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,nPU)等,此处不再一一列举,本申请对此不作限制。
具体到本申请提供的技术方案中,主要由处理器包括的控制器与内核、应用程序框架层中新增的内存回收控制模块实现对内存的回收。在该实现方式中,控制器可以看作是手机100的神经中枢和指挥中心,其可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
此外,还需要说明的,关于包括上述处理单元的处理器110,在一些实现方式中,不同的处理单元可以是独立的器件。即,每一个处理单元都可以看作为一个处理器。在另一些实现方式中,不同的处理单元也可以集成在一个或多个处理器中。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
此外,处理器110还可以包括一个或多个接口。其中,接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等,此处不再一一列举,本申请对此不作限制。
此外,处理器110中还可以设置存储器,用于存储指令和数据。在一些实现方式中,处理器110中的存储器为高速缓冲存储器(在实际应用中可以表示为内存,如图1A所示)。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。但是,通过上述描述可知,由于内存的空间优先,因此其内构建的用于存储内存页的链表大小有效,能够存放的内存页有效,这就会导致链表中内存页的丢弃和重新读入,进而导致内存颠簸。
继续参见图7,外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
继续参见图7,内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行手机100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能,以及本申请实施例中所说的立体声录制功能等)等。存储数据区可存储手机100使用过程中所创建的数据(比如基于本申请实施例提供的技术方案录制的立体声的音频数据)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
具体到本申请提供的技术方案中,存放在内存中各链表中的内存页,可以是从内部存储器中读取的,也可以是从外部存储器读取的,本申请对此不作限制。
继续参见图7,充电管理模块140用于从充电器接收充电输入,电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实现方式中,电源管理模块141也可以设置于处理器110中。在另一些实现方式中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
继续参见图7,手机100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
继续参见图7,移动通信模块150可以提供应用在手机100上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块160可以提供应用在手机100上的包括无线局域网(wireless local area networks,WLAn)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GnSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,nFC),红外技术(infrared,IR)等无线通信的解决方案。
继续参见图7,音频模块170可以包括扬声器170A,受话器170B,麦克风170C,耳机接口170D等。示例性的,手机100可以通过应用处理器和音频模块170中的扬声器170A,受话器170B,麦克风170C,耳机接口170D等实现音频功能。例如录音录像功能。
应当理解地是,上述说明仅是为了更好地理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
此外,在一些实现方式中,传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等,此处不再一一列举,本申请对此不作限制。
关于手机100的硬件结构就介绍到此,应当理解地是,图7所示手机100仅是一个范例,在具体实现中,手机100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图7中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
为了更好地理解图7所示手机100的软件结构,以下对手机100的软件结构进行说明。在对手机100的软件结构进行说明之前,首先对手机100的软件系统可以采用的架构进行说明。
具体的,在实际应用中,手机100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。
此外,可理解地,目前主流的电子设备使用的软件系统包括但不限于Windows系统、Android系统和iOS系统。为了便于说明,本申请实施例以分层架构的Android系统为例,示例性说明手机100的软件结构。
此外,后续关于本申请实施例提供的内存颠簸的衡量方法,在具体实现中同样适用于其他系统。
参见图8,为本申请实施例的手机100的软件结构框图。
如图8所示,手机100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实现方式中,将Android系统分为五层,从上至下分别为属于应用部分的应用层/应用程序层(Applications),属于核心部分的框架层/应用程序框架层(Application Framework,FWK)、运行时(Runtime)和系统库,属于底层部分的硬件抽象层(Hardware Abstract Layer,HAL)、Linux内核(Linux Kernel)层。
其中,应用层可以包括一系列应用程序包。如图8所示,应用程序包可以包括相机、游戏、视频、直播等应用程序,此处不再一一列举,本申请对此不作限制。
其中,框架层可以为应用层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。在一些实现方式中,这些编程接口和编程框架可以描述为函数。如图8所示,框架层可以包括内容提供器、窗口管理器、资源管理器、内存回收控制模块等函数,此处不再一一列举,本申请对此不作限制。
具体到本申请提供的技术方案中,内存回收控制模块用于基于本申请提供的内存颠簸的衡量方法,确定固定时间段内,不同时间片对应的refault值,进而更好的确定该时间段内,不同阶段(不同时间片)的内存压力/内存颠簸情况,从而根据实际情况,合理的调整内存回收算法涉及的相关参数,进而在正确的场合下实现对内存的回收,以减少错误回收的情况发生。
关于内存回收控制模块实现本申请的内存颠簸的衡量方法的具体细节,可以参见上述实施例的描述,此处不再赘述。
此外,需要说明的是,在一些可能的情况中,内存回收控制模块实现的功能也可以集成在内核层,由内核实现。也就是说,图5中示出的功能模块/单元/函数/接口,如定时器、查询单元、时间片refault值处理单元可以集成在FWK的内存回收控制模块中,也可以集成在内核中,而虚拟内存统计接口和参数修改接口则可以由集成上述功能模块/单元/函数/接口的内存回收控制模块或内核进行调用。为了便于描述,本申请以集成在FWK层为例。
此外,在实际应用中,上述个功能模块也可以表示为服务、框架,如内存回收控制服务、内存回收控制框架等,本实施例对此不作限制。
此外,还需要说明的,上述位于框架层中的窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
此外,还需要说明的,上述位于框架层中的内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等,此处不再一一列举,本申请对此不作限制。
此外,还需要说明的,上述位于框架层中的资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等,此处不再一一列举,本申请对此不作限制。
继续参见图8,示例性的,运行时,具体为安卓运行时(Android Runtime)可包括核心库和虚拟机,主要负责安卓系统的调度和管理。
其中,核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用层和框架层运行在虚拟机中。虚拟机将应用层和框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
继续参见图8,示例性的,系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维(3D)图形处理库(例如:OpenGL ES),二维(2D)图形引擎(例如:SGL)等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式播放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PnG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
此外,可理解地,上述所说的2D图形引擎是2D绘图的绘图引擎。
继续参见图8,示例性的,HAL层是位于操作系统内核(内核层)与硬件电路之间的接口层,其目的在于将FWK与内核隔离,以使Android不至于过度依赖内核,从而使得FWK的开发可在不考虑驱动程序的前提下进行。
继续参见图8,示例性的,HAL层中可以包括各种接口,如音视频接口、GPS接口、通话接口、WiFi接口等,此处不再一一列举,本申请对此不作限制。
继续参见图8,示例性的,Android系统中的内核层是硬件和软件之间的层。内核层可包括各种进程/线程,电源管理、各种驱动等。示例性的,在应用程序启动时,内核会调用对应的进程从CPU中内存的链表中获取对应的内存页,并通过FWK中的内存回收控制模块衡量内存压力、内存颠簸,进而合理调整内存回收算法中涉及的相关参数,以在合适的场合触发内存回收。
关于手机100的软件结构就介绍到此,可以理解地是,图7示出的软件结构中的层以及各层中包含的部件,并不构成对手机100的具体限定。在本申请另一些实施例中,手机100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不做限定。
此外,需要说明的,在实际的应用场景中由电子设备实现的上述各实施例提供的内存颠簸的衡量方法,也可以由电子设备中包括的一种芯片系统来执行,其中,该芯片系统可以包括处理器。该芯片系统可以与存储器耦合,使得该芯片系统运行时调用该存储器中存储的计算机程序,实现上述电子设备执行的步骤。其中,该芯片系统中的处理器可以是应用处理器也可以是非应用处理器的处理器。
另外,本申请实施例还提供一种计算机可读存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的内存颠簸的衡量方法。
另外,本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在电子设备上运行时,使得电子设备执行上述相关步骤,以实现上述实施例中的内存颠簸的衡量方法。
另外,本申请的实施例还提供一种芯片(也可以是组件或模块),该芯片可包括一个或多个处理电路和一个或多个收发管脚;其中,所述收发管脚和所述处理电路通过内部连接通路互相通信,所述处理电路执行上述相关方法步骤实现上述实施例中的内存颠簸的衡量方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
此外,通过上述描述可知,本申请实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细地说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (13)

1.一种内存颠簸的衡量方法,其特征在于,应用于电子设备,所述方法包括:
根据设定的n个时间粒度,对第一时间段进行时间片划分,得到M个时间片;其中,所述M个时间片为不均等的时间片,且时间差为非等差数列;n为大于2的整数,M=n-1;
根据设定的时间间隔,每隔所述时间间隔获取一次当前时刻的内存信息;
基于内存回收算法,对每一时间片内的内存信息进行分析处理,确定每一时间片对应的refault值;
根据所述M个时间片各自对应的refault值,衡量所述第一时间段内refault值的变化趋势,所述refault值的变化趋势体现了所述第一时间段内动态变化的refault值;
根据所述第一时间段内refault值的变化趋势,确定所述第一时间段内,不同阶段的内存颠簸程度;
根据所述第一时间段内,不同阶段的内存颠簸程度,衡量所述第一时间段内的内存颠簸是瞬时的,还是持续出现的;
对于所述第一时间段内的内存颠簸是瞬时的情况,调整所述内存回收算法的参数信息为不触发内存回收的参数信息;
对于所述第一时间段内的内存颠簸是持续出现的情况,调整所述内存回收算法的参数信息为触发内存回收的参数信息。
2.根据权利要求1所述的方法,其特征在于,所述n个时间粒度根据所述电子设备对应的内存供给时延和PSI机制确定。
3.根据权利要求2所述的方法,其特征在于,所述n个时间粒度中的第一个时间粒度根据所述内存供给时延确定,除所述第一个时间粒度的M个时间粒度根据所述PSI机制确定。
4.根据权利要求3所述的方法,其特征在于,所述第一个时间粒度小于所述内存供给时延。
5.根据权利要求4所述的方法,其特征在于,所述内存供给时延根据所述电子设备的刷新率确定。
6.根据权利要求5所述的方法,其特征在于,所述第一时间段的时长为10s,所述n为6;
在所述电子设备的内存供给时延为8ms时,所述PSI机制对应的时间粒度包括300ms和5ms时,第一时间粒度为5ms,第二个时间粒度为100ms,第三个时间粒度为300ms,第四个时间粒度为1s,第五个时间粒度为5s,第六个时间粒度为10s。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述时间间隔为所述n个时间粒度中的第一个时间粒度。
8.根据权利要求1至6任一项所述的方法,其特征在于,所述M个时间片满足下述公式:
(T(n-1)-2T(n-2) +T(n-3)) != (T(n) – 2T(n-1)+T(n-2))。
9.根据权利要求1至6任一项所述的方法,其特征在于,所述第一时间段中M个时间片整体的时间差分布呈递增趋势。
10.根据权利要求1至6任一项所述的方法,其特征在于,所述根据设定的时间间隔,每隔所述时间间隔获取一次当前时刻的内存信息,包括:
根据设定的时间间隔,每隔所述时间间隔获取一次当前时刻的内存信息,并根据当前时刻为所述内存信息添加对应的时间戳;
按照所述时间戳的先后顺序,缓存获取到的每一所述内存信息。
11.根据权利要求10所述的方法,其特征在于,所述基于内存回收算法,对每一时间片内的内存信息进行分析处理,确定每一时间片对应的refault值,包括:
按照划分的时间片,获取缓存的每一时间片内的内存信息;
基于内存回收算法,对每一时间片内的内存信息进行分析处理,确定每一时间片对应的refault值。
12.一种电子设备,其特征在于,所述电子设备包括:存储器和处理器,所述存储器和所述处理器耦合;所述存储器存储有程序指令,所述程序指令由所述处理器执行时,使得所述电子设备执行如权利要求1至11任意一项所述的内存颠簸的衡量方法。
13.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至11任意一项所述的内存颠簸的衡量方法。
CN202311029252.2A 2023-08-16 2023-08-16 内存颠簸的衡量方法、设备及存储介质 Active CN116755951B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311029252.2A CN116755951B (zh) 2023-08-16 2023-08-16 内存颠簸的衡量方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311029252.2A CN116755951B (zh) 2023-08-16 2023-08-16 内存颠簸的衡量方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN116755951A CN116755951A (zh) 2023-09-15
CN116755951B true CN116755951B (zh) 2024-03-08

Family

ID=87949982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311029252.2A Active CN116755951B (zh) 2023-08-16 2023-08-16 内存颠簸的衡量方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116755951B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970862A (zh) * 2017-04-11 2017-07-21 武汉斗鱼网络科技有限公司 一种内存抖动自动化测试方法及装置
CN110704313A (zh) * 2019-09-25 2020-01-17 北京宝兰德软件股份有限公司 Java虚拟机内存泄漏检测方法及装置
CN110908923A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 内存回收方法及装置
CN111880991A (zh) * 2020-07-23 2020-11-03 Oppo广东移动通信有限公司 内存优化方法、装置、电子设备及计算机可读存储介质
CN115114071A (zh) * 2022-06-30 2022-09-27 重庆长安汽车股份有限公司 一种内存分析方法、装置、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016097812A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970862A (zh) * 2017-04-11 2017-07-21 武汉斗鱼网络科技有限公司 一种内存抖动自动化测试方法及装置
CN110908923A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 内存回收方法及装置
CN110704313A (zh) * 2019-09-25 2020-01-17 北京宝兰德软件股份有限公司 Java虚拟机内存泄漏检测方法及装置
CN111880991A (zh) * 2020-07-23 2020-11-03 Oppo广东移动通信有限公司 内存优化方法、装置、电子设备及计算机可读存储介质
CN115114071A (zh) * 2022-06-30 2022-09-27 重庆长安汽车股份有限公司 一种内存分析方法、装置、设备及介质

Also Published As

Publication number Publication date
CN116755951A (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
CN110609645B (zh) 一种基于垂直同步信号的控制方法及电子设备
CN110502294B (zh) 数据处理的方法、装置及电子设备
CN115292052B (zh) 内存回收方法、电子设备及计算机可读存储介质
CN111443957B (zh) 针对应用卡顿的处理方法、装置和电子设备
CN115016706B (zh) 一种线程的调度方法及电子设备
CN116089096B (zh) 负载资源调度方法及电子设备
CN116048933B (zh) 一种流畅度检测方法
CN113641634B (zh) 一种日志流量控制的方法以及电子设备
CN115016631B (zh) 进程调度方法和终端设备
WO2022068477A1 (zh) 一种事件处理方法及设备
CN112231077B (zh) 应用的调度方法及电子设备
CN116755951B (zh) 内存颠簸的衡量方法、设备及存储介质
CN116126744B (zh) 一种内存回收方法、装置及终端设备
CN117632400A (zh) 任务调度方法、电子设备及计算机可读存储介质
CN118043772A (zh) 绘制方法及电子设备
CN116414337A (zh) 帧率切换方法及装置
CN116916093B (zh) 识别卡顿的方法、电子设备及存储介质
CN116089320B (zh) 垃圾回收方法和相关装置
CN116684521B (zh) 音频处理方法、设备及存储介质
CN117076284B (zh) 页面加载时长的检测方法、设备及存储介质
WO2024098871A9 (zh) 数据处理方法、设备及存储介质
WO2024098871A1 (zh) 数据处理方法、设备及存储介质
CN117097883B (zh) 一种丢帧故障原因确定方法、电子设备和存储介质
WO2024139864A1 (zh) 程序存储位置的调整方法及相关装置
CN115902766B (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