一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

调整内存配置参数的方法和装置与流程

2022-03-14 02:41:30 来源:中国专利 TAG:


1.本技术涉及存储领域,具体涉及一种调整内存配置参数的方法和装置。


背景技术:

2.内存(memory)是计算机的组成部分,当计算机运行程序时,与程序运行相关的数据可以暂时存放在内存中,等待处理器调用。若内存资源不足,则处理器可能需要等待一段时间才能获取程序运行所需的数据,因此,内存资源的使用情况与程序运行情况(如启动速率)存在关联关系。
3.为了提高内存资源利用率,需要对内存资源的使用情况进行管理。一种管理内存资源的方法是基于可用内存的大小调整内存,例如,当可用内存小于预设值时,可以提高额外空闲内存配置参数(extra_free_kbytes)的数值,以促使内存管理模块更积极地回收内存来满足程序对内存资源的需求。但是,应用该方法管理内存的效果仍有待提高。


技术实现要素:

4.本技术提供了一种调整内存配置参数的方法、装置、计算机程序产品和计算机可读存储介质,能够提高内存管理的效果。
5.第一方面,提供了一种调整内存的方法,包括:获取多个资源压力,所述多个资源压力用于指示对内存压缩的多种需求;根据所述多个资源压力调整内存配置参数,所述内存配置参数与所述多个资源压力之间存在预设的对应关系。
6.资源压力例如是处理器压力、输入输出(input/output,i/o)压力、内存回收压力或内存交换空间压力,其中,处理器压力、i/o压力和内存回收压力可以分别由处理器压力失速信息(pressure stall information,psi)、i/o psi和内存回收psi确定,内存交换空间压力可以由可用交换空间(swap free)和/或匿名页数量(anon pages)确定。不同类型的资源压力对应的内存压缩需求不同,基于一种类型的资源压力调整内存配置参数难以实现系统性能最优,例如,当swap free较低并且anon pages较低时,说明zram(内存压缩技术的一个示例)的使用收益不大,此时应当减小内存交换参数(swappiness)的值,以减小zram的使用频率;但是,若i/o压力较大,则应当增大swappiness的值,较大的swappiness能够提高zram的使用频率,从而回收更多的anon pages,避免内存不足时文件页(file page)被过量回收导致的i/o压力持续增大,其中,i/o压力持续增大原因是:file page过量回收会导致缓存(cache)命中率下降,file page需要再次从磁盘读入cache,重读入(refault)i/o现象增多,refault i/o会导致i/o压力持续增大;综合考虑上述两种信息,swappiness需要设置一个合适的值以平衡内存交换空间压力和i/o压力,使得系统性能最优。相比于基于一种信息调整内存,本技术提供的调整内存的方法综合考虑多种信息,能够实现系统性能最优,提高管理内存的效果。
7.可选地,所述内存配置参数包括swappiness,所述多个资源压力包括i/o压力和内存交换空间压力,所述根据所述多个资源压力调整内存配置参数,包括:当所述i/o压力减
小时,并且,当所述内存交换空间压力减小时,减小所述内存交换参数;或者,当所述i/o压力增大时,并且,当所述内存交换空间压力减小时,将所述内存交换参数调整为预设值。
8.swap free反映了zram设备的剩余容量,anon pages反映了能够输入zram设备的数据的数据量,当swap free较低和/或anon pages较低(即,内存交换空间压力较小)时,zram的使用收益不大,可以减小zram的使用频率。当i/o压力较小时,可以减小zram的使用频率以节约运算资源,综合考虑内存交换空间压力和i/o压力,可以减小swappiness的值,从而实现系统性能最优,提高管理内存的效果。
9.当swap free较低和/或anon pages较低(即,内存交换空间压力较小)时,zram的使用收益不大,可以减小zram的使用频率。当i/o压力较大时,应当增大swappiness的值,较大的swappiness能够提高zram的使用频率,从而回收更多的anon pages,避免内存不足时file page过量回收导致i/o压力持续增大。可以将swappiness设置一个合适的值(如,预设值)以平衡内存交换空间压力和i/o压力,从而实现系统性能最优,提高管理内存的效果。
10.可选地,所述内存配置参数包括swappiness,所述多个资源压力包括处理器压力和内存交换空间压力,所述根据所述多个资源压力调整内存配置参数,包括:当所述处理器压力减小时,并且,当所述内存交换空间压力增大时,增大所述swappiness。
11.处理器压力较小时,增大swappiness可以减小内存不足时缓存颠簸发生的概率,同时不会影响其他任务的运算资源需求;内存交换空间压力较大时,说明使用zram的使用收益较大,应当增大swappiness。综合考虑处理器压力和内存交换空间压力,可以增大swappiness的值以提高zram的使用频率,从而实现系统性能最优,提高管理内存的效果。
12.可选地,所述内存配置参数包括swappiness,所述多个资源压力包括处理器压力和i/o压力,所述根据所述多个资源压力调整内存配置参数,包括:当所述i/o压力减小时,并且,当所述处理器压力增大时,减小所述内存交换参数;或者,当所述i/o压力增大时,并且,当所述处理器压力增大时,将所述内存交换参数调整为预设值。
13.当i/o压力较小时,可以减小zram的使用频率以节约运算资源;当处理器压力较大时,说明当前运算压力较大,应当减小swappiness以节约运算资源;综合考虑i/o压力和处理器压力,可以减小swappiness以节约运算资源,从而实现系统性能最优,提高管理内存的效果。
14.当i/o压力较大时,应当增大swappiness的值,较大的swappiness能够提高zram的使用频率,从而回收更多的anon pages,避免内存不足时file page过量回收导致i/o压力持续增大;当处理器压力较大时,应当减小swappiness以节约运算资源;可以将swappiness设置一个合适的值(如,预设值)以平衡i/o压力和处理器压力,从而实现系统性能最优,提高管理内存的效果。
15.可选地,所述根据所述多个资源压力调整内存配置参数,包括:当场景信息指示的当前应用运行场景不符合预设场景时,根据所述多个资源压力调整所述内存配置参数。
16.场景信息例如是指示应用启动或应用切换的信息。当预设场景是应用启动场景时,应用启动场景的各种资源需求比较固定,按照预设的swappiness调整内存即可实现系统性能最优,无需再收集psi和内存交换空间压力信息进行运算,从而减小了内存调整的复杂度。
17.可选地,所述方法还包括:当内存回收压力增大时,减小额外空闲内存配置参数
(extra_free_kbytes);或者,当内存回收压力减小时,增大extra_free_kbytes。
18.extra_free_kbytes的值与内核保留的内存大小正相关,即,extra_free_kbytes的值越大,内核保留的内存越大。当内存回收压力增大时,说明当前内存回收任务较多,第三方app对内存的需求较大,可以减小extra_free_kbytes以便于为第三方app保留更多的内存;当内存回收压力减小时,说明当前内存回收任务较少,第三方app对内存的需求较小,可以增大extra_free_kbytes以便于为内核保留更多的内存。
19.可选地,所述根据所述多个资源压力调整内存配置参数,包括:当可用内存小于内存阈值时,根据所述多个资源压力调整所述内存配置参数。
20.调整内存配置参数会消耗运算资源,因此,当可用内存较大时,无需调整内存配置参数;当可用内存较小时,可以根据所述多个资源压力调整内存配置参数,从而可以在不影响应用运行的前提下节省运算资源。
21.可选地,所述内存阈值与物理内存的比值与所述物理内存的大小负相关。
22.可以根据物理内存的大小设置内存阈值的大小。终端设备的物理内存较大时,可以将内存阈值设置为一个占比较低的数值;终端设备的物理内存较小时,可以将内存阈值设置为一个占比较高的数值。
23.例如,终端设备a的物理内存为12gb,终端设备b的物理内存为6gb,终端设备a的memavailable水线可以设置为物理内存的三分之一,即4gb;终端设备b的memavailable水线可以设置为物理内存的二分之一,即3gb。这样,物理内存较大的终端设备(终端设备a)在保证充足的可用内存的同时,可以减少内存调整对运算资源的消耗;物理内存较小的终端设备(终端设备b)可以提前调整内存,减小内存不足等问题发生的概率。
24.第二方面,提供了一种调整内存的装置,包括用于执行第一方面中任一种方法的单元。该装置可以是终端设备,也可以是终端设备内的芯片。该装置可以包括输入单元和处理单元。
25.当该装置是终端设备时,该处理单元可以是处理器,该输入单元可以是触控屏、键盘、鼠标、摄像头、麦克风或其他输入设备;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法。
26.当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的处理单元,该输入单元可以是输入/输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面中的任一种方法。
27.第三方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被调整内存的装置运行时,使得该装置执行第一方面中的任一种方法。
28.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被调整内存的装置运行时,使得该装置执行第一方面中的任一种方法。
附图说明
29.图1是本技术提供的一种终端设备的硬件系统的示意图;
30.图2是本技术提供的一种终端设备的软件系统的示意图;
31.图3是本技术提供的一种调整内存的系统的示意图;
32.图4是本技术提供的psi压力注册采集模块的一种工作流程的示意图;
33.图5是本技术提供的内存信息采集模块的一种工作流程的示意图;
34.图6是本技术提供的应用场景监控模块的一种工作流程的示意图;
35.图7是本技术提供的系统压力决策模块的一种工作流程的示意图;
36.图8是本技术提供的系统压力决策模块的另一种工作流程的示意图;
37.图9是本技术提供的一种调整内存的装置的示意图;
38.图10是本技术提供的一种调整内存的电子设备的示意图。
具体实施方式
39.下面将结合附图,对本技术实施例中的技术方案进行描述。
40.图1示出了一种适用于本技术的装置的硬件结构。
41.装置100可以是手机、智慧屏、平板电脑、可穿戴电子设备、车载电子设备、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)、投影仪等等,本技术实施例对装置100的具体类型不作任何限制。
42.装置100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
43.需要说明的是,图1所示的结构并不构成对装置100的具体限定。在本技术另一些实施例中,装置100可以包括比图1所示的部件更多或更少的部件,或者,装置100可以包括图1所示的部件中某些部件的组合,或者,装置100可以包括图1所示的部件中某些部件的子部件。图1示的部件可以以硬件、软件、或软件和硬件的组合实现。
44.处理器110可以包括一个或多个处理单元。例如,处理器110可以包括以下处理单元中的至少一个:应用处理器(application processor,ap)、调制解调处理器、图形处理器(graphics processing unit,gpu)、图像信号处理器(image signal processor,isp)、控制器、视频编解码器、数字信号处理器(digital signal processor,dsp)、基带处理器、神经网络处理器(neural-network processing unit,npu)。其中,不同的处理单元可以是独立的器件,也可以是集成的器件。
45.控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行
指令的控制。
46.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
47.在一些实施例中,处理器110可以包括一个或多个接口。例如,处理器110可以包括以下接口中的至少一个:内部集成电路(inter-integrated circuit,i2c)接口、内部集成电路音频(inter-integrated circuit sound,i2s)接口、脉冲编码调制(pulse code modulation,pcm)接口、通用异步接收传输器(universal asynchronous receiver/transmitter,uart)接口、移动产业处理器接口(mobile industry processor interface,mipi)、通用输入输出(general-purpose input/output,gpio)接口、sim接口、usb接口。
48.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k、充电器、闪光灯、摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现装置100的触摸功能。
49.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
50.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。
51.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
52.mipi接口可以被用于连接处理器110与显示屏194和摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi)、显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现装置100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现装置100的显示功能。
53.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号接口,也可被配置为数据信号接口。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194、无线通信模块160、音频模块170和传感器模块180。gpio接口还可以被配置为i2c接口、i2s接口、uart接口或mipi接口。
54.usb接口130是符合usb标准规范的接口,例如可以是迷你(mini)usb接口、微型
(micro)usb接口或c型usb(usb type c)接口。usb接口130可以用于连接充电器为装置100充电,也可以用于装置100与外围设备之间传输数据,还可以用于连接耳机以通过耳机播放音频。usb接口130还可以用于连接其他装置100,例如ar设备。
55.图1所示的各模块间的连接关系只是示意性说明,并不构成对装置100的各模块间的连接关系的限定。可选地,装置100的各模块也可以采用上述实施例中多种连接方式的组合。
56.充电管理模块140用于从充电器接收电力。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的电流。在一些无线充电的实施例中,充电管理模块140可以通过装置100的无线充电线圈接收电磁波(电流路径如虚线所示)。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为装置100供电。
57.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量、电池循环次数和电池健康状态(例如,漏电、阻抗)等参数。可选地,电源管理模块141可以设置于处理器110中,或者,电源管理模块141和充电管理模块140可以设置于同一个器件中。
58.装置100的无线通信功能可以通过天线1、天线2、移动通信模块150、无线通信模块160、调制解调处理器以及基带处理器等器件实现。
59.天线1和天线2用于发射和接收电磁波信号。装置100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
60.移动通信模块150可以提供应用在装置100上的无线通信的解决方案,例如下列方案中的至少一个:第二代(2
th generation,2g)移动通信解决方案、第三代(3
th generation,3g)移动通信解决方案、第四代(4
th generation,5g)移动通信解决方案、第五代(5
th generation,5g)移动通信解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波和放大等处理,随后传送至调制解调处理器进行解调。移动通信模块150还可以放大经调制解调处理器调制后的信号,放大后的该信号经天线1转变为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
61.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(例如,扬声器170a、受话器170b)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
62.与移动通信模块150类似,无线通信模块160也可以提供应用在装置100上的无线
通信解决方案,例如下列方案中的至少一个:无线局域网(wireless local area networks,wlan)、蓝牙(bluetooth,bt)、全球导航卫星系统(global navigation satellite system,gnss)、调频(frequency modulation,fm)、近场通信(near field communication,nfc)、红外(infrared,ir)。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,并将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频和放大,该信号经天线2转变为电磁波辐射出去。
63.在一些实施例中,装置100的天线1和移动通信模块150耦合,装置100的天线2和无线通信模块160耦合。
64.装置100可以通过gpu、显示屏194以及应用处理器实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
65.显示屏194可以用于显示图像或视频。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)、有源矩阵有机发光二极体(active-matrix organic light-emitting diode,amoled)、柔性发光二极管(flex light-emitting diode,fled)、迷你发光二极管(mini light-emitting diode,mini led)、微型发光二极管(micro light-emitting diode,micro led)、微型oled(micro oled)或量子点发光二极管(quantum dot light emitting diodes,qled)。在一些实施例中,装置100可以包括1个或n个显示屏194,n为大于1的正整数。
66.装置100可以通过isp、摄像头193、视频编解码器、gpu、显示屏194以及应用处理器等实现拍摄功能。
67.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp可以对图像的噪点、亮度和色彩进行算法优化,isp还可以优化拍摄场景的曝光和色温等参数。在一些实施例中,isp可以设置在摄像头193中。
68.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的红绿蓝(red green blue,rgb),yuv等格式的图像信号。在一些实施例中,装置100可以包括1个或n个摄像头193,n为大于1的正整数。
69.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当装置100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
70.视频编解码器用于对数字视频压缩或解压缩。装置100可以支持一种或多种视频编解码器。这样,装置100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1、mpeg2、mpeg3和mpeg4。
71.npu是一种借鉴生物神经网络结构的处理器,例如借鉴人脑神经元之间传递模式
对输入信息快速处理,还可以不断地自学习。通过npu可以实现装置100的智能认知等功能,例如:图像识别、人脸识别、语音识别和文本理解。
72.外部存储器接口120可以用于连接外部存储卡,例如安全数码(secure digital,sd)卡,实现扩展装置100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
73.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能(例如,声音播放功能和图像播放功能)所需的应用程序。存储数据区可存储装置100使用过程中所创建的数据(例如,音频数据和电话本)。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如:至少一个磁盘存储器件、闪存器件和通用闪存存储器(universal flash storage,ufs)等。处理器110通过运行存储在内部存储器121的指令和/或存储在设置于处理器中的存储器的指令,执行装置100的各种处理方法。
74.装置100可以通过音频模块170、扬声器170a、受话器170b、麦克风170c、耳机接口170d以及应用处理器等实现音频功能,例如,音乐播放和录音。
75.音频模块170用于将数字音频信息转换成模拟音频信号输出,也可以用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170或者音频模块170的部分功能模块可以设置于处理器110中。
76.扬声器170a,也称为喇叭,用于将音频电信号转换为声音信号。装置100可以通过扬声器170a收听音乐或免提通话。
77.受话器170b,也称为听筒,用于将音频电信号转换成声音信号。当用户使用装置100接听电话或语音信息时,可以通过将受话器170b靠近耳朵接听语音。
78.麦克风170c,也称为话筒或传声器,用于将声音信号转换为电信号。当用户拨打电话或发送语音信息时,可以通过靠近麦克风170c发声将声音信号输入麦克风170c。装置100可以设置至少一个麦克风170c。在另一些实施例中,装置100可以设置两个麦克风170c,以实现降噪功能。在另一些实施例中,装置100还可以设置三个、四个或更多麦克风170c,以实现识别声音来源和定向录音等功能。处理器110可以对麦克风170c输出的电信号进行处理,例如,音频模块170与无线通信模块160可以通过pcm接口耦合,麦克风170c将环境声音转换为电信号(如pcm信号)后,通过pcm接口将该电信号传输至处理器110;从处理器110对该电信号进行音量分析和频率分析,确定环境声音的音量和频率。
79.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动装置100平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
80.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。压力传感器180a的种类很多,例如可以是电阻式压力传感器、电感式压力传感器或电容式压力传感器。电容式压力传感器可以是包括至少两个具有导电材料的平行板,当力作用于压力传感器180a,电极之间的电容改变,装置100根据电容的变化确定压力的强度。当触摸操作作用于显示屏194时,装置100根据压力传
感器180a检测所述触摸操作。装置100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令;当触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
81.陀螺仪传感器180b可以用于确定装置100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定装置100围绕三个轴(即,x轴、y轴和z轴)的角速度。陀螺仪传感器180b可以用于拍摄防抖。例如,当快门被按下时,陀螺仪传感器180b检测装置100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消装置100的抖动,实现防抖。陀螺仪传感器180b还可以用于导航和体感游戏等场景。
82.气压传感器180c用于测量气压。在一些实施例中,装置100通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。
83.磁传感器180d包括霍尔传感器。装置100可以利用磁传感器180d检测翻盖皮套的开合。在一些实施例中,当装置100是翻盖机时,装置100可以根据磁传感器180d检测翻盖的开合。装置100可以根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
84.加速度传感器180e可检测装置100在各个方向上(一般为x轴、y轴和z轴)加速度的大小。当装置100静止时可检测出重力的大小及方向。加速度传感器180e还可以用于识别装置100的姿态,作为横竖屏切换和计步器等应用程序的输入参数。
85.距离传感器180f用于测量距离。装置100可以通过红外或激光测量距离。在一些实施例中,例如在拍摄场景中,装置100可以利用距离传感器180f测距以实现快速对焦。
86.接近光传感器180g可以包括例如发光二极管(light-emitting diode,led)和光检测器,例如,光电二极管。led可以是红外led。装置100通过led向外发射红外光。装置100使用光电二极管检测来自附近物体的红外反射光。当检测到反射光时,装置100可以确定附近存在物体。当检测不到反射光时,装置100可以确定附近没有物体。装置100可以利用接近光传感器180g检测用户是否手持装置100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180g也可用于皮套模式或口袋模式的自动解锁与自动锁屏。
87.环境光传感器180l用于感知环境光亮度。装置100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180l也可用于拍照时自动调节白平衡。环境光传感器180l还可以与接近光传感器180g配合,检测装置100是否在口袋里,以防误触。
88.指纹传感器180h用于采集指纹。装置100可以利用采集的指纹特性实现解锁、访问应用锁、拍照和接听来电等功能。
89.温度传感器180j用于检测温度。在一些实施例中,装置100利用温度传感器180j检测的温度,执行温度处理策略。例如,当温度传感器180j上报的温度超过阈值,装置100执行降低位于温度传感器180j附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,装置100对电池142加热,以避免低温导致装置100异常关机。在其他一些实施例中,当温度低于又一阈值时,装置100对电池142的输出电压执行升压,以避免低温导致的异常关机。
90.触摸传感器180k,也称为触控器件。触摸传感器180k可以设置于显示屏194,由触
摸传感器180k与显示屏194组成触摸屏,触摸屏也称为触控屏。触摸传感器180k用于检测作用于其上或其附近的触摸操作。触摸传感器180k可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于装置100的表面,并且与显示屏194设置于不同的位置。
91.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180m也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180m获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180m获取的血压跳动信号解析心率信息,实现心率检测功能。
92.按键190包括开机键和音量键。按键190可以是机械按键,也可以是触摸式按键。装置100可以接收按键输入信号,实现于案件输入信号相关的功能。
93.马达191可以产生振动。马达191可以用于来电提示,也可以用于触摸反馈。马达191可以对作用于不同应用程序的触摸操作产生不同的振动反馈效果。对于作用于显示屏194的不同区域的触摸操作,马达191也可产生不同的振动反馈效果。不同的应用场景(例如,时间提醒、接收信息、闹钟和游戏)可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
94.指示器192可以是指示灯,可以用于指示充电状态和电量变化,也可以用于指示消息、未接来电和通知。
95.sim卡接口195用于连接sim卡。sim卡可以插入sim卡接口195实现与装置100的接触,也可以从sim卡接口195拔出实现与装置100的分离。装置100可以支持1个或n个sim卡接口,n为大于1的正整数。同一个sim卡接口195可以同时插入多张卡,所述多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容外部存储卡。装置100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,装置100采用嵌入式sim(embedded-sim,esim)卡,esim卡可以嵌在装置100中,不能和装置100分离。
96.上文详细描述了装置100的硬件系统,下面介绍装置100的软件系统。软件系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构,本技术实施例以分层架构为例,示例性地描述装置100的软件系统。
97.如图2所示,采用分层架构的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,软件系统可以分为四层,从上至下分别为应用程序层、应用程序框架层、安卓运行时(android runtime)和系统库、以及内核层。
98.应用程序层可以包括相机、图库、日历、通话、地图、导航、wlan、蓝牙、音乐、视频、短信息等应用程序。
99.应用程序框架层为应用程序层的应用程序提供应用程序编程接口(application programming interface,api)和编程框架。应用程序框架层可以包括一些预定义的函数。
100.例如,应用程序框架层包括窗口管理器、内容提供器、视图系统、电话管理器、资源管理器、通知管理器、psi压力注册采集模块、内存信息采集模块、应用场景监控模块和系统压力决策模块。
101.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏、锁定屏幕和截取屏幕。
102.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频、图像、音频、拨打和接听的电话、浏览历史和书签、以及电话簿。
103.视图系统包括可视控件,例如显示文字的控件和显示图片的控件。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成,例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
104.电话管理器用于提供装置100的通信功能,例如通话状态(接通或挂断)的管理。
105.资源管理器为应用程序提供各种资源,比如本地化字符串、图标、图片、布局文件和视频文件。
106.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于下载完成告知和消息提醒。通知管理器还可以管理以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知。通知管理器还可以管理以对话窗口形式出现在屏幕上的通知,例如在状态栏提示文本信息、发出提示音、电子设备振动以及指示灯闪烁。
107.psi压力注册采集模块用于采集各种类型的psi,如中央处理器(central processing unit,cpu)运行时间、内存回收时间和i/o等待时间;内存信息采集模块用于采集可用内存、swap free和anon pages等内存相关的信息;应用场景监控模块用于采集app启动和app切换等场景信息。
108.系统压力决策模块用于根据psi压力注册采集模块、内存信息采集模块和应用场景监控模块采集的信息做出内存调整决策。
109.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
110.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
111.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理、堆栈管理、线程管理、安全和异常的管理、以及垃圾回收等功能。
112.系统库可以包括多个功能模块,例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es)和2d图形引擎(例如:sgl)。
113.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d图层和3d图层的融合。
114.媒体库支持多种音频格式的回放和录制、多种视频格式回放和录制以及静态图像文件。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg和png。
115.三维图形处理库可以用于实现三维图形绘图、图像渲染、合成和图层处理。
116.2d图形引擎是2d绘图的绘图引擎。
117.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
118.下面结合显示拍照场景,示例性说明装置100的软件系统以及硬件系统的工作流
程。
119.当用户在触摸传感器180k上进行触摸操作时,相应的硬件中断被发送至操作系统层,操作系统层将触摸操作加工成原始输入事件,原始输入事件例如包括触摸坐标和触摸操作的时间戳等信息;随后,操作系统层识别出原始出入事件对应的控件,并通知该控件对应的应用程序(application,app)。例如,上述触摸操作为单击操作,上述控件对应的app为相机app,则相机app可以通过api调用后台服务,将控制指令传输至逻辑端口管理模块,通过逻辑端口管理模块控制摄像头193进行拍摄。
120.相机app在运行时,与相机app相关的数据可以暂时存放在内存中,等待处理器调用。若内存资源不足,则处理器可能需要等待一段时间才能获取相机app的数据,因此,内存资源的使用情况与相机app运行情况(如启动速率)存在关联关系。
121.为了提高内存资源利用率,需要对内存资源的使用情况进行管理。可以通过调节内存配置参数来管理内存资源,下面介绍适用于本技术的两种内存配置参数。
122.1、额外空闲内存配置参数(extra_free_kbytes)。
123.extra_free_kbytes的配置方式可以是/proc/sys/vm/extra_free_kbytes,其意义是在不改变最小水线(min watermark)的前提下,提高低水线(low watermark)和高水线(high watermark)的数值。
124.extra_free_kbytes的值与内核保留的内存大小正相关,即,extra_free_kbytes的值越大,内核保留的内存越大,相应地,第三方app(如相机app)可以使用的内存越小。当extra_free_kbytes的值较大时,内存整理功能kswapd/kcompactd会被更频繁的触发,内存回收功能lowmemorykiller也会被更频繁的触发,为内核保留更多的内存。当extra_free_kbytes的值较小时,第三方app能够使用更多的内存,但是内存分配时出现直接回收(direct reclaim)或者i/o阻塞的概率会增大。
125.2、内存交换参数(swappiness)。
126.swappiness的配置方式可以是/proc/sys/vm/swappiness。内核在运行时会尝试把运行时内存交换到zram,或者通过删除系统缓存中的内存页来获得更多内存,swappiness用于平衡这两种方式的使用频率。swappiness的值越大,内核就会更积极的把运行时内存交换到zram;swappiness的值越小,内核就更偏向于删除系统缓存中的内存页。
127.通过设置内存配置参数的值,可以控制内核管理内存的方式。若内存配置参数的值设置不合适,则会导致系统性能下降,例如,当swappiness的值较小时,若当前存在大量的文件读入任务,则系统会陷入缓存颠簸状态(即,内存不足导致文件页频繁重复读入释放的状态),即使当前zram有大量的剩余空间也无法利用,从而导致系统i/o高负载。
128.下面,将详细介绍本技术提供的调节内存的方法。
129.本技术提供的调节内存的方法能够应用于图3所示的系统。该系统包括psi压力注册采集模块、内存信息采集模块、应用场景监控模块和系统压力决策模块。
130.psi压力注册采集模块用于从psi群组时间采集器(psi group time collector)采集各种类型的psi,psi群组时间采集器用于统计各个分组的任务所处状态的累计时间,如cpu运行时间(cpu running time)、内存回收时间(memory reclaim time)和i/o等待时间(i/o waiting time),其中,cpu运行时间即cpu psi,反映了系统的运算压力;内存回收时间即内存回收psi,反映了系统的内存回收压力;i/o等待时间即i/o psi,反映了系统的
i/o压力。
131.例如,cpu可以处理多个任务,该多个任务包括内存回收任务,该cpu完成该多个任务所耗费的时间即cpu运行时间,其中,cpu完成内存回收任务的时间即内存回收时间。此外,上述多个任务从磁盘(disk)读出和写入所耗费的时间即i/o等待时间。
132.内存信息采集模块用于通过prof fs文件系统读取/prof/meminfo,/prof/meminfo例如是可用内存(memory available)、可用交换空间(swap free)和匿名页数量(anon pages)。
133.swap free反映了zram的剩余容量,anon pages反映了能够输入zram的数据的数据量,当swap free较低并且anon pages较低时,zram的使用收益不大,可以减小zram的使用频率;当swap free较高并且anon pages较高时,zram的使用收益较大,可以提高zram的使用频率。调整内存配置参数会消耗运算资源,因此,当可用内存(物理内存)较大时,无需调整内存配置参数;当可用内存较小时,可以对内存配置参数进行调整。
134.应用场景监控模块用于采集app启动和app切换等场景信息,例如,可以通过系统服务中的活动管理器服务(activity manager service,ams)获取场景信息。
135.系统压力决策模块可以获取压力阈值和调整参数,其中,压力阈值可以是统计psi的时间窗口大小、不同压力的上报阈值、zram空间剩余量的阈值、anon page大小的阈值等;调整参数可以是swappiness调整的上限、下限、预设值等。系统压力决策模块还可以根据压力阈值、调整参数、psi压力注册采集模块、内存信息采集模块和应用场景监控模块采集的信息做出内存调整决策。例如,可以通过proc fs文件系统调整swappiness和extra_free_kbytes。
136.下面将详细介绍psi压力注册采集模块、内存信息采集模块、应用场景监控模块和系统压力决策模块的工作流程。
137.psi压力注册采集模块可以采集多种类型的psi,例如,cpu psi、内存回收psi和i/o psi。每种类型的psi可以分为多个等级,例如,cpu psi按照不同的值可以对应高压力事件、中压力事件和低压力事件。
138.图4是一种单类型psi的采集流程。
139.psi压力注册采集模块开始工作后,可以注册内存压力监听,并设置初始压力状态为无压力。随后,psi压力注册采集模块基于epoll_wait机制等待内核上报压力事件。
140.若当前压力状态为无压力,则psi压力注册采集模块在阻塞模式中等待压力上报。随后,若等待压力上报期间收到压力事件,则psi压力注册采集模块基于压力事件设置压力;若等待压力上报期间未收到压力事件,则psi压力注册采集模块继续等待压力事件上报。
141.若当前压力状态为有压力,则psi压力注册采集模块可以基于压力上报周期设置超时时间,并判断超时前是否有压力上报。
142.若超时前有压力上报,则psi压力注册采集模块可以基于压力事件设置压力;若超时前没有压力上报,则psi压力注册采集模块可以设置压力状态为无压力。
143.需要说明的是,s401中的“当前无压力”指的是psi压力注册采集模块基于上个压力上报周期收集的信息做出的判断,s403和s404则是psi压力注册采集模块基于当前压力上报周期收集的信息做出的判断。
144.执行s403或s404后,psi压力注册采集模块可以重复执行s401。
145.对于同一类型的压力,psi压力注册采集模块只向外暴露语义最大的那个。例如,当内核向psi压力注册采集模块上报了高压力事件和低压力事件时,psi压力注册采集模块只向系统压力决策模块展示高压力事件。
146.若psi压力注册采集模块注册了多种类型的压力监听,则内核独立上报每种压力的事件。例如,psi压力注册采集模块可以注册cpu压力监听、内存回收压力监听和i/o压力监听;随后,内核向psi压力注册采集模块分别上报cpu压力事件、内存回收压力事件和i/o压力事件。
147.下面介绍一个psi压力注册采集模块工作的具体示例。
148.设置一个1s的时间窗口,在该时间窗口内,内核会不停地统计cpu处理各个任务的时间、内存回收时间和i/o等待时间。
149.以多核cpu的处理时间为例,内核收集到多核cpu的处理时间后,可以通过加权平均算法将多个cpu核的处理时间折算为单核cpu的处理时间。
150.可以预设处理时间达到400ms时cpu压力为低压力,处理时间达到500ms时cpu压力为中压力,处理时间达到600ms时cpu压力为高压力。当内核统计的cpu处理时间小于400ms时,内核不上报cpu压力事件;当内核统计的cpu处理事件大于等于400ms且小于500ms时,内核上报cpu低压力事件;当内核统计的cpu处理事件大于等于500ms且小于600ms时,内核上报cpu中压力事件;当内核统计的cpu处理事件大于等于600ms时,内核上报cpu高压力事件。
151.上述cpu压力事件上报过程中,各个压力事件是独立上报的,即,psi压力注册采集模块在一个时间窗口内可能收到多个压力事件。多个压力事件的语义大小排序为:高压力事件》中压力事件》低压力事件》无压力事件,若psi压力注册采集模块在一个时间窗口内收到多个压力事件,只需向系统压力决策模块展示语义最大的那个事件。
152.需要说明的是,无压力事件不是内核上报的事件,而是psi压力注册采集模块生成的事件。当内核在一个时间窗口内未上报任何压力事件时,psi压力注册采集模块生成无压力事件。
153.在处理时间统计过程中,由于时间窗口是持续滑动的,那么到了下一个时间窗口,所有的信息都要重新统计,内核可以按照下述方法统计下一个时间窗口的处理时间,以提高统计效率。
154.例如,时间窗口1和时间窗口2是两个相邻的时间窗口,时长均为1s;时间窗口1中cpu处理时间是800ms,时间窗口2到达300ms时内核统计的cpu处理时间为50ms,则内核可以根据公式(1)预测时间窗口2的cpu处理时间为610ms。
155.t2=(t1/t)*tn tm
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1);
156.公式(1)中,t2为预测的当前时间窗口内的cpu处理时间,t1为上一个时间窗口内的cpu处理时间,t为时间窗口的时长,tn为当前时间窗口的剩余时长,tm为当前时间窗口实际统计的cpu处理时间。
157.在上述示例中,t1=800ms,t=1s,tn=700ms,tm=50ms,将这些数字代入公式(1)可得t2=610ms。
158.图5是本技术提供的一种内存信息采集模块的工作流程的示意图。
159.内存信息采集模块开始工作后,可以通过prof fs文件系统读取/prof/meminfo,/
prof/meminfo即内存信息,/prof/meminfo可以包括memory available、swap free和anon pages,其中,swap free和anon pages是指示zram使用频率的内存信息。
160.由于调整内存配置参数会消耗运算资源,记录当前读取的内存信息后,内存信息采集模块可以根据memory available判断是否启动系统压力决策模块。当memory available低于内存阈值时,说明可用内存较少,此时启动系统压力决策模块能够取得较大的收益,可以启动启动系统压力决策模块,下文会详述系统压力决策模块根据swap free和anon pages等信息调整内存配置参数的方法;memory available高于内存阈值时,说明可用内存较多,此时启动系统压力决策模块不能取得较大的收益,内存信息采集模块可以休眠一段时间(例如2s),随后再读取/prof/meminfo。
161.可选地,内存信息采集模块可以在开始工作由注册启动场景监听,休眠后可以由应用场景(如,应用冷启动)触发进入苏醒状态,随后再读取/prof/meminfo。
162.图6是本技术提供的一种应用场景监控模块的工作流程的示意图。
163.activity启动后,应用场景监控模块可以在ams应用生命周期核心回调函数前插桩,监控应用场景。上述ams应用生命周期核心回调函数可以包括图6所示的创建函数(oncreate)、开始函数(onstart)、恢复函数(onresume)、暂停函数(onpause)、停止函数(onstop)、关闭函数(ondestroy)和重启函数(onrestart)。每种函数对应一种应用场景,通过在这些函数前插桩,应用场景监控模块能够获取各种场景信息。
164.上文详细描述了psi压力注册采集模块、内存信息采集模块和应用场景监控模块的工作流程,下面,将详细介绍系统压力决策模块的工作流程。
165.如图7所示,系统压力决策模块初始化后加载图3所示的压力阈值和调整参数,随后注册psi压力注册采集模块、内存信息采集模块和应用场景监控模块,从这三个模块分别获取psi、内存信息和场景信息。
166.当memavailable的值低于memavailable水线(图7中的虚线)时,可用内存已处于紧张状态,系统压力决策模块启动内存调整功能能够获得较大的系统收益;当memavailable的值低于memavailable水线时,可用内存处于宽松状态,系统压力决策模块继续调整内存的系统收益已不大,可以退出内存调整功能。
167.可选地,可以根据物理内存的大小设置内存阈值的大小。终端设备的物理内存较大时,可以将内存阈值设置为一个占比较低的数值;终端设备的物理内存较小时,可以将内存阈值设置为一个占比较高的数值。
168.例如,终端设备a的物理内存为12gb,终端设备b的物理内存为6gb,终端设备a的memavailable水线可以设置为物理内存的三分之一,即4gb;终端设备b的memavailable水线可以设置为物理内存的二分之一,即3gb。这样,物理内存较大的终端设备(终端设备a)在保证充足的可用内存的同时,可以减少内存调整对运算资源的消耗;物理内存较小的终端设备(终端设备b)可以提前调整内存,减小内存不足等问题发生的概率。
169.图8是系统压力决策模块的工作流程的示意图。
170.系统压力决策模块开始工作(即,初始化)后,若可用内存低于内存阈值(即,memavailable的值低于memavailable水线),则判断内存压力是否较高。
171.例如,内存回收任务所需时间(即,内存psi指示的时间)指示内存需求压力,当内存回收任务所需时间大于第三时间阈值时,说明当前内存回收任务较多,第三方app对内存
的需求较大,系统压力决策模块可以减小extra_free_kbytes以便于为第三方app保留更多的内存;当内存回收任务所需时间小于第三时间阈值时,说明当前内存回收任务较少,第三方app对内存的需求较小,系统压力决策模块可以增大extra_free_kbytes以便于为内核保留更多的内存。
172.调整extra_free_kbytes之后,系统压力决策模块可以调整swappiness。
173.系统压力决策模块首先判断当前app运行场景是否符合预设场景,若当前app运行场景符合预设场景,则系统压力决策模块可以下发预设场景对应的swappiness。例如,预设场景是应用启动场景,当前app运行场景也是应用启动场景,则系统压力决策模块可以判断当前app运行场景是否符合预设场景;应用启动场景的各种资源需求比较固定,按照预设的swappiness调整内存即可实现系统性能最优,无需再收集psi、swap free和anon pages等信息进行运算,从而减小了内存调整的复杂度。
174.若当前app运行场景不符合预设场景,则系统压力决策模块可以基于psi、swap free和anon pages等信息调整swappiness,调整方式如表1所示。
175.表1
176.i/o psicpu psiswap free&anon pagesswappinessn/a低高

低高n/a

低n/a低

高高n/a平衡值高n/a低平衡值
177.表1中,n/a表示该参数当前不适用。i/o psi与i/o压力正相关,i/o psi越大,i/o压力越大;cpu psi与运算压力正相关,cpu psi越大,运算压力越大。
178.对于表1中第一行的判断方式,当处理时间(cpu psi指示的时间)小于第二时间阈值时,说明运算压力较小,可以提高zram的使用频率来换取更大的可用内存。当swap free较高并且anon pages较高时,zram的使用收益较大,可以提高zram的使用频率。综合考虑cpu psi、anon pages和swap free,可以增大swappiness的值以提高zram的使用频率,从而实现系统性能最优,提高管理内存的效果。
179.对于表1中第二行的判断方式,当处理时间(cpu psi指示的时间)大于第二时间阈值时,说明运算压力较大,可以减小zram的使用频率以以减小运算资源需求。当i/o时间(i/o psi指示的时间)小于第一时间阈值时,说明当前i/o压力较小,对内存的需求较小,可以减小zram的使用频率,综合考虑i/o psi和cpu psi,可以减小swappiness的值以降低zram的使用频率,从而实现系统性能最优,提高管理内存的效果。
180.对于表1中第三行的判断方式,当i/o时间(i/o psi指示的时间)小于第一时间阈值时,说明当前i/o压力较小,对内存的需求较小,可以减小zram的使用频率。当swap free较低并且anon pages较低时,zram的使用收益较小,可以减小zram的使用频率。综合考虑i/o psi、anon pages和swap free,可以减小swappiness的值以降低zram的使用频率,从而实现系统性能最优,提高管理内存的效果。
181.对于表1中第四行的判断方式,当处理时间(cpu psi指示的时间)大于第二时间阈值时,说明运算压力较大,可以减小zram的使用频率以以减小运算资源需求。当i/o时间(i/
o psi指示的时间)大于第一时间阈值时,说明当前i/o压力较大,对内存的需求较大,应当增大zram的使用频率来换取更大的可用内存。综合考虑i/o psi和cpu psi,可以将swappiness设置一个合适的值(如,预设的平衡值)以平衡运算资源需求与内存需求,从而实现系统性能最优,提高管理内存的效果。
182.对于表1中第五行的判断方式,当i/o时间(i/o psi指示的时间)大于第一时间阈值时,说明当前i/o压力较大,对内存的需求较大,应当增大zram的使用频率。当swap free较低并且anon pages较低时,zram的使用收益较小,应当减小zram的使用频率。综合考虑i/o psi、swap free和anon pages,可以将swappiness设置一个合适的值(如,预设的平衡值)以平衡内存需求与zram的使用收益,从而实现系统性能最优,提高管理内存的效果。
183.上述五种调整swappiness的方式是本技术提供的一些实施例,基于上述调整思想,还可以扩展出更多的调整方式,本技术不再一一列举。此外,上述第一时间阈值、第二时间阈值可以是预设的值,如图3中系统压力决策模块获取的阈值所示。
184.若系统压力决策模块获取的psi、swap free和anon pages不满足表1所示的条件,则系统压力决策模块可以不调整swappiness。无论swappiness是否被调整,系统压力决策模块在根据表1做出判断处理之后均可以休眠一段时间,以减小运算资源和内存资源的消耗。
185.在内存为2gb、系统为emui11.0 lite的华为手机上应用上述方法后,相机app在系统高负载的情况(如,连续启动30个app)下的启动时间相比于未应用上述方法的启动时间减少了50ms,可用内存提升了80mb。
186.上述实施例中,系统压力决策模块首先调整了extra_free_kbytes,随后又调整了swappiness;在调整swappiness的过程中,系统压力决策模块首先基于应用场景调整swappiness,又基于psi、swap free和anon pages调整swappiness。需要说明的是,这些调整步骤的先后顺序是可以交换的,本技术对此不做限定。
187.例如,系统压力决策模块可以先调整swappiness再调整extra_free_kbytes;在调整swappiness的过程中,系统压力决策模块可以先基于psi、swap free和anon pages调整swappiness,再基于应用场景调整swappiness。
188.上文详细介绍了本技术提供的调整内存的方法的示例。可以理解的是,相应的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
189.本技术可以根据上述方法示例对调整内存的装置进行功能单元的划分,例如,可以将各个功能划分为各个功能单元,也可以将两个或两个以上的功能集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本技术中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
190.图9是本技术提供的一种调整内存的装置的结构示意图。该装置900包括处理单元
910和输入单元920,其中,输入单元920能够在处理单元910的控制下执行获取步骤。例如:
191.所述输入单元920用于:获取多个资源压力,所述多个资源压力用于指示对内存压缩的多种需求;
192.所述处理单元910用于:根据所述多个资源压力调整内存配置参数,所述内存配置参数与所述多个资源压力之间存在预设的对应关系。
193.可选地,所述内存配置参数包括内存交换参数,所述多个资源压力包括输入/输出压力和内存交换空间压力,所述处理单元910具体用于:当所述输入/输出压力减小时,并且,当所述内存交换空间压力减小时,减小所述内存交换参数;或者,当所述输入/输出压力增大时,并且,当所述内存交换空间压力减小时,将所述内存交换参数调整为预设值。
194.可选地,所述内存配置参数包括内存交换参数,所述多个资源压力包括处理器压力和内存交换空间压力,所述处理单元910具体用于,包括:当所述处理器压力减小时,并且,当所述内存交换空间压力增大时,增大所述内存交换参数。
195.可选地,所述内存交换空间压力的大小与匿名页数量正相关。
196.可选地,所述内存交换空间压力的大小与可用交换空间的大小正相关。
197.可选地,所述内存配置参数包括内存交换参数,所述多个资源压力包括处理器压力和输入/输出压力,所述处理单元910具体用于:当所述输入/输出压力减小时,并且,当所述处理器压力增大时,减小所述内存交换参数;或者,当所述输入/输出压力增大时,并且,当所述处理器压力增大时,将所述内存交换参数调整为预设值。
198.可选地,所述处理单元910具体用于:当场景信息指示的当前应用运行场景不符合预设场景时,根据所述多个资源压力调整所述内存配置参数。
199.可选地,所述处理单元910还用于:当内存回收压力增大时,减小额外空闲内存配置参数;或者,当内存回收压力减小时,增大额外空闲内存配置参数。
200.可选地,所述处理单元910具体用于:当可用内存小于内存阈值时,根据所述多个资源压力调整所述内存配置参数。
201.装置900执行调整内存的方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述。
202.图10示出了本技术提供的一种电子设备的结构示意图。图10中的虚线表示该单元或该模块为可选的。设备1000可用于实现上述方法实施例中描述的方法。设备1000可以是终端设备或服务器或芯片。
203.设备1000包括一个或多个处理器1001,该一个或多个处理器1001可支持设备1000实现方法实施例中的方法。处理器1001可以是通用处理器或者专用处理器。例如,处理器1001可以是中央处理器(central processing unit,cpu)、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件,如分立门、晶体管逻辑器件或分立硬件组件。
204.处理器1001可以用于对设备1000进行控制,执行软件程序,处理软件程序的数据。设备1000还可以包括通信单元1005,用以实现信号的输入(接收)和输出(发送)。
205.例如,设备1000可以是芯片,通信单元1005可以是该芯片的输入和/或输出电路,或者,通信单元1005可以是该芯片的通信接口,该芯片可以作为终端设备或服务器或其他
电子设备的组成部分。
206.又例如,设备1000可以是终端设备或服务器,通信单元1005可以是该终端设备或该服务器的收发器,或者,通信单元1005可以是该终端设备或该服务器的收发电路。
207.设备1000中可以包括一个或多个存储器1002,其上存有程序1004,程序1004可被处理器1001运行,生成指令1003,使得处理器1001根据指令1003执行上述方法实施例中描述的方法。可选地,存储器1002中还可以存储有数据。可选地,处理器1001还可以读取存储器1002中存储的数据(如表1),该数据可以与程序1004存储在相同的存储地址,该数据也可以与程序1004存储在不同的存储地址。
208.处理器1001和存储器1002可以单独设置,也可以集成在一起,例如,集成在终端设备的系统级芯片(system on chip,soc)上。
209.设备1000还可以包括天线1006。通信单元1005用于通过天线1006实现设备1000的收发功能。
210.本技术还提供了一种计算机程序产品,该计算机程序产品被处理器1001执行时实现本技术中任一方法实施例所述的方法。
211.该计算机程序产品可以存储在存储器1002中,例如是程序1004,程序1004经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器1001执行的可执行目标文件。
212.本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本技术中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
213.该计算机可读存储介质例如是存储器1002。存储器1002可以是易失性存储器或非易失性存储器,或者,存储器1002可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
214.本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
215.在本技术所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其他方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或
其他形式的连接。
216.应理解,在本技术的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术的实施例的实施过程构成任何限定。
217.另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
218.总之,以上所述仅为本技术技术方案的较佳实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献