CN111831462A - Io请求的处理方法、装置、存储介质及电子设备 - Google Patents
Io请求的处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111831462A CN111831462A CN202010628768.9A CN202010628768A CN111831462A CN 111831462 A CN111831462 A CN 111831462A CN 202010628768 A CN202010628768 A CN 202010628768A CN 111831462 A CN111831462 A CN 111831462A
- Authority
- CN
- China
- Prior art keywords
- thread
- threads
- type
- target
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 230000003993 interaction Effects 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 43
- 230000000903 blocking effect Effects 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 117
- 230000008569 process Effects 0.000 claims description 78
- 230000002452 interceptive effect Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 19
- 239000010410 layer Substances 0.000 description 21
- 230000003068 static effect Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000026676 system process Effects 0.000 description 4
- 239000012792 core layer Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000013468 resource allocation Methods 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例公开了一种IO请求的处理方法、装置、存储介质及电子设备,其中,本申请实施例确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;当检测到处于IO等待状态的线程时,确定所述线程的类别;若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。当系统检测到执行交互事件中相关任务的线程进入到IO等待状态时,对处理器和/或存储器的工作频率进行提升,以加快线程的运行速度,尽快结束线程的IO等待状态,减少交互场景下的卡顿现象。
Description
技术领域
本申请涉及电子设备技术领域,具体涉及一种IO请求的处理方法、装置、存储介质及电子设备。
背景技术
随着技术的发展,电子设备中安装的各类应用程序越来越多,例如视频类应用、游戏类应用以及即时通讯类应用等。这使得电子设备经常需要在前台和后台运行很多个应用程序,容易在用户交互场景中出现卡顿现象。
发明内容
本申请实施例提供一种IO请求的处理方法、装置、存储介质及电子设备,能够减少交互场景下的卡顿现象。
第一方面,本申请实施例提供一种IO请求的处理方法,包括:
确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当检测到处于IO等待状态的线程时,确定所述线程的类别;
若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
第二方面,本申请实施例还提供一种IO请求的处理装置,包括:
线程标记模块,用于确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
线程识别模块,用于当检测到处于IO等待状态的线程时,确定所述线程的类别;
参数调整模块,用于若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
第三方面,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的IO请求的处理方法。
第四方面,本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的IO请求的处理方法。
本申请实施例提供的技术方案,执行交互事件中相关任务的线程的运行情况影响着是否会在交互事件中发生卡顿现象,如果这些线程长时间处于IO等待状态而不能正常运行,会导致线程的运行效率低下,出现卡顿现象。本申请的方案确定出用于执行交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当系统检测到这类线程进入到IO等待状态时,对处理器和/或存储器的工作频率进行提升,以加快线程的运行速度,尽快结束线程的IO等待状态,减少交互场景下的卡顿现象。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的IO请求的处理方法的第一种流程示意图。
图2为本申请实施例提供的IO请求的处理方法的应用场景示意图。
图3为本申请实施例提供的IO请求的处理方法的第二种流程示意图。
图4为本申请实施例提供的IO请求的处理装置的结构示意图。
图5为本申请实施例提供的电子设备的第一种结构示意图。
图6为本申请实施例提供的电子设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例提供一种IO请求的处理方法,该IO请求的处理方法的执行主体可以是本申请实施例提供的IO请求的处理装置,或者集成了该IO请求的处理装置的电子设备,其中该IO请求的处理装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1为本申请实施例提供的IO请求的处理方法的第一种流程示意图。本申请实施例提供的IO请求的处理方法的具体流程可以如下:
在101中,确定出用于执行交互事件中相关任务的目标线程,并将目标线程标记为第一类线程。
本申请实施例中,电子设备的操作系统可以是基于linux内核的系统,例如,安卓操作系统等。电子设备上运行着系统进程和应用程序的进程,线程是进程的一条执行路径,是程序执行时的最小单位。一个进程可以有多个线程,但至少有一个线程。对于内核来说,在进行资源调度时,比如CPU(central processingunit,中央处理器)调度,都是具体到某个线程的。进程内有一个主线程,它也会创建出很多子线程来协助工作。比如一个微信应用进程,它会起一个主线程来执行代码,执行途中也会起其它子线程来协助运行各部分的任务代码。
电子设备的系统进程和应用程序的进程的运行,都需要系统内核为其分配IO(Input/Output,输入输出)资源。当系统处于高IO负载状态下时,一些线程可能会进入到IO等待状态。比如,线程1需要等待系统中的线程2的IO处理完成才能继续运行,则认为线程1进入IO等待状态。如果线程长时间处于IO等待状态,则会导致线程运行效率低下。如果是那些影响到用户体验的线程因为长时间处于IO等待状态而导致线程运行效率低下,会产生卡顿现象,影响用户体验。本申请实施例为了解决这一问题,从系统线程中识别出影响到用户体验的线程,并将其标记出来。
本申请实施例中的进程包括系统级进程和应用级进程,进程有任务需要执行时,会创建线程来执行该任务。由于产生用户可感知的界面的卡顿的场景多是相对于运行在前台的进程来说的。因此,本申请实施例的方案中,在检测到切换到前台运行的进程时,先确定该前台进程。在确定前台进程后,从该前台进程的线程中确定出用于执行交互事件中相关任务的线程,作为目标线程。
例如,在一实施例中,从前台进程的线程中识别出用于执行交互事件中相关任务的第一预设线程,作为目标线程;为目标线程添加预设标签,以将线程标记为第一类线程。
由于执行交互事件中相关任务的线程是否能够流畅运行决定着是否会在交互事件中产生用户可感知的卡顿,故将这些与用户体验紧密相关的线程记为ux(userexperience,用户体验)线程,即第一类线程。本申请实施例中,将除ux线程之外的线程记为第二类线程。第二类线程的运行情况一般不对用户体验造成影响,或者影响较小。
其中,电子设备的系统架构至少包括应用框架(framework)层和内核(kernel)层,本申请实施例,从框架层和内核层的角度对ux线程进行识别和标记,例如,应用框架层为一些直接执行交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态ux线程,内核层将一些间接地影响到交互事件中相关任务执行的线程标记为动态ux线程。
比如,对于上述第一预设线程来说,包括进程运行时创建的一些用于直接执行交互事件的相关任务的线程,例如,UI(user interface,用户界面)线程,Render(渲染)线程,GL线程,用户输入事件的分发线程,用户输入事件的检测线程等,其中,GL线程为OGL(OpenGraphics Library,开放图形库)的渲染线程。这些线程是否能够流畅运行决定着是否会在用户与该进程的交互界面中产生用户可感知的卡顿。
比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这次交互事件中,需要UI线程、Render线程、用户输入事件的分发线程、用户输入事件的检测线程等线程共同工作,以完成本次交互事件,其中,每一个线程的运行都需要系统为其分配资源。因此,进程切换到前台运行时,识别出这些线程,并为其添加预设标签,例如ux标签,将其标记为ux线程。
其中,第一预设线程一般是应用级线程,这些线程可以是通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个线程处理任务太慢导致的,则可以认为该线程是用于执行交互事件中相关任务的,该线程的运行与用户体验紧密相关,可以将该线程作为第一预设线程。
基于此,可以通过对各种可能的卡顿场景进行测试,记录这些导致卡顿出现的线程。电子设备中存储这些第一预设线程的相关信息,当进程切换到前台运行时,将该进程下的属于预先记录的第一预设线程的线程都标记为ux线程。
可以理解的是,对于电子设备来说,存储的第一预设线程的相关信息并不是不可修改的,当进行系统升级时,可以对第一预设线程的相关信息进行更新。
此外,在另一实施例中,该方法还包括:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,第二预设线程为系统级线程。
由于在执行交互事件的过程中,除了应用级线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程(图层合成线程)、系统动画线程等。或者,在系统运行过程中,如果检测到有新的系统进程的线程创建并用来执行交互事件中相关任务,系统框架层也将这些线程标记为ux线程。比如,SystemUI(系统界面)线程。其中,第二预设线程也可以通过对实际的卡顿场景进行分析来确定。比如,在测试中,如果某一用户交互场景下发生了应用卡顿,通过对该场景分析发现卡顿现象是某个系统级线程处理任务太慢导致的,则可以认为该系统级线程是用于执行交互事件中相关任务的,该系统级线程的运行与用户体验紧密相关,可以将该系统级线程作为第二预设线程。电子设备中存储这些第二预设线程的相关信息,如果检测到系统创建了这些线程,则将其标记为ux线程。
Linux使用task_struct(任务结构)结构体描述和记录线程,每个线程都有对应的task_struct结构体。task_struct中记录了线程的名称、标识符、状态、优先级、内存指针、上下文数据等属性信息。因此,应用框架层可以在task_struct结构体中增加对应的uxflag(ux标志位)成员,以将前台进程的UI线程、Render线程、GL线程等执行交互事件中相关任务的线程,通过标记ux flag,使内核层能够识别该线程的任务属性。
需要说明的是,上述几种静态ux线程仅为举例说明,并不局限于此,只要是直接地执行交互事件中相关任务的线程,使得其运行情况直接地影响到用户体验的线程,都可以将其标记为静态ux线程。对于应用框架层来说,在检测到新创建的线程是用来执行交互事件,或者检测到某些常驻系统级线程是用以处理交互事件时,为这些线程添加ux标签,以将其标记为静态ux线程。
在另一实施例中,“从前台进程的线程中确定出用于执行交互事件中相关任务的目标线程,并将目标线程标记为第一类线程”,还包括:在前台进程的运行过程中,当检测到新创建的线程时,确定新创建的线程是否用于执行交互事件中的相关任务;当新创建的线程用于执行交互事件中的相关任务时,将新创建的线程标记为第一类线程。
前台进程在运行过程中,如果有交互事件发生,除了上述第一预设线程之外,还可能会有一些临时创建的任务线程,这些任务线程的运行也会直接影响到是否会在用户与该进程的交互界面中产生用户可感知的卡顿。因此,应用框架层会将这些线程也标记为ux线程,以优化系统对该线程的资源分配。
其中,电子设备根据检测到的用户指令确定发生的交互事件。需要说明的是,本申请实施例中的交互事件也可以理解为用户交互事件,一般是指用户触发了某指令后,电子设备需要即时的对该指令进行响应,进行某种处理并将处理结果显示在界面上的情况。例如,用户使用电子设备观看视频、编辑短信、使用聊天软件、使用游戏软件、控制电子设备界面的切换、使用浏览浏览网页等,都属于交互事件。比如,用户使用聊天软件与某一好友聊天,用户在对话框输入文字,电子设备通过服务器将用户输入的文字发送至该好友的电子设备。在这个过程中,电子设备需要调度多个线程以完成本次交互事件,从该交互事件的开始到完成的整个过程中,进程创建的用来完成这次交互事件的线程都可以认为是与用户体验相关的线程。
在一些实施例中,将目标线程标记为第一类线程之后,还包括:若前台进程为应用进程,则在检测到前台进程切换至后台运行时,删除第一预设线程的预设标签。
当前台进程切换到后台运行时,该进程的运行情况已经与用户体验无关,其线程的重要程度也有所下降,因此,可以将该进程对应的第一预设线程的ux标记删除,将这些ux线程恢复为普通线程,按照第二分配机制为其分配资源。
此外,对于那些在交互事件中临时创建的任务线程来说,在执行完对应的任务后就会被销毁,其自然会丢失掉ux标签。而对于系统级的第二预设线程来说,即使发生了进程的前后台切换,这些线程始终与用户体验相关,所以始终保有ux标签。
上述实施例介绍了静态ux线程的识别。还有一些线程虽然并没有直接地执行交互事件的相关任务,但是这些线程的运行情况也会影响到静态ux线程的运行情况,进而间接地影响到交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态ux线程产生关联,因此,在一些实施例中,为了进一步地减少交互场景下的卡顿现象,将这些与静态ux线程之间有约束关系的线程也标记为ux线程。而一旦这种约束关系结束,就会将该线程恢复至非ux线程。本申请实施例中将这类线程定义为动态ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界区资源等。比如,静态ux线程通过进程间通信请求的普通线程,静态ux线程通过某种线程间通信方式请求的普通线程,持有静态ux线程需要的等待信号量、读写信号量、互斥锁等临界区资源的普通线程等,本申请实施例中将这类线程标记为动态ux线程。
基于此,在一些实施例中,方法还包括:对第一类线程的运行状态进行检测;当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程;为关联线程添加预设标签,以将关联线程标记为第一类线程。
在一些实施例中,将关联线程标记为第一类线程之后,还包括:当检测到约束关系解除时,删除关联线程的预设标签。
其中,关于线程的阻塞状态,在内核层面一般会区分为D状态(Uninterruptablesleep状态,不可中断的睡眠状态)和S状态(interruptable sleep状态,可中断的睡眠状态),比如,线程发起IO请求但得不到满足,就进入D状态;线程发起同步Binder(一种进程间通信机制)请求,就会进入S状态。线程进入这些状态一般都是因为这些都是线程任务执行途中因为某些原因或者逻辑,需要主动或者被动地放弃CPU资源。
该实施例中,内核层对静态ux线程的状态进行检测,当检测到ux线程进入到阻塞状态时,确定出与进入阻塞状态的ux线程之间具有约束关系的关联线程,如果这些关联线程没有及时分配到资源,比如IO资源,而导致运行受阻,则由于关联线程的运行缓慢又会导致该ux线程长时间处于阻塞状态,因此,为了避免该ux线程长时间处于阻塞状态,内核层会将识别出的关联线程也标记为ux线程,以提高其IO处理效率,保证其及时执行,进而快速解除该ux线程的阻塞状态。
上文中介绍了应用框架层和内核层识别并标记ux线程的方式。通过上述多个实施例中的任意一种或者多种识别出线程中那些影响到用户体验的线程,并将其标记为ux线程。
在102中,当检测到处于IO等待状态的线程时,确定线程的类别。
在103中,若线程为第一类线程,则提升处理器和/或存储器的工作频率。
一旦内核检测到进入IO等待状态的线程,则先确定该线程的类别,如果该线程为ux线程,则提升处理器和/或存储器的工作频率,以加快线程的运行效率。比如,线程1需要等待系统中的线程2的IO处理完成才能继续运行,线程1进入IO等待状态,此时,如果提升了处理器和/或存储器的工作频率,加快了线程2的运行效率,线程2可以更快的完成IO处理,以缩短线程1处于IO等待状态的时间,同时,线程1运行时,也会因为处理器和/或存储器的工作频率的提升,能够以更高的效率运行,提升的交互事件的执行效率,减少交互场景下的卡顿现象。
其中,在一实施例中,确定该线程所在的处理器核心,将该处理器核心的工作频率提升到最大值。或者,在另一实施例中,将存储器的工作频率提升到最大值。或者,在另一实施例中,确定该线程所在的处理器核心,将该处理器核心和存储器的工作频率都提升到最大值。请参阅图2,图2为本申请实施例提供的IO请求的处理方法的应用场景示意图。改进前的相关技术中,线程运行时间和IO等待时间都较长,经过本申请的改进后,不仅缩短了IO等待时间,而且线程运行耗时也有所下降。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上可知,本申请实施例提供的IO请求的处理方法,执行交互事件中相关任务的线程的运行情况影响着是否会在交互事件中发生卡顿现象,如果这些线程长时间处于IO等待状态而不能正常运行,会导致线程的运行效率低下,出现卡顿现象。本申请的方案确定出用于执行交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当系统检测到这类线程进入到IO等待状态时,对处理器和/或存储器的工作频率进行提升,以加快线程的运行速度,尽快结束线程的IO等待状态,减少交互场景下的卡顿现象,提升用户体验。
请参阅图3,图3为本发明实施例提供的IO请求的处理方法的第二流程示意图。方法包括:
在201中,当检测到系统启动时,从系统启动过程创建的线程中确定出第二预设线程,并将第二预设线程标记为第一类线程。
由于执行交互事件中相关任务的线程是否能够流畅运行决定着是否会在交互事件中产生用户可感知的卡顿,故将这些与用户体验紧密相关的线程记为ux线程,即第一类线程。本申请实施例中,将除ux线程之外的线程记为第二类线程。第二类线程的运行情况一般不会影响用户体验。
其中,电子设备的系统架构至少包括应用框架层和内核层,本申请实施例,从框架层和内核层的角度对ux线程进行识别和标记,例如,应用框架层为一些直接执行交互事件中相关任务的线程添加预设标签,以将这些线程标记为静态ux线程,内核层将一些间接地影响到交互事件中相关任务执行的线程标记为动态ux线程。
由于在执行交互事件的过程中,除了对应的进程的线程之外,可能还涉及到一些系统级的线程来完成任务,系统框架层也需要将这些系统级线程标记为ux线程。一般这些线程在系统启动时就会创建,因此,可以在检测到系统启动时,识别出这些线程并进行标记,比如,Surfaceflinger线程、系统动画线程等。
在202中,当检测到切换至前台运行的进程时,确定前台进程。
在203中,从前台进程的线程中识别出用于执行交互事件中相关任务的第一预设线程,作为目标线程。
在204中,为目标线程添加预设标签,以将线程标记为第一类线程。
在205中,在前台进程的运行过程中,当检测到新创建的线程时,确定新创建的线程是否用于执行交互事件中的相关任务。
在206中,当新创建的线程用于执行交互事件中的相关任务时,将新创建的线程标记为第一类线程。
此外,在检测到切换到前台运行的进程时,先确定该前台进程。从该前台进程的线程中确定出用于执行交互事件中相关任务的线程,作为目标线程。例如,第一预设线程和一些临时创建的用来执行交互事件中相关任务的任务线程。对于第一预设线程,可以判断前台进程的线程的属性信息是否与预设的属性信息匹配,以确定出第一预设线程,将这些第一预设线程标记为ux线程,对于临时创建的任务线程,可以通过判断这些线程是不是交互事件的执行过程中创建的用来执行相关任务的线程,如果是,则也将其标记为ux线程。
在207中,对第一类线程的运行状态进行检测。
在208中,当检测到有第一类线程进入阻塞状态,则确定与进入阻塞状态的第一类线程之间有约束关系的关联线程。
在209中,为关联线程添加预设标签,以将关联线程标记为第一类线程。
还有一些线程虽然并没有直接地执行交互事件的相关任务,但是这些线程的运行情况也会影响到静态ux线程的运行情况,进而间接地影响到交互事件的相关任务的执行。也就是说,这些线程并不是总是与用户体验相关,但是这些线程在执行过程的某段时间内,可能通过资源约束与静态ux线程产生关联,因此,在一些实施例中,为了进一步地减少交互场景下的卡顿现象,将这些与静态ux线程之间有约束关系的线程也标记为ux线程。而一旦这种约束关系结束,就会将该线程恢复至非ux线程。本申请实施例中将这类线程定义为动态ux线程。其中,具体的约束关系包括但不限于进程间通信、线程间通信或者持有临界区资源等。比如,静态ux线程通过进程间通信请求的普通线程,静态ux线程通过某种线程间通信方式请求的普通线程,持有静态ux线程需要的等待信号量、读写信号量、互斥锁等临界区资源的普通线程等,本申请实施例中将这类线程标记为动态ux线程。此外,需要说明的是,动态ux线程的标记是内核层执行的,而从内核的角度来说,并不会去区分这些线程究竟是属于哪一个进程的,因此,内核只单纯从上述约束关系来对动态ux线程进行标记。
可以理解的是,临时创建的用来执行交互事件中相关任务的任务线程的标记,以及动态ux线程的标记,并不发生在前台进程运行的哪个特定阶段。因此,205至209、210至211与212至214的执行可以交叉的,不受所描述的各个步骤的执行顺序的限制。
在210中,当检测到有线程切换至前台运行时,判断切换至前台运行的线程是否为第一类线程;
若否,则执行211。
在211中,为线程添加第二预设标签,以将线程标记为第二类线程。
在212中,当检测到处于IO等待状态的线程时,确定线程的类别;
在213中,若线程为第一类线程,则将处理器的工作频率提升至最大值,并将存储器的工作频率提升至最大值。
在214中,若线程为第二类线程,则将存储器的工作频率提升至最大值。
该实施例中,除了标记ux线程之外,将除了ux线程之外的其他线程中运行在前台的线程标记为第二类线程,记为FG线程,将除了ux线程之外的其他线程中运行在后台的线程标记为第三类线程,记为BG线程。当进入IO等待状态的线程为ux线程时,确定该线程所在的处理器核心,将该处理器核心和存储器的工作频率都提升到最大值;当进入IO等待状态的线程为FG线程,则按照预设增量提升存储器的工作频率。当进入IO等待状态的线程为BG线程时,不作任何处理。
此外,在另一实施例中,对于FG线程来说,还可以按照如下方式调整存储器的工作频率。当内核检测到进入IO等待状态的线程为FG线程时,如果当前存储器的工作频率是freq1,则将其调整为2*freq1,如果该线程继续发生IO等待,则将存储器的工作频率调为2*2*freq1,直到最高频为止。
在一实施例中还提供一种IO请求的处理装置。请参阅图4,图4为本申请实施例提供的IO请求的处理装置300的结构示意图。其中该IO请求的处理装置300应用于电子设备,该IO请求的处理装置300包括线程标记模块301、线程识别模块302以及参数调整模块303,如下:
线程标记模块301,用于确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
线程识别模块302,用于当检测到处于IO等待状态的线程时,确定所述线程的类别;
参数调整模块303,用于若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
在一些实施例中,线程标记模块301还用于:当检测到切换至前台运行的进程时,确定前台进程;
从所述前台进程的线程中确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程。
在一些实施例中,线程标记模块301还用于:在所述前台进程的运行过程中,当检测到新创建的线程时,确定新创建的线程是否用于执行交互事件中的相关任务;
当新创建的线程用于执行交互事件中的相关任务时,将新创建的线程标记为第一类线程。
在一些实施例中,线程标记模块301还用于:当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程。
在一些实施例中,线程标记模块301还用于:当检测到阻塞状态的所述第一类线程时,确定与进入阻塞状态的第一类线程之间具有约束关系的关联线程;
为所述关联线程添加所述第一预设标签,以将所述关联线程标记为第一类线程。
在一些实施例中,线程标记模块301还用于:若所述前台进程为应用进程,则在检测到所述前台进程切换至后台运行时,删除所述第一预设线程的预设标签。
在一些实施例中,线程标记模块301还用于:当检测到有线程切换至前台运行时,判断切换至前台运行的线程是否为第一类线程;
若否,则为所述切换至前台运行的线程添加第二预设标签,以将所述线程标记为第二类线程;
参数调整模块303还用于:若所述线程为第二类线程,则提升存储器的工作频率。
在一些实施例中,参数调整模块303还用于:将处理器的工作频率提升至最大值,并将存储器的工作频率提升至最大值。
应当说明的是,本申请实施例提供的IO请求的处理装置与上文实施例中的IO请求的处理方法属于同一构思,通过该IO请求的处理装置可以实现IO请求的处理方法实施例中提供的任一方法,其具体实现过程详见IO请求的处理方法实施例,此处不再赘述。
由上可知,本申请实施例提出的IO请求的处理装置,执行交互事件中相关任务的线程的运行情况影响着是否会在交互事件中发生卡顿现象,如果这些线程长时间处于IO等待状态而不能正常运行,会导致线程的运行效率低下,出现卡顿现象。本申请的方案确定出用于执行交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当系统检测到这类线程进入到IO等待状态时,对处理器和/或存储器的工作频率进行提升,以加快线程的运行速度,尽快结束线程的IO等待状态,减少交互场景下的卡顿现象。
本申请实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图5,图5为本申请实施例提供的电子设备的第一种结构示意图。电子设备400包括处理器401和存储器402。其中,处理器401与存储器402电性连接。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
存储器402可用于存储计算机程序和数据。存储器402存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器401通过调用存储在存储器402的计算机程序,从而执行各种功能应用以及数据处理。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当检测到处于IO等待状态的线程时,确定所述线程的类别;
若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
在一些实施例中,请参阅图6,图6为本申请实施例提供的电子设备的第二种结构示意图。电子设备400还包括:射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409。其中,处理器401分别与射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409电性连接。
射频电路403用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
显示屏404可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
控制电路405与显示屏404电性连接,用于控制显示屏404显示信息。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元406可以包括指纹识别模组。
音频电路407可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路407包括麦克风。所述麦克风与所述处理器401电性连接。所述麦克风用于接收用户输入的语音信息。
传感器408用于采集外部环境信息。传感器408可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
电源409用于给电子设备400的各个部件供电。在一些实施例中,电源409可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
虽然图中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当检测到处于IO等待状态的线程时,确定所述线程的类别;
若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
由上可知,本申请实施例提供了一种电子设备,所述电子设备执行交互事件中相关任务的线程的运行情况影响着是否会在交互事件中发生卡顿现象,如果这些线程长时间处于IO等待状态而不能正常运行,会导致线程的运行效率低下,出现卡顿现象。本申请的方案确定出用于执行交互事件中相关任务的目标线程,并将这些目标线程标记为第一类线程。当系统检测到这类线程进入到IO等待状态时,对处理器和/或存储器的工作频率进行提升,以加快线程的运行速度,尽快结束线程的IO等待状态,减少交互场景下的卡顿现象。
本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的IO请求的处理方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
此外,本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
以上对本申请实施例所提供的IO请求的处理方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种IO请求的处理方法,其特征在于,包括:
确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
当检测到处于IO等待状态的线程时,确定所述线程的类别;
若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
2.如权利要求1所述的IO请求的处理方法,其特征在于,所述确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程,包括:
当检测到切换至前台运行的进程时,确定前台进程;
从所述前台进程的线程中确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程。
3.如权利要求2所述的IO请求的处理方法,其特征在于,所述方法还包括:
在所述前台进程的运行过程中,当检测到新创建的线程时,确定新创建的线程是否用于执行交互事件中的相关任务;
当新创建的线程用于执行交互事件中的相关任务时,将新创建的线程标记为第一类线程。
4.如权利要求2所述的IO请求的处理方法,其特征在于,所述方法还包括:
当检测到有第二预设线程创建时,将创建的第二预设线程标记为第一类线程,其中,所述第二预设线程为系统级线程。
5.如权利要求3或4所述的IO请求的处理方法,其特征在于,所述将所述目标线程标记为第一类线程之后,所述方法还包括:
当检测到阻塞状态的所述第一类线程时,确定与阻塞状态的第一类线程之间具有约束关系的关联线程;
为所述关联线程添加所述第一预设标签,以将所述关联线程标记为第一类线程。
6.如权利要求3或4所述的IO请求的处理方法,其特征在于,所述将所述目标线程标记为第一类线程之后,还包括:
若所述前台进程为应用进程,则在检测到所述前台进程切换至后台运行时,删除所述第一预设线程的预设标签。
7.如权利要求5所述的IO请求的处理方法,其特征在于,所述方法还包括:
当检测到切换至前台运行的线程时,判断切换至前台运行的线程是否为第一类线程;
若否,则为所述切换至前台运行的线程添加第二预设标签,以将所述线程标记为第二类线程;
所述确定所述线程的类别之后,所述方法还包括:
若所述线程为第二类线程,则提升存储器的工作频率。
8.如权利要求1所述的IO请求的处理方法,其特征在于,所述提升处理器和/或存储器的工作频率,包括:
将处理器的工作频率提升至最大值,并将存储器的工作频率提升至最大值。
9.一种IO请求的处理装置,其特征在于,包括:
线程标记模块,用于确定出用于执行交互事件中相关任务的目标线程,并将所述目标线程标记为第一类线程;
线程识别模块,用于当检测到处于IO等待状态的线程时,确定所述线程的类别;
参数调整模块,用于若所述线程为第一类线程,则提升处理器和/或存储器的工作频率。
10.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至8任一项所述的IO请求的处理方法。
11.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至8任一项所述的IO请求的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628768.9A CN111831462A (zh) | 2020-07-01 | 2020-07-01 | Io请求的处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010628768.9A CN111831462A (zh) | 2020-07-01 | 2020-07-01 | Io请求的处理方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831462A true CN111831462A (zh) | 2020-10-27 |
Family
ID=72900520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010628768.9A Pending CN111831462A (zh) | 2020-07-01 | 2020-07-01 | Io请求的处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831462A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051047A (zh) * | 2021-03-03 | 2021-06-29 | 惠州Tcl移动通信有限公司 | 识别安卓系统绘制线程的方法、装置、移动终端及存储介质 |
CN117130458A (zh) * | 2023-02-27 | 2023-11-28 | 荣耀终端有限公司 | 数据处理方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918141A (zh) * | 2019-03-15 | 2019-06-21 | Oppo广东移动通信有限公司 | 线程执行方法、装置、终端及存储介质 |
CN109960584A (zh) * | 2019-01-30 | 2019-07-02 | 努比亚技术有限公司 | Cpu调频控制方法、终端及计算机可读存储介质 |
US20200051609A1 (en) * | 2018-08-10 | 2020-02-13 | Lg Electronics Inc. | Memory device and image display apparatus including the same |
CN111338838A (zh) * | 2020-03-23 | 2020-06-26 | Oppo广东移动通信有限公司 | 中央处理器频率的控制方法及相关装置 |
-
2020
- 2020-07-01 CN CN202010628768.9A patent/CN111831462A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200051609A1 (en) * | 2018-08-10 | 2020-02-13 | Lg Electronics Inc. | Memory device and image display apparatus including the same |
CN109960584A (zh) * | 2019-01-30 | 2019-07-02 | 努比亚技术有限公司 | Cpu调频控制方法、终端及计算机可读存储介质 |
CN109918141A (zh) * | 2019-03-15 | 2019-06-21 | Oppo广东移动通信有限公司 | 线程执行方法、装置、终端及存储介质 |
CN111338838A (zh) * | 2020-03-23 | 2020-06-26 | Oppo广东移动通信有限公司 | 中央处理器频率的控制方法及相关装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051047A (zh) * | 2021-03-03 | 2021-06-29 | 惠州Tcl移动通信有限公司 | 识别安卓系统绘制线程的方法、装置、移动终端及存储介质 |
WO2022183856A1 (zh) * | 2021-03-03 | 2022-09-09 | 惠州Tcl移动通信有限公司 | 识别安卓系统绘制线程的方法、装置、移动终端及存储介质 |
CN117130458A (zh) * | 2023-02-27 | 2023-11-28 | 荣耀终端有限公司 | 数据处理方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831441A (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN111831440A (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN109960582B (zh) | 在tee侧实现多核并行的方法、装置及系统 | |
KR101143222B1 (ko) | 인터-포지션된 메시지 변경을 사용하는, 코드에 대한 수신메시지의 적응성 디스패치 | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
CN111831433A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111813520A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN111831434A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
US20130346985A1 (en) | Managing use of a field programmable gate array by multiple processes in an operating system | |
US8490118B2 (en) | Wait on address synchronization interface | |
CN111813521A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN111831462A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
CN111831432B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111831438A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111831439A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
CN111831437A (zh) | 设备管理方法、装置、存储介质及电子设备 | |
US20040098722A1 (en) | System, method, and computer program product for operating-system task management | |
CN111831435A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111831436A (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111831413A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN110990132B (zh) | 异步任务处理方法、装置、计算机设备和存储介质 | |
CN111831442A (zh) | 一种资源分配的方法、装置、存储介质及电子设备 | |
CN111831411A (zh) | 任务处理方法、装置、存储介质及电子设备 | |
CN113127050B (zh) | 一种应用资源打包过程监控方法、装置、设备和介质 | |
CN111831443A (zh) | 处理器状态调整方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |