本技术涉及资源分配,特别是涉及一种进程间通讯相关资源优化方法及装置。
背景技术:
1、随着操作系统技术的发展,出现了资源分配技术,特别是在安卓系统中使用binder通信过程中的资源管理。这种技术主要处理应用程序和后台服务之间的资源协调,以支持系统的高效运行。传统技术中,操作系统会根据应用的前台或后台状态来动态调整cpu和内存等资源的分配。前台应用通常会获得较高的资源分配,以保证用户体验,而后台应用则分配较少的资源。
2、然而,目前的资源分配方式存在一些问题。在高性能的前台应用与后台服务频繁进行binder通信时,如果后台服务未能获得足够的资源支持,将会导致资源竞态处理偏差,例如处理速度变慢和帧率下降。此外,当前台应用退到后台或关闭时,后台服务如果继续保持高资源分配份额,也会造成功耗浪费。这种资源分配策略不仅导致了高性能状态下非必要的长时间功耗,也使得低性能状态下用户体验受损,违背了操作系统追求高性能低功耗的总体目标。
3、因此,需要设计一种进程间通讯相关资源优化方法,这种方法应能够保障资源分配的一致性,避免因通信相关进程资源不匹配造成的功耗损失。这将有助于提升操作系统的整体性能和效率,同时减少不必要的能源消耗。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够避免因通信相关进程资源不匹配造成的功耗损失的进程间通讯相关资源优化方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,可以有效的对binder通信相关进程的资源分配进行优化,降低由通信双方资源分配不均衡导致的系统性能、功耗协调差的问题。
2、第一方面,本技术提供了一种进程间通讯相关资源优化方法,所述方法包括:
3、通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,其中,所述binder通信的两端包括客户端和服务端;
4、根据所述引用关系对binder通信的客户端资源组变化时的相关服务端进行同步调整,其中,所述客户端资源组是指客户端应用所属的资源管理单元;
5、针对所述客户端资源组未同步的binder通信进程,在同步通信产生时将所述客户端资源组的变化同步到所述服务端;
6、所述binder通信进程完成后恢复服务端。
7、资源组,所述binder通信相关进程全部纳入管理,实现相关资源优化分配。
8、可选的,所述cgroup模块早期启动时增加有binder关系结构,所述binder关系结构采用二级链表结构,一级为客户端代理链表,二级为服务端代理链表;
9、其中,所述客户端代理链表用于存储所有客户端进程的代理信息,所述服务端代理链表用于存储所有服务端进程的代理信息,所述binder关系结构用于通过所述二级链表结构对所述binder通信的引用关系进行管理。
10、可选的,所述通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,包括:
11、通过所述跨模块调用接口将binder驱动中通信两端进程互相添加或移除引用时的引用关系同步到所述cgroup模块的binder关系结构中,所述二级链表结构得到实时更新。
12、可选的,所述通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,还包括:
13、在binder驱动中通信两端进程断开连接并移除引用时,通过所述跨模块调用接口将引用关系同步到所述cgroup模块的binder关系结构中,所述二级链表结构得到实时更新。
14、可选的,所述方法还包括:
15、响应于所述binder关系结构中所述客户端代理链表不存在,创建客户端代理并加入到所述binder关系结构中,同时创建服务端代理并加入到所述客户端代理中;
16、响应于所述binder关系结构中所述客户端代理链表存在,遍历所述客户端代理链表并查找是否存在对应的客户端代理,如果所述客户端代理不存在,则创建客户端代理并加入到所述binder关系结构中,同时创建服务端代理并加入到所述客户端代理中;
17、响应于所述客户端代理链表和所述客户端代理都存在,会查找服务端代理链表中是否存在对应的服务端代理,如果所述服务端代理不存在,则创建服务端代理并加入到所述服务端代理链表的客户端代理中,如果所述服务端代理存在,则增加所述服务端代理的引用计数。
18、可选的,当所述客户端和所述服务端所在进程之间同时存在至少两个binder通信关系时,所述方法还包括:
19、通过所述跨模块调用接口将所述binder通信两端移除多余连接并移除互相之间的引用关系,且将所述binder通信两端之间的引用关系同步到所述cgroup模块;
20、通过所述cgroup模块提取所述客户端和所述服务端的消息;
21、判断所述binder关系结构的客户端代理链表是否存在,若不存在,则结束流程;若所述binder关系结构的客户端代理链表存在,则遍历所述客户端代理链表,判断是否存在对应的客户端代理;
22、若不存所述对应的客户端代理,则结束流程,若存在所述对应的客户端代理,则在所述客户端代理所在的客户端代理链表中判断是否存在对应的服务端代理;
23、若不存在所述对应的服务端代理,则结束流程,若存在所述对应的服务端代理,则使所述对应的服务端代理的引用计数减少,直至减少到1时移除所述客户端代理对应的服务端代理链表。
24、可选的,所述根据所述引用关系对binder通信的客户端资源组变化时的相关服务端进行同步调整,包括:
25、所述binder通信的客户端资源组变化时所述客户端向所述服务端发送同步消息,所述客户端进程运行并开始执行binder_transaction;
26、所述服务端的线程开始读取所述同步消息执行binder_thread_read,且将引用关系通过所述跨模块调用接口同步到所述cgroup模块;
27、在所述cgroup模块中,根据客户端和服务端之间引用关系,采用cgroup组迁移方式进行迁移,将所述服务端进程移动到客户端所属资源组,并保存服务端之前所属资源组;
28、所述服务端通过执行binder_transaction针对所述同步消息进行反馈;
29、在binder_transaction反馈流程通过跨模块调用接口,运行到cgroup模块;
30、在cgroup模块中,采用cgroup组回迁方式进行回迁,将所述服务端进程从当前客户端所属资源组中移动到服务端之前所属资源组。
31、可选的,所述在所述cgroup模块中,采用cgroup组迁移方式进行迁移,包括:
32、在服务端线程结构中添加css_set结构的指针*restorecgroups;
33、将所述服务端线程结构对应的css_set结构保存到*restorecgroups,同时遍历客户端cgrp_links链表得到每个其所属的cgroup组;
34、使用cgroup_attach_task将所述服务端线程结构迁移到每个客户端线程所属的每个cgroup组。
35、可选的,所述在cgroup模块中,采用cgroup组回迁方式进行回迁,包括:
36、取服务端线程结构保存的css_set结构的指针*restorecgroups,遍历服务端cgrp_links链表得到每个其所属的cgroup组,使用cgroup_attach_task将服务端线程结构迁移到每个服务端线程之前所属的每个cgroup组。
37、第二方面,本技术提供了一种进程间通讯相关资源优化装置,所述装置包括:
38、关系同步模块,用于通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,其中,所述binder通信的两端包括客户端和服务端;
39、同步调整模块,用于根据所述引用关系对binder通信的客户端资源组变化时的相关服务端进行同步调整,其中,所述客户端资源组是指客户端应用所属的资源管理单元;
40、变化同步模块,用于针对所述客户端资源组未同步的binder通信进程,在同步通信产生时将所述客户端资源组的变化同步到所述服务端;
41、优化分配模块,用于所述binder通信进程完成后恢复服务端资源组,所述binder通信相关进程全部纳入管理,实现相关资源优化分配。
42、第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
43、通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,其中,所述binder通信的两端包括客户端和服务端;
44、根据所述引用关系对binder通信的客户端资源组变化时的相关服务端进行同步调整,其中,所述客户端资源组是指客户端应用所属的资源管理单元;
45、针对所述客户端资源组未同步的binder通信进程,在同步通信产生时将所述客户端资源组的变化同步到所述服务端;
46、所述binder通信进程完成后恢复服务端。
47、第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
48、通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,其中,所述binder通信的两端包括客户端和服务端;
49、根据所述引用关系对binder通信的客户端资源组变化时的相关服务端进行同步调整,其中,所述客户端资源组是指客户端应用所属的资源管理单元;
50、针对所述客户端资源组未同步的binder通信进程,在同步通信产生时将所述客户端资源组的变化同步到所述服务端;
51、所述binder通信进程完成后恢复服务端。
52、第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
53、通过跨模块调用接口将binder通信两端进程的引用关系同步到cgroup模块,其中,所述binder通信的两端包括客户端和服务端;
54、根据所述引用关系对binder通信的客户端资源组变化时的相关服务端进行同步调整,其中,所述客户端资源组是指客户端应用所属的资源管理单元;
55、针对所述客户端资源组未同步的binder通信进程,在同步通信产生时将所述客户端资源组的变化同步到所述服务端;
56、所述binder通信进程完成后恢复服务端。
57、上述进程间通讯相关资源优化方法、装置、计算机设备、存储介质和计算机程序产品。
58、本发明创造具有以下优点:
59、采用二级链表处理binder通信相关进程,方便在cgroup中快速查找和同步分组,管理效率高;采用跨模块调用方式,将binder驱动中处理流程与cgroup模块处理流程相结合,在不影响实时和同步通信的基础上,更细粒度优化资源分配;此外,不但对建立binder通信连接的进程之间进行资源同步分组和分配,使媒体播放等场景下处于前后台进程的资源在同等高级别竞争资源,还对以上方法后部分进程变化多次分组,再次同步通信时分组已不匹配情况进行处理,全面实现binder通信相关进程资源的合理调配和高效运行,进而降低功耗损失。