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

系统控制方法、装置及计算机设备与流程

2022-12-06 20:21:31 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种系统控制方法、装置及计算机设备。


背景技术:

2.计算机设备内的安卓(android)等运行系统包括图像系统surfaceflinger,负责合成各个应用程序的图层(layer),应用程序(application,简称app)会排程缓冲队列(enqueuebuffer)至surfaceflinger,surfaceflinger用layer方式来代表此应用界面appsurface。enqueue buffer当应用程序有新的画面要更新,会透过enqueue buffer,最终会通知layer有画面更新。在此过程中,所涉及的瞬时帧率是指两帧帧率间隔时间,然后再换算成帧率。例如,两帧帧率间隔时间16.6ms,帧率为60fps。移动平均moving average为一种时间序列统计方法,利用滑动窗口方式计算其平均值,适合用在瞬时帧率统计计算。系统框架的相关频率设置不合理时,系统出现掉帧,影响应用程序的图层合成流程。
3.可见,现有的系统存在缺少掉帧检测方案影响系统应用程序正常合成图层的技术问题。


技术实现要素:

4.为了解决上述技术问题,本技术实施例提供了一种系统控制方法、装置及计算机设备。
5.第一方面,本技术实施例提供了一种系统控制方法,所述方法包括:
6.计算系统合成图层的预估帧率;
7.根据所述预估帧率获取下一帧图层的预估合成时刻;
8.根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧;
9.在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率。
10.根据本公开的一种具体实施方式,所述计算系统合成图层的预估帧率的步骤,包括:
11.计算当前时刻的瞬时帧率;
12.根据所述瞬时帧率和图层合成周期,计算初步帧率;
13.根据所述初步帧率和系统处理器运行参数,计算最终的预估帧率。
14.根据本公开的一种具体实施方式,所述计算当前时刻的瞬时帧率的步骤,包括:
15.获取当前时刻之前的连续多帧历史图层的实际合成时刻和期望合成时刻;
16.将各历史图层的期望合成时刻减去各实际合成时刻,作为对应历史图层的容错周期;
17.将全部历史图层的容错周期加权求和,并根据各历史图层的实际合成时刻计算所述瞬时帧率。
18.根据本公开的一种具体实施方式,所述根据所述初步帧率和系统处理器运行参
数,计算最终的预估帧率的步骤,包括:
19.获取系统的处理器运行时间;
20.若所述系统的处理器运行时间增加,则将所述初步帧率加上第一波动帧率作为最终的预估帧率;
21.若所述系统的处理器运行时间减少,则将所述初步帧率减去第二波动帧率作为最终的预估帧率。
22.根据本公开的一种具体实施方式,所述根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧的步骤,包括:
23.监控在所述预估合成时刻,所述系统是否发起合成图层线程;
24.在所述系统未在所述预估合成时刻发起合成图层线程的情况下,确定出现掉帧。
25.根据本公开的一种具体实施方式,所述根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧的步骤,包括:
26.根据所述预估合成时刻和图层合成周期,获取预估结束时刻;
27.监控所述系统在预估结束时刻前是否发起合成图层线程;
28.在所述系统未在预估结束时刻前发起合成图层线程的情况下,确定出现掉帧。
29.根据本公开的一种具体实施方式,所述在系统合成下一帧图层时出现掉帧的情况下,调整系统的显示控制频率的步骤,包括:
30.在连续出现n次掉帧的情况下,调整系统的显示控制频率,其中,n为大于1的正整数。
31.根据本公开的一种具体实施方式,所述在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率的步骤,包括:
32.在所述系统合成下一帧图层时出现掉帧的情况下,判断是否满足预设限制条件,其中,所述预设限制条件包括系统中央处理器运行时间为0、图像处理器忙碌状态、缓冲队列的数量不为0中的至少一种;
33.在满足所述预设限制条件的情况下,不调整所述系统的显示控制频率;
34.在不满足所述预设限制条件的情况下,调整所述系统的显示控制频率。
35.根据本公开的一种具体实施方式,所述调整所述系统的显示控制频率的步骤,包括以下至少一种:
36.提升所述系统的中央处理器频率、内存频率或者图像处理器频率;
37.控制所述系统的中央处理器切换为不同算力的处理器核;
38.提升所述系统的输入输出频率。
39.根据本公开的一种具体实施方式,所述计算系统合成图层的预估帧率的步骤之后,所述方法还包括:
40.判断所述预估帧率是否大于所述系统的屏幕更新率;
41.若所述预估帧率大于所述系统的屏幕更新率,将所述预估帧率的值替换为所述屏幕更新率的值。
42.第二方面,本技术实施例提供了系统控制装置,包括:
43.计算模块,用于计算系统合成图层的预估帧率;
44.获取模块,用于根据所述预估帧率获取下一帧图层的预估合成时刻;
45.判断模块,用于根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧;
46.调整模块,用于在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率。
47.根据本公开的一种具体实施方式,所述计算模块用于:
48.计算当前时刻的瞬时帧率;
49.根据所述瞬时帧率和图层合成周期,计算初步帧率;
50.根据所述初步帧率和系统处理器运行参数,计算最终的预估帧率。
51.根据本公开的一种具体实施方式,所述计算模块用于:
52.获取当前时刻之前的连续多帧历史图层的实际合成时刻和期望合成时刻;
53.将各历史图层的期望合成时刻减去各实际合成时刻,作为对应历史图层的容错周期;
54.将全部历史图层的容错周期加权求和,并根据各历史图层的实际合成时刻计算所述瞬时帧率。
55.根据本公开的一种具体实施方式,所述计算模块用于:
56.获取系统的处理器运行时间;
57.若所述系统的处理器运行时间增加,则将所述初步帧率加上第一波动帧率作为最终的预估帧率;
58.若所述系统的处理器运行时间减少,则将所述初步帧率减去第二波动帧率作为最终的预估帧率。
59.根据本公开的一种具体实施方式,所述判断模块用于:
60.监控在所述预估合成时刻,所述系统是否发起合成图层线程;
61.在所述系统未在所述预估合成时刻发起合成图层线程的情况下,确定出现掉帧。
62.根据本公开的一种具体实施方式,所述判断模块用于:
63.根据所述预估合成时刻和图层合成周期,获取预估结束时刻;
64.监控所述系统在预估结束时刻前是否发起合成图层线程;
65.在所述系统未在预估结束时刻前发起合成图层线程的情况下,确定出现掉帧。
66.根据本公开的一种具体实施方式,所述调整模块用于:
67.在连续出现n次掉帧的情况下,调整系统的显示控制频率,其中,n为大于1的正整数。
68.根据本公开的一种具体实施方式,所述调整模块用于:
69.在所述系统合成下一帧图层时出现掉帧的情况下,判断是否满足预设限制条件,其中,所述预设限制条件包括系统中央处理器运行时间为0、图像处理器忙碌状态、缓冲队列的数量不为0中的至少一种;
70.在满足所述预设限制条件的情况下,不调整所述系统的显示控制频率;
71.在不满足所述预设限制条件的情况下,调整所述系统的显示控制频率。
72.根据本公开的一种具体实施方式,所述调整模块用于执行以下至少一种:
73.提升所述系统的中央处理器频率、内存频率或者图像处理器频率;
74.控制所述系统的中央处理器切换为不同算力的处理器核;
75.提升所述系统的输入输出频率。
76.根据本公开的一种具体实施方式,所述判断模块还用于:
77.判断所述预估帧率是否大于所述系统的屏幕更新率;
78.若所述预估帧率大于所述系统的屏幕更新率,将所述预估帧率的值替换为所述屏幕更新率的值。
79.第三方面,本技术实施例提供了一种计算机设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行第一方面中任一项所述的系统控制方法。
80.第四方面,本技术实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行第一方面中任一项所述的系统控制方法。
81.上述本技术提供的系统控制方法、装置及计算机设备,首先计算系统合成图层的预估帧率,根据所述预估帧率获取下一帧图层的预估合成时刻,然后根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧,最后在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率。这样,能根据预估帧率及时检测到可能出现的掉帧情况并进行性能调整,以避免应用程序内图层的合成延误,优化应用程序的运行流程。
附图说明
82.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对本技术保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
83.图1示出了本技术实施例提供的一种系统控制方法的流程示意图;
84.图2示出了本技术实施例提供的系统控制方法所涉及的掉帧过程示意图;
85.图3示出了本技术实施例提供的系统控制方法所涉及的调整过程示意图;
86.图4示出了本技术实施例提供的系统控制装置的模块框图;
87.图5示出了本技术实施例提供的一种计算机设备的硬件结构图。
具体实施方式
88.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。
89.通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
90.在下文中,可在本技术的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
91.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示
相对重要性。
92.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本技术的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本技术的各种实施例中被清楚地限定。
93.surfaceflinger为android系统的图像系统,负责合成各个应用程序(application,简称app)的图层(layer)。
94.图层可以是应用程序的图层,最后会交给surfaceflinger作合成。应用程序会排程缓冲队列(enqueue buffer)至surfaceflinger。surfaceflinger用图层方式来代表此应用界面app surface)。
95.当应用程序有新的画面要更新,会透过排程缓冲队列,最终会通知图层有画面更新。
96.瞬时帧率是指两帧帧率间隔时间,然后再换算成帧率。例如,间隔16.6ms,换算成帧率为60fps。
97.移动平均(moving average)为一种时间序列统计方法,利用滑动窗口方式计算其平均值,适合用在瞬时帧率统计计算。
98.每帧间隔的中央处理器(central processing unit,简称cpu)运行时间,是指透过kernel/proc/《pid》/schedstat等参数,去计算当下两帧间隔的cpu运行时间。
99.sampling fps,是指以每单位(cycle)时间作帧率数目的取样。例如当以一秒取样,则得到的取样数即每秒帧率fps。
100.frame prober为主动式探帧,为一工作程式线程(worker thread),根据目前预估帧率,用来判定下一帧是否可能掉帧,并进行性能提升策略。
101.检测潜在掉帧,是指根据surfaceflinger的合成时间,来判断下一帧来时是否有潜在掉帧,并做标记印log至systrace中方便除错,其中,systrace为一种android性能除错工具。
102.frameestimator负责处理新的enqueue buffer进来的时间,计算预估帧率,判定是否潜在掉帧,及主动注册frame prober。
103.实施例1
104.参见图1,为本技术实施例提供了一种系统控制方法的流程示意图。如图1所示,所述方法主要包括以下步骤:
105.s101,计算系统合成图层的预估帧率;
106.本实施例提供的系统控制方法,用于控制系统在运行应用程序进行图层合成时是否出现掉帧,以及在出现掉帧时及时进行性能提升控制。此处所指系统可以为计算机设备内运行的安卓系统、ios系统等,涉及场景为应用程序合成显示新图层的场景。
107.应用程序合成新图层一般呈周期性或者固定频次,可以对计算机合成图层的频率进行预估,得到的值即为预估帧率。预估帧率是基于实时的瞬时帧率,利用移动平均、cpu运行时间、sampling fps等相关参数,计算出的另一个帧率。预估帧率通常并不一定等于瞬时帧率,它是由参考上述相关参数所得。
108.根据本公开的一种具体实施方式,所述计算系统合成图层的预估帧率的步骤之后,所述方法还包括:
109.判断所述预估帧率是否大于所述系统的屏幕更新率;
110.若所述预估帧率大于所述系统的屏幕更新率,将所述预估帧率的值替换为所述屏幕更新率的值。
111.预估帧率最大值只能到屏幕更新率(vsync refresh rate)。例如,屏幕更新率60fps,app更新率90fps,而实际效果只有60fps。
112.s102,根据所述预估帧率获取下一帧图层的预估合成时刻;
113.依据上述步骤计算得到预估帧率后,根据当前时刻的线程状态来获取下一帧图层的预估合成时刻,即预测下一帧图层在哪个时刻合成。根据预估帧率可以先计算出预估帧间间隔,再根据当前蚀刻对应的当前帧图层的合成节点,计算下一帧图层的预估合成时刻。
114.s103,根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧;
115.计算下一帧图层的预估合成时刻后,即可利用系统计时器对该下一帧图层的预估合成时刻进行监控,监控在该预估合成时刻是否合成该下一帧图层。若监控到在该预估合成时刻合成该下一帧图层,则判定未出现掉帧,否则判定为出现掉帧。
116.如图2所示,为一帧图像frame到显示display的时序图。在实际运行时,此frame是否掉帧有两个监测途径:
117.1、从app层面进行监测,app层面认定掉帧,但实质可能是尚在等待合成显示,即认定掉帧但其实可能没掉帧;
118.2、从surfaceflinger层面监测,无frame合成即认定为出现掉帧。
119.在实际进行探测时,可以综合这两个层面来确定是否确实出现掉帧,以及调整用于解决掉帧问题的性能调整策略。
120.在最晚app3结束时刻产生的frame,最终需要通过surfaceflinger合成,但是app不知道surfaceflinger合成的时间,而且若是在app3的最后结束时刻才合成frame,app会默认为出现掉帧。
121.由此可知,app视角和surfaceflinger视角进行掉帧监测的时机和依据是不同的,app认为预定时间内合成frame即掉帧,surfaceflinger认为在下一个surfaceflinger之前能够合成frame都算没有掉帧,在判断时可以综合判断掉帧情况。
122.s104,在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率。
123.依据上述步骤所述,在判定系统合成下一帧图层时出现掉帧,通常是系统的显示控制频率不能满足应用程序的图层合成要求,需要进行提频等策略。此处的显示控制频率为显示控制所涉及的相关参数,例如cpu频率、gpu频率提升等的性能提升策略。
124.性能提升策略即为当发现有潜在掉帧情形,则进行性能提升策略,这些性能提升策略可以包括但不限于:进行cpu、双倍速率同步动态随机存储器(double datarate,简称ddr)或图像处理器(graphics processing unit,简称gpu)频率提升,cpu大小核搬移,i/o性能提升等。目前来说性能提升都以cpu相关性能提升策略为主。cpu性能提升策略很多种,例如调整此任务负载量(task loading volume),调整cpu使用率(utilization)工具包等。当然,其他对提频会有帮助的性能提升策略都可以包括在内。
125.在针对掉帧进行性能提升时,可以调整显示控制相关的全部参数,也可以只调节其中部分频率,以提升显示控制频率与图层合成的需求匹配程度即可。
126.上述本技术提供的系统控制方法,首先计算系统合成图层的预估帧率,根据所述预估帧率判断系统合成下一帧图层时是否出现掉帧,在所述系统合成下一帧图层时出现掉帧时调整所述系统的显示控制频率。这样,能根据预估帧率及时检测到可能出现的掉帧情况并进行提频调整,以避免应用程序内图层的合成延误,优化应用程序的运行流程。针对应用程序的帧率改善,包含游戏、一般应用程序、视频等等,在可接受的功耗,经由性能提升使应用程序帧率提升,用户有更好的体验,且有效降低系统功耗。
127.下面将结合图2和图3所示的示例,具体解释系统控制方法的实施流程。如下所示:
128.1.app呼叫enqueue buffer至surfaceflinger的layer,surfaceflinger会询问当前的layer是否有新画面合成任务,有新画面合成任务就合成新画面,没有就结束流程。
129.2.在layer中会有一个frameestimator对象,负责计算预估帧率,从frameproberpool得到frameprober工作程式线程(worker thread),frameestimator会根据目前得到的预估帧率来设计时器(timer)送至frameprober,由frameprober负责性能提升逻辑判断。
130.3.frameprober目前性能提升操作通常设定为最多3次,第一次的时间点为预估帧率的计时器(timer)时间,第二次与第三次的时间则为vsync timer时间。
131.4.性能提升有不同的boost策略,提升cpu频率,搬移不同处理程度的cpu核心等对app性能提升有帮助的boost策略都行。
132.5.在前述操作的基础上,还可以有扩展性操作,具体为,系统内核(kernel)收集目前各layer的帧率数据,已作后续的掉帧判断或者性能提升判断,或是交给app的其他模块使用。
133.由上述过程可以进一步确定,此基于android surfaceflinger作应用程序layer fps的提升的主要步骤包括:预估帧率的计算,及性能提升策略,下面将分别针对这两个主要步骤进行具体阐述。
134.根据本公开的一种具体实施方式,所述计算系统合成图层的预估帧率的步骤,可以具体包括:
135.计算当前时刻的瞬时帧率;
136.根据所述瞬时帧率和图层合成周期,计算初步帧率;
137.根据所述初步帧率和系统处理器运行参数,计算最终的预估帧率。
138.具体的,所述计算当前时刻的瞬时帧率的步骤,包括:
139.获取当前时刻之前的连续多帧历史图层的实际合成时刻和期望合成时刻;
140.将各历史图层的期望合成时刻减去各实际合成时刻,作为对应历史图层的容错周期;
141.将全部历史图层的容错周期加权求和,并根据各历史图层的实际合成时刻计算所述瞬时帧率。
142.根据本公开的一种具体实施方式,所述根据所述初步帧率和系统处理器运行参数,计算最终的预估帧率的步骤,包括:
143.获取系统的处理器运行时间;
144.若所述系统的处理器运行时间增加,则将所述初步帧率加上第一波动帧率作为最终的预估帧率;
145.若所述系统的处理器运行时间减少,则将所述初步帧率减去第二波动帧率作为最终的预估帧率。
146.使用滑动窗口去计算瞬时帧率和cpu运行时间的两者的滑动平均。当cpu运行时间忽然从短到长,则可以推定目前应用程序需要多的cpu计算,则这时预估帧率要根据平均瞬时帧率再作提升,当cpu运行时间忽然从长到短,则可以推定目前应用程序不须多的cpu计算,则可以将平均瞬时帧率再作下降。因而得到初步的预估帧率,在预估帧率的计算上也要额外考虑去除outliner及数值平滑化处理。
147.另外初步的预估帧率可以额外参考sampling fps(250ms),进行计算得到最终的预估帧率。
148.根据本公开的一种具体实施方式,所述根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧的步骤,包括:
149.监控在所述预估合成时刻,所述系统是否发起合成图层线程;
150.在所述系统未在所述预估合成时刻发起合成图层线程的情况下,确定出现掉帧。
151.此过程为上述以应用程序角度判断是否出现掉帧,即在预估合成时刻判断是否发起合成图层线程,未发起则确定出现掉帧。
152.根据本公开的一种具体实施方式,所述根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧的步骤,包括:
153.根据所述预估合成时刻和图层合成周期,获取预估结束时刻;
154.监控所述系统在预估结束时刻前是否发起合成图层线程;
155.在所述系统未在预估结束时刻前发起合成图层线程的情况下,确定出现掉帧。
156.此过程为上述以应用程序角度判断是否出现掉帧,即在预估合成时刻判断是否发起合成图层线程,未发起则确定出现掉帧。
157.根据本公开的另一种具体实施方式,所述在系统合成下一帧图层时出现掉帧的情况下,调整系统的显示控制频率的步骤,包括:
158.在连续出现n次掉帧的情况下,调整系统的显示控制频率,其中,n为大于1的正整数。
159.限定连续出现一定次数掉帧后,再调整系统的显示控制频率,避免错误识别掉帧时导致的频繁调频或者错误调频。
160.根据本公开的一种具体实施方式,所述在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率的步骤,包括:
161.在所述系统合成下一帧图层时出现掉帧的情况下,判断是否满足预设限制条件,其中,所述预设限制条件包括系统中央处理器运行时间为0、图像处理器忙碌状态、缓冲队列的数量不为0中的至少一种;
162.在满足所述预设限制条件的情况下,不调整所述系统的显示控制频率;
163.在不满足所述预设限制条件的情况下,调整所述系统的显示控制频率。
164.根据现有应用程序状况判定是否cpu bound、gpu bound、io bound、ddr等等状况,由这些状况给予系统相应的性能提升策略,性能提升策略的目标以可接受的功耗并给予更
佳的fps。
165.prober性能提升判断如下:
166.1.判断当前cpu运行时间是否为0,为0则判断为idle状况,不作任何性能提升;
167.2.判断有无gpu bound现象,gpu会出现很多功耗,当gpubusy状态也不能进行性能提升;
168.3.判断当前surfaceflinger compose的缓冲队列(enqueuebuffer)的数量,数量为0代表无数据可以compose;数量》0代表还有数据可以compose。当有数据可以compose也可以不用boost或boost微调,为0的话就trigger boost。
169.具体实施时,所述调整所述系统的显示控制频率的步骤,包括以下至少一种:
170.提升所述系统的中央处理器频率、内存频率或者图像处理器频率;
171.控制所述系统的中央处理器切换为不同算力的处理器核;
172.提升所述系统的输入输出频率。
173.下面将结合一个具体示例解释系统控制的具体过程。
174.a.当应用程序app为每一个帧呼叫enqueuebuffer至surfaceflinger时,收集每帧数据如下:
175.1.得到app呼叫enqueuebuffer function的当前时间;
176.2.得到app期望的enqueuebuffer时间点,可能等于、早于、晚于呼叫appfunction时间点;
177.3.app现在运行时间,从kernel得到sum_exec_runtime,即/proc/《pid》/schedstat,sum_exec_runtime,这是累计时间;
178.4.得到目前softewarevsync period;
179.5.得到下一个surfaceflinger compose时间点。
180.基于vsync period和compose时间点以及enqueue timestamp,可以推估下一个enqueuetimstamp的下一个compose时间点。
181.b.按照如上述部分a所述的步骤,收集每个frame资料,进行如下计算。首先,假设有5帧近来5frames;
182.ex.a1,a2,a3,a4,a5=》app呼叫function的当前时间;
183.e1,e2,e3,e4,e5=》app期望合成时间;
184.c1,c2,c3,c4,c5=》cpu运行时间,use accumulative cpuexec time;for each a,e=》t1=max(a1,e1),t2=max(a2,e2)

