WO2023051178A1 - 一种任务调度方法、电子设备、芯片系统及存储介质 - Google Patents
一种任务调度方法、电子设备、芯片系统及存储介质 Download PDFInfo
- Publication number
- WO2023051178A1 WO2023051178A1 PCT/CN2022/117051 CN2022117051W WO2023051178A1 WO 2023051178 A1 WO2023051178 A1 WO 2023051178A1 CN 2022117051 W CN2022117051 W CN 2022117051W WO 2023051178 A1 WO2023051178 A1 WO 2023051178A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- thread
- electronic device
- cpu core
- core
- cpu
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 235
- 238000012545 processing Methods 0.000 claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 10
- 241001422033 Thestylus Species 0.000 claims description 60
- 238000004590 computer program Methods 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000009877 rendering Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 135
- 230000001976 improved effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 17
- 238000007726 management method Methods 0.000 description 12
- 230000005236 sound signal Effects 0.000 description 9
- 230000008093 supporting effect Effects 0.000 description 8
- 238000010295 mobile communication Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 101100190462 Caenorhabditis elegans pid-1 gene Proteins 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000026676 system process Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical group OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005855 radiation Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5012—Processor sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Telephone Function (AREA)
Abstract
本申请提供一种任务调度方法、电子设备、芯片系统及存储介质,涉及任务调度技术领域,可以提高电子设备的性能。该方法包括:在电子设备的一些快速响应的场景,例如手写笔场景,将支持该场景的部分或全部线程设置到运算能力更高的处理器核上运行,从而使得运算能力更高的处理器核能够快速处理这些线程,以实现该场景的快速响应;另外,在该场景结束后,还可以将该线程从运算能力更高的处理器核切换回原处理器核,避免该线程一直运行在运算能力更高的处理器核上导致的功耗过高。
Description
本申请要求于2021年09月30日提交国家知识产权局、申请号为202111169277.3、申请名称为“一种任务调度方法、电子设备、芯片系统及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及任务管理领域,尤其涉及一种任务调度方法、电子设备、芯片系统及存储介质。
随着电子设备的智能化程度越来越高,电子设备提供的功能也越来越多。电子设备提供的功能需要由电子设备中的处理器(central processing unit,CPU)处理相应的任务实现。电子设备提供的某些功能对处理器的能力要求较高。作为示例,平板电脑中安装的备忘录提供的手写笔功能对处理器的能力要求较高。
在处理器的能力不足以支撑某个任务的快速执行时,该任务可能会导致电子设备的系统卡顿,甚至影响其他任务的执行。目前,可以将该任务设为高优先级任务等方式缩短该任务的执行时间。然而,处理该任务的处理器核可能还需要处理其他任务,若优先处理该任务,则可能阻塞该处理器核处理其他任务,导致影响电子设备的整体性能。
发明内容
本申请提供一种任务调度方法、电子设备、芯片系统及存储介质,提高电子设备的性能。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种任务调度方法,该方法包括:
电子设备显示第一应用的界面,第一线程运行在第一CPU核,第一线程用于第一应用的界面的显示处理;
电子设备接收手写笔在第一应用的界面上的第一输入;
响应于第一输入,电子设备控制第一线程运行在第二CPU核,第二CPU核的运算能力高于第一CPU核的运算能力。
本申请中,当电子设备显示第一应用(例如,备忘录应用)的界面时,用于第一应用的界面的显示处理的第一线程运行在第一CPU核上;当用户使用手写笔在第一应用的界面上开始进行手写操作时,为了使得手写流畅,可以提高与显示手写笔迹的界面的显示处理相关的第一线程的处理速度;在实际应用中,电子设备可以将第一线程设置在第二CPU核上运行;第二CPU核相比对第一CPU核具有更高的运算能力,因此,第二CPU核相比于第一CPU核能够更快的处理第一线程,从而提高电子设备的性能;从用户的角度,手写笔的手写过程流畅。
作为本申请第一方面的一种实现方式,第一线程为第一控制族群内的线程,第一控制族群内的线程被允许运行在第一CPU核集中的任一CPU核,第一CPU核为第一CPU核集中的任一CPU核。
作为本申请第一方面的一种实现方式,电子设备控制第一线程运行在第二CPU核之后,该方法还包括:
电子设备接收第二操作,第二操作包括退出第一应用的操作、切换第一应用到后台的操作或用户触摸第一应用的界面的操作;
响应于第二操作,电子设备控制第一线程运行在第三CPU核,第三CPU核为第一CPU核集中的CPU核。
本申请中,在同一场景(例如,手写笔场景)结束后,还可以将该线程从运算能力更高的CPU核切换回原CPU核,避免该线程一直运行在运算能力更高的处理器核上导致的功耗过高问题。
作为本申请第一方面的一种实现方式,电子设备控制第一线程运行在第二CPU核之前,该方法还包括:
电子设备设置第一线程为第二控制族群内的线程,第二控制族群内的线程被允许运行在第二CPU核集中的任一CPU核,第二CPU核为第二CPU核集中的CPU核。
本申请中,在第一控制族群的第一CPU核集中不包含第二CPU核的情况下,可以将第一线程迁移到允许运行在第二CPU核的第二控制族群。从而使得第一线程可以切换到第二CPU核上运行。当然,第二控制族群可以是根控制族群。
作为本申请第一方面的一种实现方式,电子设备控制第一线程运行在第二CPU核之后,该方法还包括:
电子设备接收第二操作,第二操作包括退出第一应用的操作、切换第一应用到后台的操作或用户触摸第一应用的界面的操作;
响应于第二操作,电子设备设置第一线程为第一控制族群内的线程;
电子设备控制第一线程运行在第四CPU核,第四CPU核为第一CPU核集中的任一CPU核。
本申请中,在场景(例如,手写笔场景)关的情况下,若第一线程在同一场景开时切换过控制族群,在场景关时需要切换回原控制族群,从而在该场景结束后,第一线程回到原控制族群规定的CPU核上运行,避免电子设备功耗过高。
作为本申请第一方面的一种实现方式,手写笔在第一应用的界面上的第一输入包括:
第一应用在前台运行后,手写笔在第一应用的手写界面上的首次接触生成的输入。
作为本申请第一方面的一种实现方式,第二操作为用户触摸第一应用的界面的操作;手写笔在第一应用的界面上的第一输入包括:
在电子设备接收第二操作之后,手写笔在第一应用的手写界面上的首次接触生成的输入。
作为本申请第一方面的一种实现方式,显示处理包括:绘制处理、渲染处理和合成处理中的至少一个。
作为本申请第一方面的一种实现方式,在电子设备设置第一线程为第二控制族群 内的线程之前,还包括:
电子设备将第一线程和第一控制族群存储在第一存储空间;
相应的,电子设备设置第一线程为第一控制族群内的线程之前,包括:
电子设备从第一存储空间查询到第一线程和第一控制族群。
本申请中,在场景开时,若需要切换第一线程的控制族群,需要缓存该线程的原控制族群,以便于在场景关时,可以根据缓存的信息获取第一线程的原控制族群。
作为本申请第一方面的一种实现方式,电子设备控制第一线程运行在第二CPU核包括:
电子设备获取第三CPU核集,第三CPU核集为为第一线程配置的CPU核;
在第一CPU核集和第三CPU核集包含有相同的CPU核的情况下,电子设备控制第一线程运行在第二CPU核,第二CPU核为相同的CPU核中的一个。
作为本申请第一方面的一种实现方式,电子设备设置第一线程为第二控制族群内的线程包括:
电子设备获取第三CPU核集,第三CPU核集为为第一线程配置的CPU核;
在第一CPU核集和第三CPU核集不包含有相同的CPU核的情况下,电子设备设置第一线程为第二控制族群内的线程,第二CPU核为第二CPU核集和第三CPU核集包含的相同的CPU核中的一个。
作为本申请第一方面的一种实现方式,电子设备控制第一线程运行在第二CPU核包括:
电子设备获取第三CPU核集,第三CPU核集为为第一线程配置的CPU核;
电子设备设置运行第一线程的CPU核为第三CPU核集中的CPU核;
在设置失败的情况下,电子设备设置第一线程为第二控制族群内的线程,第二CPU核集和第三CPU核集包含有相同的CPU核;
在将第一线程设置为第二控制族群内的线程之后,电子设备设置运行第一线程的CPU核为第三CPU核集中的CPU核,在设置成功后,第一线程运行在第二CPU核,第二CPU核为第二CPU核集和第三CPU核集包含的相同的CPU核中的一个。
作为本申请第一方面的一种实现方式,该方法还包括:
电子设备开机后,电子设备获取配置文件,配置文件用于为第一场景标识配置第一线程和为第一线程配置第三CPU核集;
电子设备解析配置文件获得解析信息;
电子设备以map数据结构存储解析信息;
相应的,电子设备获取第三CPU核集包括:
响应于第一输入,电子设备确定第一场景标识;
电子设备从解析信息获取为第一场景标识配置的第一线程和为第一线程配置的第三CPU核集。
作为本申请第一方面的一种实现方式,电子设备从解析信息获取为第一场景标识配置的第一线程包括:
电子设备从解析信息获取为第一场景标识配置的第一线程的第一线程名;
相应的,电子设备控制第一线程运行在第二CPU核包括:
电子设备从第一文件系统查找与第一线程名匹配的线程标识,第一文件系统存储有电子设备当前运行的线程的线程名和线程标识;
在电子设备从第一文件系统查找到与第一线程名对应的第一线程标识的情况下,电子设备控制第一线程标识表示的第一线程运行在第二CPU核。
作为本申请第一方面的一种实现方式,电子设备从第一文件系统查找与第一线程名对应的线程标识之前,该方法还包括:
电子设备从第二文件查找第一线程名对应的线程标识;
相应的,电子设备从第一文件系统查找与第一线程名对应的线程标识包括:
在电子设备从第二文件未查找到第一线程名对应的线程标识的情况下,电子设备从第一文件系统查找与第一线程名对应的线程标识;
相应的,在电子设备从第一文件系统查找到与第一线程名对应的第一线程标识的情况下,该方法还包括:
电子设备在第二文件存储第一线程名对应的第一线程标识。
作为本申请第一方面的一种实现方式,电子设备从第二文件查找第一线程名对应的线程标识之后,该方法还包括:
在电子设备从第二文件查找到第一线程名对应的第一线程标识的情况下,电子设备设置第一线程标识表示的第一线程运行在第二CPU核。
第二方面,提供一种电子设备,包括处理器,处理器用于运行存储器中存储的计算机程序,实现本申请第一方面任一项的方法。
第三方面,提供一种芯片系统,包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现本申请第一方面任一项的方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被一个或多个处理器执行时实现本申请第一方面任一项的方法。
第五方面,本申请提供了一种计算机程序产品,当计算机程序产品在设备上运行时,使得设备执行本申请第一方面任一项的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
图1为本申请实施例提供的一种电子设备的硬件结构示意图;
图2为本申请实施例提供的任务调度方法的一种应用场景图;
图3为本申请实施例提供的任务调度方法的一种应用场景图;
图4为本申请实施例提供的任务调度方法依赖的一种技术架构图;
图5为本申请实施例提供的任务调度方法在场景开时的一种时序图;
图6为本申请实施例提供的任务调度方法在场景开时的另一种时序图;
图7为本申请实施例提供的任务调度方法中绑核模块执行绑核操作时的流程图;
图8为本申请实施例提供的任务调度方法在场景开时的另一种时序图;
图9为本申请实施例提供的任务调度方法在场景开时的另一种时序图;
图10为本申请实施例提供的任务调度方法在场景关时的一种时序图;
图11为本申请实施例提供的任务调度方法在场景关时的另一种时序图。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”、“第四”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供一种任务调度方法,可以适用于电子设备中。该电子设备可以为平板电脑、手机、可穿戴设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等电子设备。本申请实施例对电子设备的具体类型不作限定。
图1示出了一种电子设备的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中,传感器模块180可以包括压力传感器180A,触摸传感器180K,环境光传感器180L等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或 多个处理器中。例如,处理器110用于执行本申请实施例中的任务调度方法。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)。
此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
无线通信模块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)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信号转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了监听语音信息,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于 检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。
显示屏194用于显示图像,视频等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
摄像头193用于捕获静态图像或视频。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。
本申请实施例并未特别限定一种任务调度方法的执行主体的具体结构,只要可以通过运行记录有本申请实施例的一种任务调度方法的代码,以根据本申请实施例提供的一种任务调度方法进行通信即可。例如,本申请实施例提供的一种任务调度方法的执行主体可以是电子设备中能够调用程序并执行程序的功能模块,或者为应用于电子设备中的处理装置,例如,芯片。
图1所示的电子设备可以提供各种各样的功能,电子设备提供的功能需要由电子设备中的处理器处理一个或多个任务实现。一个任务可以是一个进程,一个进程又可以包括一个或多个线程。在实际应用中,可以将多个线程打包为一个进程。因此,一个任务下的子任务可以是一个线程。
在处理器处理某个任务时,若该任务较为复杂,处理器没有能力快速处理该任务,则会导致系统卡顿,用户的体验较差。
以图2和图3所示场景为例,用户使用平板电脑的备忘录应用中的手写笔功能进行书写的过程中,需要平板电脑快速响应以在备忘录的书写界面上显示手写笔的书写笔迹。该功能的实现涉及绘制、渲染、合成及显示等任务。
参见图2,若平板电脑的处理器处理上述任务时的处理时间较长,则可能在一个刷新周期内,未完成绘制、渲染、合成任务,平板电脑无法显示本应显示的图像,导致系统丢帧、卡顿。相应的,用户使用手写笔在书写界面上产生书写轨迹到在书写轨迹上显示书写笔迹的时延较长,平板电脑的手写笔功能较迟钝,用户的手写笔跟手体验度较差。
参见图3,若平板电脑的处理器处理上述任务时的处理时间较短,则在一个刷新周期内,足以完成绘制、渲染、合成任务,平板电脑可以在合适的时间显示对应的图像,系统流畅。相应的,用户使用手写笔在书写界面上产生书写轨迹到在书写轨迹上显示书写笔迹的时延较短,平板电脑的手写笔功能较流畅,用户的手写笔跟手体验度较好。
本申请实施例提供的任务调度方法不仅可以应用在图2和图3所示的应用场景中,还可以应用在任意对时延要求较高的场景中。
作为另一场景示例,在多屏互动(例如,平板电脑和手机互动,手机和大屏互动等)时,在一个电子设备上进行的操作需要在另一个电子设备上及时呈现该操作的响应。因此,对时延的要求也较高。对于其他应用场景不再一一举例。
若要使得处理器处理特定任务的时间更短,可以通过提高该特定任务运行时所在的CPU核的工作频率等方式。然而,这种方式会造成电子设备的功耗过高。本申请实施例中的CPU核可以为一个CPU核心,为物理上CPU芯片上的一个核心单元。
还可以通过设置特定任务的优先级的方式缩短处理该特定任务的时间。然而,处理该特定任务的CPU核可能还会处理其他任务,若优先处理该特定任务,则可能阻塞该CPU核处理其他任务。
因此,需要一种任务调度方式在缩短某任务的处理时间的同时,不能影响其他任务的处理;在该任务处理结束后,系统还能够恢复到该任务的初始状态,避免电子设备的功耗过大的问题。
为解决上述问题,本申请实施例提供一种任务调度方法,该任务调度方法通过将特定场景下的一些任务在该特定场景下运行时,从原CPU核(当前所在的CPU核)切换到新CPU核(运算能力更高的CPU核)上运行,从而避免了原CPU核的能力不足以支撑任务的快速执行导致的阻塞原CPU核处理各种任务的问题;另外,在该特定场景结束后,可以再将该任务切换回原CPU核上运行,也可以避免电子设备功耗过大的问题。
为了方便更好的理解本申请实施例提供的任务调度方法,下面对上述任务调度方法进行具体说明:
步骤一,开发人员预先设置支持任务调度的场景(例如,对时延要求较高的场景),为该支持任务调度的场景配置CPU核,该配置的CPU核与该支持任务调度的场景下的进程绑定。可以将该配置的CPU核记为配置核。在实际应用中,可以配置进程下的部分线程(也可以是全部线程)在该配置核运行。该步骤的配置信息可以以配置文件的形式存储在电子设备的存储器中。
步骤二,在电子设备处于支持任务调度的场景时,电子设备从配置文件获取该支持任务调度的场景下的每个进程中参与绑核的每个线程以及每个线程的配置核。
步骤三,电子设备查看参与绑核的每个线程当前是否处于运行状态。
由于某个线程可能并不是某个场景专用的线程,因此,在确定当前处于特定场景、且该线程处于运行状态的情况下将当前处于运行状态的线程从当前的运行核切换到配置核上运行。
步骤四,电子设备查看参与绑核且当前处于运行状态的线程所在的CPU组的组运 行核。
线程所在的CPU组的组运行核规定了该线程可以在该组运行核中的任意一个CPU核上运行。若某线程的组运行核为CPU的小核(1核和3核),则该线程只能在组运行核中的1核和3核上运行。即允许该线程运行的CPU核包括该线程所在CPU组的组运行核中每个CPU核。
一个线程所在的CPU组由CGroup(control Group)虚拟文件系统管理。该虚拟文件系统中设置了多个控制族群,每个控制族群是一组按照某些标准划分的任务。一个任务可以加入某个控制族群,还可以从一个控制族群迁移到另一个控制族群,该控制族群限制了属于该控制族群的任务可以在哪些CPU核上运行。其中,控制族群可以理解为本申请实施例中的CPU组,该控制族群限制的CPU核,可以理解为本申请实施例中的组运行核。
步骤五,若参与绑核且处于运行状态的线程所在的CPU组的组运行核包括该线程的配置核,则电子设备将该线程切换到配置核上运行。
当然,在确定该场景结束后,电子设备需要将切换到配置核上运行的线程再切换回该线程所在CPU组的组运行核上运行。
步骤六,若参与绑核且处于运行状态的线程所在的CPU组的组运行核不包括该线程的配置核,则电子设备缓存该线程的初始态信息,例如,该线程当前所在CPU组,还可以包括当前所在CPU组的组运行核。然后,电子设备将该线程切换到根分组,根分组下的线程可以在处理器的多个核(例如,8核处理器中的0核至7核)上运行。此时,根分组下的线程的组运行核包括配置核,电子设备就可以将根分组下该参与绑核的线程切换到配置核上运行。
为了提高线程的处理速度,配置核可能为CPU的大核(例如,6核)。若该线程原来所在的CPU组的组运行核为CPU的小核(例如,1核和3核),则可能出现线程的组运行核不包括配置核的情况,需要将该线程从原来的CPU组切换到根分组,以使得在根分组下能够将该线程切换到配置核运行。
当然,在确定该场景结束后,电子设备获取缓存的该线程的初始态信息,基于该线程的初始态信息将该线程从根分组切换回原来的CPU组。在将该线程从根分组切换回原来的CPU组后,该线程自然恢复到原来的CPU组的组运行核上运行。
在描述上述任务调度方法后,将详细描述本申请实施例提供的任务调度方法的实现方式。
参见图4,为本申请实施例提供的任务调度方法依赖的技术架构。需要说明,该技术架构为实现上述任务调度方法的一种实现方式,并非限定只能通过图4所示的技术架构实现该任务调度方法。例如,图4所示技术架构中不同名称的模块(或内核节点)可以组合成同一模块(或内核节点)。图4所示技术架构中的一个模块(或存储器)还可以划分为多个模块(或多个存储空间)。
该技术架构包括应用层(Application)、框架层(Framework)、硬件抽象层(Native&Hardware Abstraction Layer)、内核层(Kernel)和硬件层(Hardware)。
应用层包括各种应用。例如,上述场景中的备忘录应用、多屏互动应用(图4中未示出)等。该备忘录应用可以提供手写笔功能。
框架层包括场景识别模块和线程匹配模块。其中,场景识别模块用于识别当前的场景是否为预先设置的支持任务调度的场景(例如,备忘录的手写笔场景)和当前场景属于场景开始还是场景关闭,从而得到场景ID和开标识(或关标识)。线程匹配模块用于解析上述实施例中的配置文件获得解析信息。还可以在场景识别模块确定当前场景为支持任务调度的场景的情况下,从解析信息中查找与当前场景匹配的进程名、该进程的配置核ID(配置的CPU核ID)以及该进程下参与绑核的线程名。还可以确定从解析信息中匹配到的线程当前是否处于运行状态。
硬件抽象层包括绑核模块。该绑核模块可以作为框架层的线程匹配模块和内核层的设置接口之间的通信接口。作为示例,该绑核模块可以从线程匹配模块接收线程ID和配置核ID(配置的CPU核ID),还可以调用设置接口依次设置从线程匹配模块接收到的每个线程的运行核。该绑核模块还可以实现绑核前的一些处理操作,例如上述实施例中的步骤六中的缓存线程的初始态信息的操作和切换线程的CPU组的操作。
内核层包括内核节点1、线程ID查询模块(可以位于内核节点2)、CPU核查询模块(可以位于内核节点3)和设置接口。其中,内核节点1(例如,sys/kernel/sched/curr_scene节点)用于存储场景识别模块识别到的支持任务调度的场景的场景ID和当前场景为开启还是关闭的标识。内核节点2中的线程ID查询模块用于存储系统当前运行的进程、该进程下的线程等相关信息。例如,线程ID查询模块可以为proc文件系统。可以从proc文件系统查询与线程名对应的线程ID,内核节点3中的CPU核查询模块用于存储线程所在的CPU组、CPU组的组运行核等信息。例如,CPU核查询模块可以为CGroup虚拟文件系统。设置接口(例如,CPU亲和力函数sched_setaffinity())可以实现将线程从当前的运行核切换到配置核上运行,还可以将线程从配置核上切换到所在的CPU组的组运行核上运行。
硬件层包括触控屏和存储器。存储器中设有数据库,用于存储本申请实施例提供的任务调度方法中的使用的相关文件(例如,配置文件)和数据(例如,一些缓存信息)。触控屏用于检测图2和图3所示应用场景中的用户的手写笔操作。
当然,在本申请实施例提供的任务调度方法应用在其他应用场景中时,可以不依赖于应用层的备忘录和硬件层的触控屏。
在描述图4所示的技术架构后,将通过图5至图11所示附图详细描述如何通过图4所示的技术架构中的各个模块实现本申请实施例提供的任务调度方法。
前期准备工作:
步骤A1,开发人员编写、编译配置文件,该配置文件被存储于电子设备的存储器中的数据库。
该配置文件中定义了打开任务调度功能的标识和关闭任务调度功能的标识。
作为示例,打开任务调度功能的标识可以为“1”,关闭任务调度功能的标识可以为“0”。实际应用中,还可以通过其他字符作为打开任务调度功能的标识和关闭任务调度功能的标识,不再一一举例。
该配置文件中还定义了场景标识(场景ID),每个场景以进程的维度定义了配置核。当一个场景涉及多个进程时,可以在该场景ID下设置多个进程以及每个进程的配置核。
当然,每个进程还可能包括多个线程,若该进程下的部分线程需要较快的处理速度,则该配置文件中还可以定义进程下的哪些线程参与绑核。当然,可以在该配置文件中将同一进程下参与绑核的多个线程设置为同一配置核。
参见表1,在备忘录的手写笔场景(该场景ID可以设置为0)下,为该场景下的进程android.hardware.graphics.composer@2.1-service设置配置核,该配置核对应的标识可以记为配置核ID(配置的CPU核ID),该进程的配置核ID为11000000;为该场景下的进程surfaceflinger设置配置核(配置核ID为11000000)。其中,进程android.hardware.graphics.composer@2.1-service中的线程overlayengine_0在该进程的配置核下运行,进程surfaceflinger中的线程surfaceflinger在该进程的配置核下运行。
表1待编写的配置信息
基于表1的内容可以得到如下配置文件:
<config name="sub_switch">
<item type="switch">
<cpu_affinity bit="23">1</cpu_affinity>
</item>
</config>
<config name="cpu_affinity_list">
<item process_name="android.hardware.graphics.composer@2.1-service"mask="11000000"index="0">
<thread_name>overlayengine_0</thread_name>
</item>
<item process_name="surfaceflinger"mask="11000000"index="0">
<thread_name>surfaceflinger</thread_name>
</item>
</config>
上述配置文件的示例中,<cpu_affinity bit="23">1</cpu_affinity>中的1表示打开任务调度功能。当为0时表示关闭任务调度功能。
cpu_affinity_list中的index值可以理解为场景ID。
作为另一示例,可以在内核节点中设置多个bit位,用于存储场景标识(场景ID)和开关标识。index值可以表示内核节点对应的bit位的下标。例如,可以8个bit位用于存储开关该标识和场景标识,即8个bit位中的bit[0]至bit[7]为本申请实施例设置的内核节点1中支持任务调度的场景的bit位。场景ID为i(0≤i≤7)时,将表示该场 景开关标识写入bit[i]中,哪个bit位存储了数据,表示当前识别的场景为哪个bit位的下标对应的场景。
当然,实际应用中,还可以采用其他方式在内核节点1中存储场景ID和开关标识。例如,可以将每次写入内核节点的数据设置为4个bit位,其中,第0个bit位为开关标识(0或1),第1个、第2个和第3个bit位配合作为8个场景标识(000,001,010,011,100,101,110,111),相应的,配置文件中index值需要与存储场景ID时的用于表示同一场景的ID一致。
本申请实施例对在内核节点1中存储场景ID和开关标识的具体实现方式不做限制。无论采用何种方式,配置文件中的场景ID需要与写入的用于表示同一场景的ID一致。
如前所述,同一场景下可能需要对多个线程参与绑核,同一index值表示同一场景,因此,同一index值可以配置一个场景下的多个进程和多个线程。
上述示例中,process_name表示某个场景下设置的进程名,mask表示该场景开的情况下为每个进程设置的CPU核ID。thread_name表示该场景下参与绑核的线程名。
上述配置文件配置了两个进程。参见上述配置文件中的进程android.hardware.graphics.composer@2.1-service和进程surfaceflinger。
进程android.hardware.graphics.composer@2.1-service中的线程overlayengine_0和标识为11000000的CPU核绑定。进程surfaceflinger中的线程surfaceflinger与标识为11000000的CPU核绑定。
本申请实施例中,以电子设备具有8个CPU核为例,可以设置8位的标识(XXXXXXXX),作为示例,从右向左数,第i位为1,表示可以在第i个CPU核上运行,i为从0到7的8个自然数。若配置文件中设置的配置核标识为11000000,则表示设置的CPU核为第6个CPU核和第7个CPU核,其中,每个CPU核属于第几个CPU核可以预先定义。本申请实施例中配置的CPU核可以是一个或多个CPU核。作为另一示例,可以采用标识“11111111”表示电子设备中的全部8个CPU核。
当然,一个进程包括多个线程、且该进程下的至少两个线程需要在配置核上运行时,可以设置进程下的多个线程均与该进程的配置核绑定。
本申请实施例中,可以将配置文件中配置的场景标识记为第一场景标识。可以将配置文件中为第一场景标识配置的任一线程记为第一线程。若以备忘录应用为例,配置的第一线程可以是备忘录应用提供的手写笔功能依赖的任一线程。例如,该线程用于手写笔功能手写时的显示处理,例如,绘制处理、渲染处理和合成处理。当然,备忘录应用可以记为第一应用,第一应用还可以是任意支持任务调度的应用。本申请实施例中为第一线程配置的CPU核记为第三CPU核集。
电子设备开机或重启后的步骤:
步骤B1,用户开启电子设备或重启电子设备后,电子设备开机。
步骤B2,在电子设备开机后,线程匹配模块启动。
步骤B3,线程匹配模块启动后,向存储器中的数据库发送配置文件的读取请求。
该步骤中,线程匹配模块不是获取电子设备中所有的配置文件,而是获取与该线程匹配模块相关的配置文件。例如,与任务调度功能相关的配置文件。
步骤B4,线程匹配模块从存储器中的数据库读取到配置文件。
步骤B5,线程匹配模块解析该配置文件得到解析信息。
线程匹配模块解析配置文件后得到如表2格式的解析信息。表2中,index为场景ID。procName为当前场景ID为开时要进行绑核的进程名,cpumask为对应进程要绑定的CPU核ID,Threadname为对应进程下需要进行参与绑核的线程名。
表2配置文件的解析信息
对应于步骤A1中的配置文件可以得到如表3的解析信息。
表3配置文件的解析信息
在步骤B5后,线程匹配模块得到解析信息,该解析信息以map的存储方式存储。Map存储方式是通过数组和链表的方式实现的一种数据存储方式,该存储方式可以提高查找效率,使得在有符合条件的场景触发实施任务调度功能时,线程匹配模块能够快速匹配到当前场景下需要进行调度的线程所在的进程名、该进程对应的配置核ID和该进程下参与绑核的线程名。以map的存储方式存储的解析信息可以存储在内存中。
需要说明,在电子设备开机后,线程匹配模块获取配置文件并解析获得解析信息,以map的形式存储解析信息。线程匹配模块接收到场景识别模块发送的场景ID后,可以从map方式存储的解析信息中查找与场景ID对应的配置信息(例如,进程名、配置的CPU核标识,线程名等信息),能够提高查找速度。
实际应用中,线程匹配模块也可以在接收到场景识别模块发送的场景ID之后,再执行步骤B3至步骤B5以获得解析信息,然后从解析信息中查找与场景ID对应的配置信息。
当有符合条件的场景触发时的步骤:
步骤C1,用户在电子设备上开启备忘录应用。
步骤C2,场景识别模块检测到备忘录应用切换到前台运行。
步骤C3,用户使用手写笔在电子设备的触控屏上显示的备忘录应用中的手写界面开始手写操作。
步骤C4,触控屏将检测到的触控信息发送给上层应用(例如,备忘录应用)。
触控屏可以检测到与手写笔操作相关的信息(例如位置)。触控屏将记录有手写笔操作的位置的相关信息向上传输。系统可以根据手写笔操作的位置确定手写笔操作作用在备忘录应用的手写界面上。在根据手写笔操作的位置确定手写笔操作作用在备忘录应用的手写界面上的情况下,备忘录应用可以检测到手写笔的手写操作。
步骤C5,备忘录应用向场景识别模块发送手写笔的手写操作。
当用户开启备忘录,使用备忘录的手写笔功能,在备忘录每次开启或从后台切换到前台后,手写笔第一次接触手写界面范围内的触控屏时,场景识别模块首次检测到手写笔的手写操作。即电子设备接收到手写笔在第一应用的界面上的第一输入。
当然,若用户在使用手写笔进行手写操作的过程中,退出了手写笔操作(例如,用户通过手指点击了手写界面),在退出手写笔操作后,手写笔的第一次接触手写界面范围内的触控屏时,场景识别模块首次检测到手写笔的手写操作。即电子设备在接收到用户触摸备忘录应用的手写界面的操作后,手写笔的第一次接触手写界面范围内的触控屏时,电子设备也接收到手写笔在第一应用的界面上的第一输入。
通过上述描述可以理解,在备忘录开启后或从后台切换到前台后,手写笔第一次接触手写界面范围内的触控屏时,场景识别模块首次检测到手写笔的手写操作;在退出手写笔场景(例如,用户通过手指触摸备忘录的手写界面范围内的触控屏)后,手写笔第一次接触手写界面范围内的触控屏时,场景识别模块首次检测到手写笔的手写操作。
步骤C6,场景识别模块基于检测到的备忘录应用切换到前台运行和首次检测到的手写笔的手写操作(也可以理解为从其他场景进入手写笔场景)确定当前场景的场景ID(当然场景可以定义为手写笔场景,场景ID可以为预先定义的手写笔场景的ID)和开标识。
需要说明,本申请实施例以条件“备忘录切换到前台运行”和“从非手写笔场景进入手写笔场景”作为备忘录的手写笔场景的开启条件。
实际应用中,场景识别模块还可以增加其他条件作为备忘录的手写笔场景的开启条件,例如,电子设备当前是否为单帧模式等。单帧模式是将如前所述的绘制、渲染、合成及显示在一个刷新周期内完成,即电子设备一边合成笔迹图像一边将合成的笔迹图像送到显示屏显示,可以在电子设备的显示屏上快速显示图像的一种模式。
步骤C7,场景识别模块将开标识和场景ID写入到内核节点1。
步骤C8,内核节点1检测到写操作后,将写入的数据(开标识和场景ID)发送到线程匹配模块。
实际应用中,也可以由场景识别模块将场景ID和开标识发送给线程匹配模块。本申请实施例对场景识别模块是否通过内核节点将场景ID和开标识发送给线程匹配模块不做限定。
另外,为避免重复触发步骤C8以及之后的步骤,可以在内核节点1中设置以下逻辑内容:在内核节点1中写入的为场景ID和开标识的情况下,若内核节点1再次接 收到场景识别模块发送的同一场景ID和开标识,则内核节点1不再向线程匹配模块发送新接收到的场景ID和开标识。
若内核节点1中存在上述逻辑,则场景识别模块可以在备忘录应用在前台运行,且在检测到手写笔在手写界面的手写操作后,确定场景ID为手写笔场景的ID和开标识。本申请实施例对具体的方式不做限定。
当然,在内核节点1中写入的为场景ID和开标识的情况下,若内核节点1再次接收到场景识别模块发送的同一场景ID和关标识,则内核节点1向线程匹配模块发送新接收到的场景ID和关标识。具体可参照后续图10和图11所示实施例的描述。
当然,在场景识别模块不通过内核节点1发送场景ID和开标识到线程匹配模块的情况下,上述逻辑也可以设置在场景识别模块中。
步骤C9,线程匹配模块接收到内核节点1发送的开标识和场景ID后,从配置文件的解析信息(map存储结构)中查找与场景ID匹配的进程名、配置核ID和线程名。作为示例,线程匹配模块匹配到的信息为:
进程A,核6,线程1;
进程B,核6,线程2;
进程C,核6,线程3。
步骤C10,线程匹配模块从线程ID查询模块中查找是否存在从解析信息中匹配到的进程(进程A,进程B和进程C)以及该进程下匹配到的线程(线程1、线程2和线程3)。
在本申请实施例中,线程ID查询模块中存储有proc文件系统(可以记为第一文件系统),proc文件系统为进程数据文件系统,proc文件系统中存储有当前正在运行的线程以及当前正在运行的线程所在的进程(或者当前正在运行的进程以及该进程下当前正在运行的线程)。当一个线程运行结束后,proc文件系统中该线程对应的目录消失。若从proc文件中能够查找到相应的线程,表示该线程当前处于运行状态。
由于当前已经运行的线程,才会从当前的运行核切换到配置核运行。因此,线程匹配模块需要执行步骤C10从proc文件系统中查找从配置信息匹配的线程当前是否处于运行状态,在处于运行状态的情况下,将处于运行状态的线程切换到配置核运行。
另外,从proc文件系统中查找参与绑核的线程时。需要先从proc文件查找到参与绑核的线程所在的进程的目录;然后,在proc文件系统中基于查找到的进程目录,在该进程目录下进一步查找线程。所以,虽然本申请实施例设置配置核时为线程设置配置核,然而,在配置文件中需要配置出线程所在的进程。以便于能够从proc文件系统中基于线程所在的进程查到相应的线程。
步骤C11,线程匹配模块从proc文件系统查询到进程A下的线程1的线程ID(tid1)和进程B下的线程2的线程ID(tid2)。
若线程匹配模块未从proc文件系统中查询到进程C下的线程3表示进程C下的线程3当前未运行,则无需将进程C下的线程3切换到配置核运行。
另外,需要说明,线程匹配模块向proc文件系统发送的是进程名和线程名,线程ID查询模块返回的是线程ID(例如,tid1,tid2)。以便于在后续步骤中设置配置核时能够以线程ID的形式设置配置核。
步骤C12,线程匹配模块将从proc文件系统查询到的tid1和tid2以及从解析信息查询到的CPU核ID发送到绑核模块。
线程匹配模块将线程ID和配置核ID打包发送给绑核模块,其中,发送的数据包参见表4。当然,在多个线程的配置核ID相同的情况下,可以按照表4打包发送,在多个线程的CPU核ID不相同的情况下,则需要分开发送。
表4线程匹配模块向绑核模块发送的数据包
tid1 |
tid2 |
CPU核ID |
步骤C13,绑核模块接收到线程匹配模块发送的数据后,依次获取每个线程ID,并依次将每个线程ID以及从线程匹配模块接收到的CPU核ID发送到设置接口。
作为示例,绑核模块首先将tid1和配置核ID(从线程匹配模块接收到的CPU核ID)发送到设置接口。
设置接口接收到tid1和配置核ID(从线程匹配模块接收到的CPU核ID)后,设置线程1切换到配置核上运行。
作为一种示例:
步骤C14,设置接口向CPU核查询模块中存储的CGroup虚拟文件系统发送接收到的线程ID(tid1),以请求CGroup虚拟文件系统返回该线程ID所在的CPU组设置的CPU核ID。该CPU核ID表示上述实施例中的组运行核。
步骤C15,CPU核查询模块返回tid1所在的CPU组设置的组运行核对应的标识。
步骤C16,tid1对应的配置核ID表示的CPU核和tid1对应的组运行核之间存在交集,可以设置tid1表示的线程1的运行核为交集中的CPU核。
在本申请实施例中,线程1所在的CPU组的组运行核可能包括1个或多个,配置核ID表示的CPU核可能为1个或多个,若配置核中的至少一个CPU核为组运行核中的CPU核,则可以设置成功。也可以理解为,配置核ID表示的CPU核和组运行核ID表示的CPU核存在交集的情况下,可以设置成功。在设置成功后,tid1表示的线程1可以在交集中的CPU核中的任意CPU核上运行。
作为示例,为线程1配置的CPU核为1核和3核;线程1所在的CPU组的组运行核为0核至3核。配置的CPU核和组运行核的交集为1核和3核,则设置成功后,线程1可以运行在1核上,也可以运行在3核上。
步骤C17,设置接口在将线程1设置到配置的CPU核中的一个CPU核上运行后,向绑核模块返回用于表示tid1的配置核设置成功的消息。
线程1被设置到配置核后,该线程1在配置核上运行。
步骤C18,绑核模块继续将tid2和配置核ID(tid2对应的配置核ID)发送到设置接口。
设置接口接收到tid2和配置核ID后,设置线程2切换到配置核上运行。
步骤C19,设置接口向CPU核查询模块中存储的CGroup虚拟文件系统发送接收到的线程ID(tid2),以请求CGroup虚拟文件系统返回该线程ID所在的CPU组设置 的CPU核ID。该CPU核ID表示上述实施例中的组运行核。
步骤C20,CPU核查询模块返回tid2所在的CPU组设置的组运行核对应的标识。
步骤C21,tid2对应的配置核ID表示的CPU核和tid2对应的组运行核之间存在交集,可以设置tid2表示的线程2的运行核为交集中的CPU核。
设置接口设置tid2到配置核上运行的步骤参照设置接口设置tid1到配置核上运行的步骤,在此不再赘述。
步骤C22,设置接口在将线程2设置到配置的CPU核中的一CPU核运行后,向绑核模块返回用于表示tid2的配置核设置成功的消息。
线程2被设置到配置核后,该线程2在配置核上运行。
如前所述,某个线程所在的CPU组的组运行核限制了该线程只能在组运行核中的CPU核上运行,若某线程的组运行核不包括设置的任一配置核,则设置接口在设置该线程到配置核上运行时设置失败。
作为示例,线程2所在的CPU组的组运行核为CPU的小核(例如,1核和3核),则限制了线程2的需要在CPU的小核(例如,1核和3核)上运行。配置文件中为线程2设置的配置核为CPU的大核(例如,6核)的情况下,则设置接口有可能在将线程2从当前运行的CPU核设置到配置核上运行时设置失败。
在设置失败的情况下,参照图6所示实施例提供的任务调度方法的时序图。
图6中步骤B1至步骤C20和图5中的步骤B1至步骤C20相同,可以参照图5中的步骤B1至步骤C20,在此不再赘述。图6中省略步骤C14至步骤C17。
步骤C21,设置接口在tid2对应的配置核ID表示的CPU核和tid2对应的组运行核之间不存在交集,无法成功设置tid2表示的线程2的运行核为交集中的CPU核。
步骤C22,,设置接口向绑核模块发送用于表示tid2的配置核设置失败的消息。
步骤C23,绑核模块向CPU核查询模块中存储的CGroup虚拟文件系统中的根分组写入线程2的线程ID,使得将线程2设置到根分组中。
在本申请实施例中,在一CPU组(原CPU组)内存在某线程ID,若在另一CPU组(新CPU组)内写入该线程ID,则原CPU组内的该线程ID消失。
需要说明,在步骤C23之前,还需要执行以下步骤:
绑核模块向CPU核查询模块中存储的CGroup虚拟文件系统发送线程2的CPU组的读取请求。
CPU核查询模块中存储的CGroup虚拟文件系统中存储有线程所在的CPU组以及所在的CPU组的组运行核等信息。
绑核模块从CPU核查询模块中存储的CGroup虚拟文件系统读取到线程2的CPU组。
本申请实施例中,该线程当前所在的CPU组可以记为第一控制族群,第一控制族群对应的组运行核记为第一CPU核集。该线程当前所在的CPU核记为第一CPU核。
绑核模块以数组的形式缓存线程2的初始态信息(例如,所在的CPU组)在绑核模块中。
绑核模块缓存线程2的初始态信息,便于在该场景关的情况下,将线程2的分组恢复到初始态。详细参照图10和图11所示实施例的描述。
步骤C24,绑核模块在CPU核查询模块中存储的CGroup虚拟文件系统写操作成功后,绑核模块向设置接口发送tid2和配置核ID(配置的CPU核ID)。
在写操作成功后,该线程当前所述的CPU组记为第二控制族群,第二控制族群对应的组运行核记为第二CPU核集。本申请实施例中,第二控制族群为对应的第二CPU核集和配置的CPU核存在交集(具有相同的CPU核)的控制族群。本申请实施例可以将根分组作为第二控制族群。
设置接口接收到tid2和配置核ID后,设置线程2从当前的运行核到配置核上运行。
步骤C25,设置接口向CPU核查询模块中存储的CGroup虚拟文件系统发送接收到的线程ID(tid2),以请求CGroup虚拟文件系统返回该线程ID所在的CPU组设置的CPU核ID。该CPU核ID表示上述实施例中的组运行核。
步骤C26,CPU核查询模块返回tid2所在的CPU组设置的组运行核对应的标识。
步骤C27,tid2对应的配置核ID表示的CPU核和tid2对应的组运行核之间存在交集,可以设置tid2表示的线程2的运行核为交集中的CPU核。
步骤C28,设置接口在对tid2的配置核设置成功后,向绑核模块返回用于表示tid2的配置核设置成功的消息。tid2表示的线程2成功设置为配置核后,该线程2在配置核上的任一CPU核上运行。
本申请实施例中,将线程成功设置配置核后,该线程所在的运行核记为第二CPU核。在该线程(例如线程2)切换过CPU组的情况的下,该线程的第二CPU核为第二CPU核集和第三CPU核集的交集中的CPU核。在该线程(例如线程1)未切换过CPU组的情况的下,该线程的第二CPU核为第一CPU核集和第三CPU核集的交集中的CPU核。为了提高线程的处理速度,第二CPU核的运算能力高于第一CPU核,例如,第一CPU核为小核,第二CPU核为大核。
图6所示实施例中,在设置接口返回设置失败的消息的情况下,绑核模块缓存设置失败的线程的CPU组,并切换设置失败的线程至根分组,从而再次设置线程到配置核上运行。
作为另一实施例,参照图7所示流程图,可以由绑核模块先判断是否需要缓存可能设置失败(组运行核不包括配置核)的线程的CPU组,并切换可能设置失败的线程至根分组,然后再向设置接口发送该线程名和配置核ID。
以任一个线程为例,绑核模块在接收到线程匹配模块发送的线程ID和配置核ID之后,可以执行以下步骤:
S11,绑核模块从CPU核查询模块中存储的CGroup虚拟文件系统中获取线程所在的CPU组和所在的CPU组的组运行核。
S12,绑核模块判断线程的配置核是否为组运行核的子集。
S13,若线程的每个配置核均不为组运行核的子集,则绑核模块缓存线程所在的CPU组。
S14,绑核模块向CPU核查询模块中存储的CGroup虚拟文件系统中的根分组写入线程ID,以将线程迁移至根分组。
S15,绑核模块向设置接口发送线程ID和配置核ID(配置的CPU核ID)。
当然,在步骤S12后,若线程的任一配置核为所在的CPU组的组运行核的子集,则执行步骤S15,绑核模块向设置接口发送线程ID和配置核ID。
如前所述,proc文件系统存储了当前运行的进程(进程名和进程ID)以及该进程下运行的线程(线程名和线程ID),线程匹配模块从proc文件系统存储的大量信息中查找进程A中的线程1、进程B中的线程2和进程C中的线程3的过程会耗费大量时间。
若配置的线程所在的进程为系统进程(即电子设备正常运行需要的进程),即不会因为某个支持任务调度的场景开启而开启,也不会因为某个支持任务调度的场景的关闭而消亡(例如,surfaceflinger线程用于合成图像,只要电子设备处于开启状态(屏幕需要刷新),surfaceflinger线程就不会消亡),所以从proc文件系统查找从配置信息中匹配的surfaceflinger线程时的作用不在于确定该surfaceflinger线程是否处于运行状态,而在于获取到从配置信息匹配的surfaceflinger线程的ID。然而,surfaceflinger线程每次开启后的线程ID并不相同,所以,无法在配置文件直接配置surfaceflinger线程的线程ID。
基于上述描述可以理解,若某个线程所在的进程为电子设备的系统进程,则电子设备开机后该线程的ID不再改变,因此,可以将从proc文件系统查询到的该线程的线程ID存储在另一文件中。在电子设备未关闭或未重启的情况下,该线程的ID不会改变。若在电子设备开机后非首次识别到当前支持任务调度的场景ID的情况下,从该另一文件中获取该线程的线程ID,降低查找时间,提高处理效率。
参见图8所示实施例提供的时序图,可以解决线程匹配模块从线程ID查询模块中的proc文件系统查找进程A中的线程1、进程B中的线程2和进程C中的线程3的过程耗费大量时间的问题。
相对于图5、图6和图7所示实施例,在步骤C11从proc文件系统查找到线程1(tid1)和线程2(tid2)之后,增加步骤D3,将从proc文件系统查找到的线程1的tid1和线程2的tid2存储在cache文件(可以记为第二文件)中,该cache文件缓存在静态内存中。
在具体实现时,电子设备开机后首次识别到某个支持任务调度的场景ID时,从线程ID查询模块的proc文件系统中查找是否存在从解析信息中查找到的进程名下的线程名并在查找到线程的情况下返回线程ID,并将线程名和线程ID存储在cache文件中。在首次之后再次识别到同一支持任务调度的场景ID时,从缓存的cache文件中查找是否存在从解析信息中查找到的线程名并在能够查找到该线程名的情况下返回该线程名对应的线程ID。
当然,实际应用中,也可以设置:电子设备开机后,无论哪一次识别到某个支持任务调度的场景ID时,从解析信息匹配到相关的进程名和线程名(步骤C9)后,执行步骤D1首先从缓存的cache文件中查找是否存在从解析信息中查找到的线程名以及对应的线程ID。
参照图8所示时序图中的步骤D2,若缓存的cache文件中查找到不存在从解析信息中匹配到的进程名下的线程名(进程A下的线程1、进程B下的线程2和进程C下的线程3),则需要执行步骤C10和C11从线程ID查询模块的proc文件系统中查找 是否存在从解析信息中匹配到的进程名下的线程名(进程A下的线程1、进程B下的线程2和进程C下的线程3)。
在执行步骤C10和C11从proc文件系统中查找到从解析信息中匹配到的进程名下的线程名后,执行步骤D3,将从proc文件系统中新查找到的线程名和线程ID存储在cache文件中。
另外,图8所示的实施例中,某个配置的线程所在的进程可能并不是系统进程,即线程的线程ID可能发生变化。若应用在配置的线程的线程ID可能发生变化的场景中时,也可以从cache文件中获取到线程名和线程ID,但是,需要对从cache文件获取的线程名和线程ID进行核验。
实际应用中,cache文件中还存储有线程所在的进程名和进程ID。因此,可以从cache文件中获取到的进程名、进程ID、该进程名下的线程名和线程ID。基于从cache文件中获取到的进程名、进程ID、该进程名下的线程名和线程ID,从proc文件系统中核验线程名对应的线程ID是否正确。
作为示例,从cache文件查询到的信息包括:进程名为进程1、进程ID为pid1的进程;以及该进程下线程名为线程1、线程ID为tid1的线程。可以从proc文件系统中查询pid1下的进程名节点(例如,comm节点)是否为进程1。若是,则在pid1对应的线程目录(例如,task目录)下查找tid1目录,查找到tid1目录后,在tid1目录下查找tid1下的线程名节点(例如,comm节点)是否为线程1。若是,则对线程1(tid1)核验成功;若上述步骤中任一步骤失败,则对线程1(tid1)核验失败。
从cache文件查找到的每一个线程均核验成功的情况下,表示全部核验成功,可以进行绑核操作。若从cache文件查找到的任一个线程核验失败的情况下,从cache文件中删除本次从配置文件中匹配到的线程名对应的缓存信息。然后,从proc文件系统重新查找从配置文件的解析信息中匹配到的进程名和进程下的线程名分别对应的ID。并将从prco文件系统重新查找到的信息存储在cache文件中。
作为另一实施例,参照图9所示时序图中的步骤D1和步骤D2,若某次运行到步骤D1后,从缓存的cache文件中查找到存在部分从解析信息中匹配到的线程名(例如,进程A下的线程1和进程B下的线程2),则步骤D2线程匹配模块获取到线程1的线程ID(tid1)和线程2的线程ID(tid2),然而,未查找到线程3的线程ID,则需要执行步骤C9和C10从线程ID查询模块的proc文件系统中查找未从cache文件中查找到的线程名(线程3)和线程ID。
这是由于某个线程可能会在多个场景中用到,多个场景也可能配置不同的线程。
作为示例,涉及合成图像的场景可能都会用到surfaceflinger进程下的surfaceflinger线程,并非仅局限于备忘录的手写笔场景,例如,多屏互动场景也可能使用到surfaceflinger进程下的surfaceflinger线程。然而,备忘录的手写笔场景可能配置了多屏互动场景下没有配置的另一线程:线程2。若电子设备开机后执行过多屏互动场景,则cache文件中存储有surfaceflinger线程的线程ID(tid1),若电子设备在识别到多屏互动场景后识别到备忘录的手写笔场景,则此时cache文件中存储有surfaceflinger线程和tid1,然而,未存储线程2和tid2,线程3和tid3。因此,还需要从proc文件系统中查找线程2和线程3,并在查找到某个线程的情况下返回查找到的线程的线程 ID。具体参见图9中的步骤D1至步骤C11。图9中步骤C1至步骤C9可以参照上述图5所示实施例中的描述,图9中的步骤C11至步骤C22可参照上述图5所示实施例中的描述,在此不再赘述。其他步骤参照以下描述:
步骤D1,线程匹配模块从cache文件中查找是否存在线程1、线程2和线程3。
步骤D2,线程匹配模块从cache文件查找到线程1的线程ID(tid1)。
步骤C10,线程匹配模块在确定还有线程ID(线程2的线程ID和线程3的线程ID)未查找到的情况下,继续从线程ID查询模块的proc文件系统查找线程2和线程3。
步骤C11,线程匹配模块从proc文件系统查找到线程2的线程ID(tid2)。
步骤D3,线程匹配模块将从proc文件系统查找到线程2和线程2线程ID存储在cache文件中。
当然,若步骤C11,线程匹配模块将从proc文件系统未查找到线程2和线程2的线程ID,也未查询到线程3和线程3的线程ID,则无需执行步骤D3。
作为另一示例,若步骤D2,线程匹配模块从cache文件查找到从解析信息匹配到的每个线程的线程ID,即线程匹配模块无需执行步骤C10和步骤C11,自然也无需执行步骤D3。
上述均以识别到某个支持任务调度的场景的开启为例,下面以某个支持任务调度的场景的关闭为例,描述本申请实施例提供的任务调度方法的时序图。关闭某个场景时的时序图和开启某个场景时的时序图相互对应。
参加图10,上述实施例对应的场景在关闭时恢复初始状态的方法时序图。
步骤E1,用户在结束使用备忘录后,退出备忘录应用,例如可以将备忘录切换回后台,还可以关闭备忘录。
步骤E2,场景识别模块检测到备忘录应用关闭。
步骤E3,场景识别模块检测到备忘录应用关闭后确定场景ID(例如,0)和关标识。该场景ID和关标识表示关闭备忘录场景。
实际应用中,在备忘录应用切换回后台的情况下,场景识别模块也可以确定场景ID(例如,0)和关标识。在当前为手写笔场景(内核节点1中当前存储的为手写笔场景ID和开标识)下,用户通过手指触碰备忘录的手写界面的情况下也可以确定场景ID(例如,0)和关标识。在用户的操作触发备忘录应用当前由手写笔场景切换为其他任意场景(或关闭)的情况下,场景识别模块均可以确定场景ID(例如,0)和关标识。
同理,内核节点1或场景识别模块中也可以设置以下逻辑内容:
在内核节点1中写入的为场景ID和关标识的情况下,若内核节点1再次接收到场景识别模块发送的同一场景ID和关标识,则内核节点1不再向线程匹配模块发送新接收到的场景ID和关标识。
在内核节点1中已经写入的为场景ID和开标识的情况下,内核节点1接收到的场景识别模块发送同一场景ID和关标识的情况下,内核节点1向线程匹配模块发送接收到的同一场景ID和关标识。
本申请实施例中,可以将电子设备检测到的退出所述第一应用的操作、切换所述 第一应用到后台的操作或用户触摸所述第一应用的界面的操作均记为第二操作。
步骤E4,场景识别模块向内核节点1写入关标识和场景ID。
步骤E5,内核节点1检测到写入操作后,基于上述逻辑将写入的数据(关标识和场景ID)发送给线程匹配模块。
步骤E6,线程匹配模块接收到内核节点1发送的关标识和场景ID后,基于场景ID从解析信息中获取与场景ID对应的进程下的线程:进程A、线程1;进程B、线程2;和进程C、线程3。
其中,在某个支持任务调度的场景的开关标识为关标识时,从解析信息中获取与该场景ID匹配的信息时可以不再获取配置核。
步骤E7,线程匹配模块从存储器存储的cache文件中查找是否存在线程1、线程2和线程3。
步骤E8,线程匹配模块查到的结果包括线程1和线程2,则获得线程1的线程ID(tid1)和线程2的线程ID(tid2)。
若采用上述设置cache文件的方法,则表示为支持任务调度的场景配置的线程为电子设备开机后始终运行的线程,不会因为某个场景开而运行,也不会因为某个场景关而消亡。当然,电子设备开机或重启后,电子设备会清空cache文件中存储的线程名和线程ID。
若不是上述情况,若仍然采用上述设置cache文件的方法,则可能会出现以下情况:
电子设备开机后,首次识别到场景1开启时,线程1启动并运行,此时线程1的线程ID为tid11,从场景1的解析信息中匹配到线程1,从cache文件未查找到线程1,则从proc文件系统查找到线程1的线程ID,存储线程1和线程ID到cache文件中。场景1结束后,线程1消亡。
再次识别到场景1开启时,线程1启动并运行,此时线程1的线程ID为tid12(同一线程消亡后再次启动后会分配新的线程ID),从场景1的解析信息中匹配到线程1,从cache文件查找到线程1,但是查找到的线程1的线程ID为tid11,而此时线程1的线程ID已经变为tid12,因此,上述设置cache文件的方法不再适用。当然,从proc文件系统查找到线程1的线程ID时查找到的线程ID为tid12。
所以,在为场景配置的线程不是电子设备开机后始终运行的线程的情况下,不能采用上述设置cache文件的方法,而是需要从proc文件系统查找线程ID。或者采用上述实施例中提供的从proc文件系统核验的方法。
本申请实施例以设置cache文件保存线程ID的方法和切换过线程2的CPU组为例进行描述。
步骤E9,由于从cache文件未查询到线程3的线程ID,因此,线程匹配模块还需要从内proc文件系统查询线程的线程ID。
步骤E10,线程匹配模块从proc文件系统未查询到线程3的线程ID。
在此需要说明,某个线程在场景开时和关闭时都未从proc文件系统查询到,可能是配置错误导致,也可能在存储配置文件后随着系统改进,某个场景不再依赖于某个线程。
步骤E11,线程匹配模块向绑核模块发送线程ID(tid1和tid2)以及表示电子设备全部CPU核的全核ID。
其中,全核ID可以采用“11111111”标识,具体表示可以设置8核CPU中的0核至7核。
即线程匹配模块在场景开时向绑核模块发送的配置核ID,在场景关时向绑核模块发送为全核ID。
步骤E12,绑核模块接收到线程匹配模块发送的线程ID(tid1和tid2)后,查找是否存在tid1和tid2的缓存信息,查询结果为存在tid2的缓存信息。其中,缓存信息存储在第一存储空间。
若查找的结果为存在tid2的缓存信息,说明之前对线程2重新设置过CPU组。因此,需要将线程2切换回缓存信息中存储的原CPU组。
步骤E13,绑核模块向CPU核查询模块中存储的CGroup虚拟文件系统中的初始CPU分组(存储在缓存信息)写入tid2,以切换线程2的CPU组为:切换到根分组之前的初始CPU组(第一控制族群)。
步骤E14,在写操作成功后,需要将存储的tid的缓存信息清除。
步骤E15,绑核模块向CPU核查询模块中存储的CGroup虚拟文件系统写操作成功后,依次对从线程匹配模块接收到的线程ID和全核ID进行绑核操作。例如,先将tid1和全核ID(表示全部CPU核的ID)发送到设置接口。
设置接口设置tid1表示的线程1到所在的CPU组的组运行核上运行。
步骤E16,设置接口向CPU核查询模块中存储的CGroup虚拟文件系统发送接收到的线程ID(tid1),以请求CGroup虚拟文件系统返回该线程ID所在的CPU组设置的CPU核ID。该CPU核ID表示上述实施例中的组运行核。
步骤E17,CPU核查询模块返回tid1所在的CPU组设置的组运行核对应的标识。
步骤E18,tid1对应的配置核ID表示的CPU核和tid1对应的组运行核之间存在交集,可以设置tid1表示的线程1的运行核为交集中的CPU核。
在此需要说明,线程1所在的CPU组已经限制了允许线程1运行的CPU核为线程1的CPU组的组运行核,在绑核模块发送到设置接口的为全核ID的情况下,设置接口取线程1所在的CPU组的组运行核和全核的交集得到的结果仍然为线程1所在的CPU组的组运行核,因此,设置的结果为:线程1到线程1所在的CPU组的组运行核中的任一个CPU核上运行。
步骤E19,设置接口成功设置线程1的运行核后,向绑核模块发送用于表示线程1(tid1表示的线程)的运行核设置成功的消息。线程1的运行核设置为所在CPU组的组运行核后,该线程1可以在所在CPU组的组运行核中的任一个CPU核上运行。
步骤E20,绑核模块继续发送tid2和全核ID到设置接口。
设置接口接收到tid2和全核ID后,设置线程2的运行核为线程2所在的CPU组的组运行核。
步骤E21,设置接口向CPU核查询模块中存储的CGroup虚拟文件系统发送接收到的线程ID(tid2),以请求CGroup虚拟文件系统返回该线程ID所在的CPU组设置的CPU核ID。该CPU核ID表示上述实施例中的组运行核。
步骤E22,CPU核查询模块返回tid2所在的CPU组设置的组运行核对应的标识。
步骤E23,tid2对应的配置核ID表示的CPU核和tid2对应的组运行核之间存在交集,可以设置tid2表示的线程2的运行核为交集中的CPU核。
步骤E24,设置接口成功设置tid2表示的线程2的运行核后,向绑核模块发送用于表示tid2的运行核设置成功的消息。
需要说明,若线程2的初始CPU组的组运行核为1核和3核,在将线程2切换到根分组之前,线程2可能运行在1核上,在场景关时,虽然将线程2切换回初始CPU组,然而,线程2可能运行在1核,也可能运行在3核。因此,可以在场景关时,成功设置线程2的运行核(步骤E24)后,线程2当前的运行核可以记为第四CPU核,第四CPU核可以和第一CPU核相同,也可以不相同。
另外,为便于描述,也可以将在场景关时,线程1这种未切换过CPU组的线程成功设置运行核(步骤E19)后,线程1当前的运行核可以记为第三CPU核,第三CPU核可以和第一CPU核相同,也可以不相同。
作为本申请另一实施例,还可以采用另一方式实现上述实施例描述的任务调度方法对应的场景在关闭时恢复初始状态的方法。该任务调度方法以不设置cache文件和场景开始切换过线程2的CPU组为例。
参照图11,为本申请实施例提供的某个支持任务调度的场景在关闭时恢复初始状态的方法的时序图。
与图10的区别包括:取消图10所示实施例中的步骤E7和步骤E8。图10中的步骤E7和步骤E8以线程匹配模块从cache文件获取发送到绑核模块的线程ID。若不设置cache文件,则线程匹配模块从proc文件系统获取发送到绑核模块的线程ID。
若图11所示实施例中取消步骤E7和步骤E8,因此,图11中,执行步骤E9时,需要查找进程A下的线程1,进程B下的线程2和进程C下的线程3。
步骤E10,查询到的结果为线程1的线程ID(tid1)和线程2的线程ID(tid2)。
如前所述,该线程不是电子设备开机后始终运行的线程,而是随着场景开而运行、随着场景关而消亡的线程。若为支持任务调度的场景配置有这种线程,则在识别到该场景关的情况下,该线程也可能从proc文件系统中消失。
本申请实施例的步骤E9会在该线程消亡前执行完毕。
图11所示实施例中的其他步骤请参照图10所示实施例中的描述,在此不再赘述。
图10和图11均以在场景开时切换过线程2的CPU组为例进行描述,实际应用中,在场景开时未切换过线程2的CPU组的情况下,步骤E12查找不到线程2的缓存信息,则无需执行步骤E13。
另外,上述实施例均以场景开时从proc文件系统查找不到线程3为例进行描述,实际应用中,并不表示配置文件中一定配置了查找不到的线程。作为一种示例,图8所示实施例中,若步骤D1和步骤D2能够从cache文件查询到线程1的线程ID、线程2的线程ID和线程3的线程ID,则无需执行步骤C9、步骤C10和步骤D3。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例还提供了一种计算机程序产品,当计算机程序产品在第一设备上运行时,使得第一设备可实现上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质至少可以包括:能够将计算机程序代码携带到第一设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
本申请实施例还提供了一种芯片系统,芯片系统包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机程序,以实现本申请任一方法实施例的步骤。芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (19)
- 一种任务调度方法,其特征在于,包括:电子设备显示第一应用的界面,第一线程运行在第一CPU核,所述第一线程用于所述第一应用的界面的显示处理;所述电子设备接收手写笔在所述第一应用的界面上的第一输入;响应于所述第一输入,所述电子设备控制所述第一线程运行在第二CPU核,所述第二CPU核的运算能力高于所述第一CPU核的运算能力。
- 如权利要求1所述的方法,其特征在于,所述第一线程为第一控制族群内的线程,所述第一控制族群内的线程被允许运行在第一CPU核集中的任一CPU核,所述第一CPU核为所述第一CPU核集中的任一CPU核。
- 如权利要求2所述的方法,其特征在于,所述电子设备控制所述第一线程运行在第二CPU核之后,所述方法还包括:所述电子设备接收第二操作,所述第二操作包括退出所述第一应用的操作、切换所述第一应用到后台的操作或用户触摸所述第一应用的界面的操作;响应于所述第二操作,所述电子设备控制所述第一线程运行在第三CPU核,所述第三CPU核为所述第一CPU核集中的CPU核。
- 如权利要求2所述的方法,其特征在于,所述电子设备控制所述第一线程运行在第二CPU核之前,所述方法还包括:所述电子设备设置所述第一线程为第二控制族群内的线程,所述第二控制族群内的线程被允许运行在第二CPU核集中的任一CPU核,所述第二CPU核为所述第二CPU核集中的CPU核。
- 如权利要求4所述的方法,其特征在于,所述电子设备控制所述第一线程运行在第二CPU核之后,所述方法还包括:所述电子设备接收第二操作,所述第二操作包括退出所述第一应用的操作、切换所述第一应用到后台的操作或用户触摸所述第一应用的界面的操作;响应于所述第二操作,所述电子设备设置所述第一线程为所述第一控制族群内的线程;所述电子设备控制所述第一线程运行在第四CPU核,所述第四CPU核为所述第一CPU核集中的任一CPU核。
- 如权利要求1至5任一项所述的方法,其特征在于,所述手写笔在所述第一应用的界面上的第一输入包括:所述第一应用在前台运行后,所述手写笔在所述第一应用的手写界面上的首次接触生成的输入。
- 如权利要求3所述的方法,其特征在于,所述第二操作为用户触摸所述第一应用的界面的操作;所述手写笔在所述第一应用的界面上的第一输入包括:在所述电子设备接收所述第二操作之后,所述手写笔在所述第一应用的手写界面上的首次接触生成的输入。
- 如权利要求1至7任一项所述的方法,其特征在于,所述显示处理包括:绘制处理、渲染处理和合成处理中的至少一个。
- 如权利要求5所述的方法,其特征在于,在所述电子设备设置所述第一线程为第二控制族群内的线程之前,还包括:所述电子设备将所述第一线程和所述第一控制族群存储在第一存储空间;相应的,所述电子设备设置所述第一线程为所述第一控制族群内的线程之前,包括:所述电子设备从所述第一存储空间查询到所述第一线程和所述第一控制族群。
- 如权利要求2或3所述的方法,其特征在于,所述电子设备控制所述第一线程运行在第二CPU核包括:所述电子设备获取第三CPU核集,所述第三CPU核集为为所述第一线程配置的CPU核;在所述第一CPU核集和第三CPU核集包含有相同的CPU核的情况下,所述电子设备控制所述第一线程运行在第二CPU核,所述第二CPU核为所述相同的CPU核中的一个。
- 如权利要求4或5所述的方法,其特征在于,所述电子设备设置所述第一线程为第二控制族群内的线程包括:所述电子设备获取第三CPU核集,所述第三CPU核集为为所述第一线程配置的CPU核;在所述第一CPU核集和所述第三CPU核集不包含有相同的CPU核的情况下,所述电子设备设置所述第一线程为所述第二控制族群内的线程,所述第二CPU核为所述第二CPU核集和所述第三CPU核集包含的相同的CPU核中的一个。
- 如权利要求4或5所述的方法,其特征在于,所述电子设备控制所述第一线程运行在第二CPU核包括:所述电子设备获取第三CPU核集,所述第三CPU核集为为所述第一线程配置的CPU核;所述电子设备设置运行所述第一线程的CPU核为所述第三CPU核集中的CPU核;在设置失败的情况下,所述电子设备设置所述第一线程为所述第二控制族群内的线程,所述第二CPU核集和所述第三CPU核集包含有相同的CPU核;在将所述第一线程设置为所述第二控制族群内的线程之后,所述电子设备设置运行所述第一线程的CPU核为第三CPU核集中的CPU核,在设置成功后,所述第一线程运行在所述第二CPU核,所述第二CPU核为所述第二CPU核集和第三CPU核集包含的相同的CPU核中的一个。
- 如权利要求10至12任一项所述的方法,其特征在于,所述方法还包括:所述电子设备开机后,所述电子设备获取配置文件,所述配置文件用于为第一场景标识配置所述第一线程和为所述第一线程配置第三CPU核集;所述电子设备解析所述配置文件获得解析信息;所述电子设备以map数据结构存储所述解析信息;相应的,所述电子设备获取第三CPU核集包括:响应于所述第一输入,所述电子设备确定第一场景标识;所述电子设备从所述解析信息获取为所述第一场景标识配置的所述第一线程和为 所述第一线程配置的所述第三CPU核集。
- 如权利要求13所述的方法,其特征在于,所述电子设备从所述解析信息获取为所述第一场景标识配置的所述第一线程包括:所述电子设备从所述解析信息获取为所述第一场景标识配置的第一线程的第一线程名;相应的,所述电子设备控制所述第一线程运行在第二CPU核包括:所述电子设备从第一文件系统查找与所述第一线程名匹配的线程标识,所述第一文件系统存储有所述电子设备当前运行的线程的线程名和线程标识;在所述电子设备从所述第一文件系统查找到与所述第一线程名对应的第一线程标识的情况下,所述电子设备控制所述第一线程标识表示的所述第一线程运行在所述第二CPU核。
- 如权利要求14所述的方法,其特征在于,所述电子设备从第一文件系统查找与所述第一线程名对应的线程标识之前,所述方法还包括:所述电子设备从第二文件查找所述第一线程名对应的线程标识;相应的,所述电子设备从第一文件系统查找与所述第一线程名对应的线程标识包括:在所述电子设备从所述第二文件未查找到所述第一线程名对应的线程标识的情况下,所述电子设备从所述第一文件系统查找与所述第一线程名对应的线程标识;相应的,在所述电子设备从所述第一文件系统查找到与所述第一线程名对应的第一线程标识的情况下,所述方法还包括:所述电子设备在所述第二文件存储所述第一线程名对应的所述第一线程标识。
- 如权利要求15所述的方法,其特征在于,所述电子设备从第二文件查找所述第一线程名对应的线程标识之后,所述方法还包括:在所述电子设备从所述第二文件查找到所述第一线程名对应的所述第一线程标识的情况下,所述电子设备设置所述第一线程标识表示的所述第一线程运行在所述第二CPU核。
- 一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于运行存储器中存储的计算机程序,以使得所述电子设备实现如权利要求1至16任一项所述的方法。
- 一种芯片系统,其特征在于,包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如权利要求1至16任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储计算机程序,所述计算机程序在处理器上运行时实现如权利要求1至16任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP22874569.1A EP4276622A1 (en) | 2021-09-30 | 2022-09-05 | Task scheduling method, electronic device, chip system, and storage medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111169277.3 | 2021-09-29 | ||
CN202111169277.3A CN115904647A (zh) | 2021-09-30 | 2021-09-30 | 一种任务调度方法、电子设备、芯片系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023051178A1 true WO2023051178A1 (zh) | 2023-04-06 |
Family
ID=85737717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2022/117051 WO2023051178A1 (zh) | 2021-09-30 | 2022-09-05 | 一种任务调度方法、电子设备、芯片系统及存储介质 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4276622A1 (zh) |
CN (1) | CN115904647A (zh) |
WO (1) | WO2023051178A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076770A (zh) * | 2004-09-28 | 2007-11-21 | 英特尔公司 | 根据可用并行数目改变每条指令能量的方法和设备 |
CN109284180A (zh) * | 2018-08-30 | 2019-01-29 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN109947569A (zh) * | 2019-03-15 | 2019-06-28 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN111831414A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 线程迁移方法、装置、存储介质及电子设备 |
-
2021
- 2021-09-30 CN CN202111169277.3A patent/CN115904647A/zh active Pending
-
2022
- 2022-09-05 EP EP22874569.1A patent/EP4276622A1/en active Pending
- 2022-09-05 WO PCT/CN2022/117051 patent/WO2023051178A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076770A (zh) * | 2004-09-28 | 2007-11-21 | 英特尔公司 | 根据可用并行数目改变每条指令能量的方法和设备 |
CN109284180A (zh) * | 2018-08-30 | 2019-01-29 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、电子设备及存储介质 |
CN109947569A (zh) * | 2019-03-15 | 2019-06-28 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
CN111831414A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 线程迁移方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115904647A (zh) | 2023-04-04 |
EP4276622A1 (en) | 2023-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351422B (zh) | 一种通知消息的预览方法、电子设备及相关产品 | |
WO2020211709A1 (zh) | 一种添加批注的方法及电子设备 | |
US11922935B2 (en) | Voice interaction method and apparatus, terminal, and storage medium | |
CN112714214B (zh) | 一种内容接续方法、设备、系统、gui及计算机可读存储介质 | |
WO2020108356A1 (zh) | 一种应用显示方法及电子设备 | |
CN111724775B (zh) | 一种语音交互方法及电子设备 | |
WO2021115194A1 (zh) | 一种应用图标的显示方法及电子设备 | |
WO2021110133A1 (zh) | 一种控件的操作方法及电子设备 | |
WO2021121052A1 (zh) | 一种多屏协同方法、系统及电子设备 | |
CN106406940B (zh) | 系统升级方法、装置及终端 | |
WO2022100221A1 (zh) | 检索处理方法、装置及存储介质 | |
WO2020211705A1 (zh) | 一种联系人的推荐方法及电子设备 | |
WO2021185352A1 (zh) | 一种版本升级方法及相关装置 | |
US20220116497A1 (en) | Image Classification Method and Electronic Device | |
WO2022228377A1 (zh) | 录音方法、装置、电子设备和可读存储介质 | |
CN115016706B (zh) | 一种线程的调度方法及电子设备 | |
WO2023051178A1 (zh) | 一种任务调度方法、电子设备、芯片系统及存储介质 | |
CN114117269B (zh) | 备忘信息收藏方法、装置、电子设备及存储介质 | |
WO2021196980A1 (zh) | 多屏交互方法、电子设备及计算机可读存储介质 | |
US20240134700A1 (en) | Task scheduling method, electronic device, chip system, and storage medium | |
WO2020024087A1 (zh) | 一种触控装置的工作方法及终端 | |
WO2024032430A1 (zh) | 管理内存的方法和电子设备 | |
WO2023029985A1 (zh) | 一种桌面中停靠栏的显示方法及电子设备 | |
CN116048679B (zh) | 一种图层的处理方法、电子设备及可读存储介质 | |
CN116048544B (zh) | 一种弹窗广告的处理方法、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22874569 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022874569 Country of ref document: EP Effective date: 20230808 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 18547560 Country of ref document: US |