to calculate t1

t5;
185.t1,t2,t3,t4,t5=》(t2

t1),(t3

t2),(t4

t3),(t5-t4),瞬时帧率=instant fps;
186.c1,c2,c3,c4,c5=》c2

c1,c3-c2,c4-c3,c5-c4 calculate each instant fpscpu execution time。
187.进一步计算采样fps,假设采样率为250ms且一秒fps即可得到。
188.b部分通过a部分收集的数据计算得到以下数值:
189.1、instant fps;
190.2、cpuexecution time for each frame interval
191.3、sampling fps。
192.c.从b部分得到的(1)瞬时帧率(2)每帧间隔cpu运行时间,对这两个数值作移动平均,来计算平均瞬时帧率及平均cpu运行时间moving average。
193.ex.assume sliding window=3;
194.t1,t2,t3,t4,t5,t6=》enqueue timestamp;
195.c1,c2,c3,c4,c5,c6=》cpuexection time;
196.when t6 comes=》can get average from t2 to t5、t2-t3、t3-t4、t4-t5 interval from sliding window。
197.current t6,get t5-t6 instant fps。计算几个间隔值,再求平均t1-t2 interval removed(slinging window=3);
198.c6 comes=》can get average from c2 to c5,c2-c3,c3-c4,c4-c5 interval from sliding window;
199.current c6,i can get c5-c6 cpu execution time;
200.c1-c2 interval removed。
201.计算预估帧率:
202.1.sliding window average instant fps;
203.2.get current intantfps;
204.3.sampling fps取样帧率;
205.4.sliding window average cpu exec time;
206.5get current cpu exec time。
207.利用加权平均方式:
208.计算sliding window average fps、current instant fps和sampling fps得到measured fps。
209.利用加权平均计算sliding window average cpu exec time,和current cpu exec time加权的权重,可以根据历史数据设定权重,可以设定特色加权值,也可以用相同或者不同的加权值。
210.此外,cpu运行时间是个额外参数去额外对目前的估计帧率再加一个额外数值,目的是要解决当cpu运行时间忽然变长的状况。以一个sliding window窗口,实际面上每帧的cpu运行时间要非常的相似,而不会剧烈变动,如果忽然运行时间变长有可能是要做的事变多了,或是每帧的间距缩短了,fps要忽然变快了,因次可提前知道fps忽然变快的事件:
211.measured fps=weight average fps(上述的加权平均帧率) cpu extra fps(=》define your function that can convert cpu exec time to fps)。
212.d.预估帧率的计算,从c中收集了如下数据:
213.1.当前瞬时帧率;
214.2.滑动平均瞬时帧率;
215.3.当前cpu运行时间;
216.4.滑动平均cpu运行时间;
217.5.sampling fps。
218.用这几种数值计算出每帧进来的预估帧率,进而推估未来下一帧应该什么时间到达。当预估帧率大于目前vsync值,则此时预估帧率为vsync。考虑了app负载状况,和app指
定调整fps,例如使用者选择从30fps to60fps,或60fps到30fps,或是因为系统状况导致fps下降。算出来的预估帧率,还需要去到达某个阀值,才会真正去应用这个预估帧率来预估下一帧的来到时间。分成2个场景:预估fps上升和预估fps下降。
219.预估帧率快快上升,能快速反应当前app的高帧率状况;
220.但预估帧率下降时就相对下降的慢,慢点反应app低帧率状况。
221.由低到高帧率反应时间可能在15frame时间就反映完,由高到低帧率反映时间可能在30frame时间就反映完。不论低到高或高到低都是以内插的方式计算,ex 60-》30fps可能30frame时间反映而成为预估帧率30fps,但如果60-》55fps可能只需要8frame反映时间。
222.e.有了预估帧率,可以作如下计算:
223.1.计算下一帧该到的时间;
224.2.计算下一帧的compose时间,经由得到目前帧的下一个compose时间和vsync时长得到,即图2所示的预估结束时间deadline潜在掉帧时间。
225.f.prober是个timer负责boost逻辑的动作,设定prober boost最多只有3次,假设下一帧需boost 3次才能进来。第一次timer等于预估帧率的时间,第二次和第三次都是vsyn period timer。
226.g.app会呼叫enqueue buffer function但可能呼叫的过程中,都不是同一个thread呼叫,大部分的app都会是同一个,但少数会不同ex.camera,则这时会将某些状态重设,但fps历史信息还是会保留,因为换另一个线程enqueue不会剧烈改变fps。
227.综上所述,本技术提供的系统控制方法,基于android surfaceflinger上进行应用程序帧率的改善,利用移动平均、cpu运行时间、sampling fps计算出应用程序的预估帧率,使用主动式探帧侦测下一帧状况,并适时进行性能提升策略。
228.实施例2
229.参见图4,为本技术实施例提供的一种系统控制装置400的模块框图。如图4所示,所述系统控制装置400包括:
230.计算模块401,用于计算系统合成图层的预估帧率;
231.获取模块402,用于根据所述预估帧率获取下一帧图层的预估合成时刻;
232.判断模块403,用于根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧;
233.调整模块404,用于在所述系统合成下一帧图层时出现掉帧的情况下,调整所述系统的显示控制频率。
234.根据本公开的一种具体实施方式,所述计算模块401用于:
235.计算当前时刻的瞬时帧率;
236.根据所述瞬时帧率和图层合成周期,计算初步帧率;
237.根据所述初步帧率和系统处理器运行参数,计算最终的预估帧率。
238.根据本公开的一种具体实施方式,所述计算模块401用于:
239.获取当前时刻之前的连续多帧历史图层的实际合成时刻和期望合成时刻;
240.将各历史图层的期望合成时刻减去各实际合成时刻,作为对应历史图层的容错周期;
241.将全部历史图层的容错周期加权求和,并根据各历史图层的实际合成时刻计算所
述瞬时帧率。
242.根据本公开的一种具体实施方式,所述计算模块401用于:
243.获取系统的处理器运行时间;
244.若所述系统的处理器运行时间增加,则将所述初步帧率加上第一波动帧率作为最终的预估帧率;
245.若所述系统的处理器运行时间减少,则将所述初步帧率减去第二波动帧率作为最终的预估帧率。
246.根据本公开的一种具体实施方式,所述判断模块403用于:
247.监控在所述预估合成时刻,所述系统是否发起合成图层线程;
248.在所述系统未在所述预估合成时刻发起合成图层线程的情况下,确定出现掉帧。
249.根据本公开的一种具体实施方式,所述判断模块403用于:
250.根据所述预估合成时刻和图层合成周期,获取预估结束时刻;
251.监控所述系统在预估结束时刻前是否发起合成图层线程;
252.在所述系统未在预估结束时刻前发起合成图层线程的情况下,确定出现掉帧。
253.根据本公开的一种具体实施方式,所述调整模块404用于:
254.在连续出现n次掉帧的情况下,调整系统的显示控制频率,其中,n为大于1的正整数。
255.根据本公开的一种具体实施方式,所述调整模块404用于:
256.在所述系统合成下一帧图层时出现掉帧的情况下,判断是否满足预设限制条件,其中,所述预设限制条件包括系统中央处理器运行时间为0、图像处理器忙碌状态、缓冲队列的数量不为0中的至少一种;
257.在满足所述预设限制条件的情况下,不调整所述系统的显示控制频率;
258.在不满足所述预设限制条件的情况下,调整所述系统的显示控制频率。
259.根据本公开的一种具体实施方式,所述调整模块404用于执行以下至少一种:
260.提升所述系统的中央处理器频率、内存频率或者图像处理器频率;
261.控制所述系统的中央处理器切换为不同算力的处理器核;
262.提升所述系统的输入输出频率。
263.根据本公开的一种具体实施方式,所述判断模块403还用于:
264.判断所述预估帧率是否大于所述系统的屏幕更新率;
265.若所述预估帧率大于所述系统的屏幕更新率,将所述预估帧率的值替换为所述屏幕更新率的值。
266.此外,本技术实施例提供了一种计算机设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行上述实施例所述的系统控制方法。
267.另外,本技术实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行上述实施例所述的系统控制方法。
268.上述本技术提供的系统控制装置、计算机设备及计算机可读存储介质,首先计算系统合成图层的预估帧率,根据所述预估帧率获取下一帧图层的预估合成时刻,然后根据所述预估合成时刻判断系统合成下一帧图层时是否出现掉帧,最后在所述系统合成下一帧
图层时出现掉帧的情况下,调整所述系统的显示控制频率。这样,能根据预估帧率及时检测到可能出现的掉帧情况并进行提频调整,以避免应用程序内图层的合成延误,优化应用程序的运行流程。所提供的系统控制装置、计算机设备及计算机可读存储介质的具体实施过程,可以参见上述图1所示的实施例提供的系统控制方法的具体实施过程,在此不再一一赘述。
269.具体的,如图5所示,为实现本技术各个实施例的一种计算机设备,该计算机设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本技术实施例中,计算机设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
270.应理解的是,本技术实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
271.计算机设备通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
272.音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与计算机设备500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。
273.输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(graphics processing unit,简称gpu)5041和麦克风5042,图形处理器5041对在视频捕获模式或图像捕获模式中由图像捕获计算机设备(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以视频播放在显示单元506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
274.计算机设备500还包括至少一种传感器505,至少包含上述实施例提到的气压计。此外,传感器505还可以为其他传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在计算机设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别计算机设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度
计、红外线传感器等,在此不再赘述。
275.显示单元506用于视频播放由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶视频播放器(liquid crystal display,简称lcd)、有机发光二极管(organic light-emitting diode,简称oled)等形式来配置显示面板5061。
276.用户输入单元507可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测计算机设备和触摸控制器两个部分。其中,触摸检测计算机设备检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测计算机设备上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
277.进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。虽然在图5中,触控面板5071与显示面板5061是作为两个独立的部件来实现计算机设备的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现计算机设备的输入和输出功能,具体此处不做限定。
278.接口单元508为外部计算机设备与计算机设备500连接的接口。例如,外部计算机设备可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的计算机设备的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元508可以用于接收来自外部计算机设备的输入(例如,数据信息、电力等等)并且将接收到的输入传输到计算机设备500内的一个或多个元件或者可以用于在计算机设备500和外部计算机设备之间传输数据。
279.存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
280.处理器510是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
281.计算机设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源
511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
282.另外,计算机设备500包括一些未示出的功能模块,在此不再赘述。
283.所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行上述的系统控制方法。
284.另外,本技术实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行上述的系统控制方法。
285.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
286.另外,在本技术各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
287.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
288.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献