线程调度性能的测试方法、装置和电子设备与流程

文档序号:32652837发布日期:2022-12-23 19:39阅读:62来源:国知局
线程调度性能的测试方法、装置和电子设备与流程

1.本发明属于计算机技术领域,尤其涉及一种线程调度性能的测试方法、装置和电子设备。


背景技术:

2.在相关技术中,采用线程控制不同的输入输出(in/out,io)口输出脉冲信号,同时使用示波器检测io1脉冲停止到io2脉冲开始的时间差,以将测试所得时间差与预设值进行对比,得出待检测操作系统的线程调度性能的测试结果。
3.相关技术中的测试过程中,由于示波器的精度差异,可能会对测试结果产生客观影响,同时,由于示波器只能检测io1脉冲停止到io2脉冲开始的时间差,期间除了线程调度以外,待检测操作系统还需要完成其他工作,该其他工作同样会造成iq口输出脉冲信号,从而降低了测试精度。
4.由此可知,相关技术中的线程调度性能的测试方法的精确度低。


技术实现要素:

5.本发明提供一种线程调度性能的测试方法、装置和电子设备,能够解决相关技术中的线程调度性能的测试方法存在的的精确度低的问题。
6.为解决上述技术问题,本发明是这样实现的:
7.第一方面,本发明提供了一种线程调度性能的测试方法,该方法包括:
8.在待检测操作系统中创建并启动n个线程,其中,n为大于1的整数;
9.在预设时间长度内,循环调用所述n个线程,以对所述待检测操作系统的线程调度性能进行测试,其中,所述线程每被调用一次,则将所述线程对应的运行计数值加1;
10.获取所述n个线程的运行计数值之和;
11.根据所述n个线程的运行计数值之和与所述预设时间长度,确定所述待检测操作系统的线程调度性能的测试结果。
12.第二方面,本发明提供了一种线程调度性能的测试装置,包括:
13.创建模块,用于在待检测操作系统中创建并启动n个线程,其中,n为大于1的整数;
14.调用模块,用于在预设时间长度内,循环调用所述n个线程,以对所述待检测操作系统的线程调度性能进行测试,其中,所述线程每被调用一次,则将所述线程对应的运行计数值加1;
15.获取模块,用于获取所述n个线程的运行计数值之和;
16.确定模块,用于根据所述n个线程的运行计数值之和与所述预设时间长度,确定所述待检测操作系统的线程调度性能的测试结果。
17.第三方面,本发明提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
18.第四方面,本发明提供了一种计算机可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
19.本发明实施例提供的线程调度性能的测试方法包括:在待检测操作系统中创建并启动n个线程,其中,n为大于1的整数;在预设时间长度内,循环调用所述n个线程,以对所述待检测操作系统的线程调度性能进行测试,其中,所述线程每被调用一次,则将所述线程对应的运行计数值加1;获取所述n个线程的运行计数值之和;根据所述n个线程的运行计数值之和与所述预设时间长度,确定所述待检测操作系统的线程调度性能的测试结果。其测试过程简单,无需设置额外的硬件检测电路,从而排除了硬件对测试结果的干扰,提升了测试结果的准确性。
附图说明
20.图1是本发明实施例提供的一种线程调度性能的测试方法的流程图;
21.图2是本发明实施例提供的第一种线程调度性能的测试方法的流程示意图;
22.图3是本发明实施例提供的第二种线程调度性能的测试方法的流程示意图;
23.图4是本发明实施例提供的一种线程调度性能的测试装置的结构图;
24.图5是本发明实施例提供的一种电子设备的结构图。
具体实施方式
25.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
27.在应用中,一个操作系统,其通常只有一个中央处理器(central processing unit,cpu),则在多线程同时发起的情况下,鉴于cpu在同一时间只能处理一个线程,则需要进行线程调度,以使cpu执行被调用的一个线程。
28.本发明提供的线程调度性能的测试方法,能够用于测试各种操作系统的线程调度性能,且尤其适用于测试物联网操作系统的线程调度性能。在实际应用中,物联网操作系统在工作中的线程可以由操作人员建立,而本发明实施例中国,可以由一个应用程序执行本发明提供的线程调度性能的测试方法,且该应用程序与待检测的物联网操作系统之间具有相互匹配的接口,以使应用程序能够通过该接口实现控制物联网操作系统执行线程创建、线程调用等测试过程,并获取线程运行次数等测试结果。然后,在该应用程序的界面上展示该测试结果,或者通过应用程序将测试结果甚至是测试过程,以表格日志的方式进行输出,以便于用户查看该测试结果以及测试过程。
29.由上可知,本发明实施例中,仅需要配置执行本发明提供的线程调度性能的测试方法的应用程序,以及该应用程序与待检测的物联网操作系统之间的数据接口,便能够实现对物联网操作系统的线程调用性能的检测,其无需像现有技术中那样,需要采用示波器等硬件结构,从而能够节省线程调用性能的检测过程中的硬件开销,同时,还可以避免硬件的精度对测试结果产生的干扰,也就是说,本发明提供的线程调度性能的测试方法能够降低测试过程的硬件开销,同时,还能够提升测试结果的精确度。
30.下面结合附图,通过具体的实施例及其应用场景对本发明提供的线程调度性能的测试方法、线程调度性能的测试装置、电子设备以及计算机可读存储介质进行详细地说明。
31.请参阅图1,是本发明实施例提供的一种线程调度性能的测试方法的流程图,如图1所示,该线程调度性能的测试方法,可以包括以下步骤:
32.步骤101、在待检测操作系统中创建并启动n个线程,其中,n为大于1的整数。
33.步骤102、在预设时间长度内,循环调用所述n个线程,以对所述待检测操作系统的线程调度性能进行测试,其中,所述线程每被调用一次,则将所述线程对应的运行计数值加1。
34.其中,所述线程每被调用一次,则将所述线程对应的运行计数值加1,可以理解为:线程的工作内容包括:将自身对应的运行计数值加1,例如:对于目标线程,其在初始状态下的运行计数值等于0,当该目标线程第一次被调用时,其运行计数值等于1,当第二次被调用时,其运行计数值等于2,依次类推,其被调用的次数越多,则其运行计数值越大。
35.步骤103、获取所述n个线程的运行计数值之和。
36.步骤104、根据所述n个线程的运行计数值之和与所述预设时间长度,确定所述待检测操作系统的线程调度性能的测试结果。
37.在实际应用中,上述n个线程的运行计数值之和可以理解为,在预设时间长度内线程调度总次数,这样,在预设时间长度固定不变的情况下,所述n个线程的运行计数值之和越大,则表示所述待检测操作系统的线程调度性能越好。
38.换而言之,上述测试结果可以与所述n个线程的运行计数值之和呈正相关,而与所述预设时间长度负相关,例如:测试结果=n个线程的运行计数值之和/预设时间长度。此时,测试结果可以理解为单次线程调度所需的平均时间。
39.需要说明的是,上述测试结果的计算公式中还可以是其他公式,例如:测试结果=a
×
n个线程的运行计数值之和/预设时间长度,其中,a为常数、百分数等。在此对测试结果的计算公式不作具体限定。
40.另外,上述n的取值和所述预设时间长度的取值可以根据实际情况进行设置,例如:n等于5或者10等任意大于1的整数至,而预设时间长度可以等于1分钟、30分钟等任意时间长度,在此不作具体限定。
41.区别于现有技术中,由示波器检测io1脉冲停止到io2脉冲开始的时间差,以将测试所得时间差与预设值进行对比,得出待检测操作系统的线程调度性能的测试结果,该过程中,鉴于待检测操作系统还需要完成线程调度以外的其他工作,该其他工作同样会造成iq口输出脉冲信号,从而干扰了线程调度的测试精度。此时,为了提高线程调度性能测试的准确性,需要多次反复进行线程调度性能测试,产生了大量的重复工作。
42.而本发明实施例中,直接通过被调用的线程去更新其运行次数,并根据预设时间
长度内,被调用的线程的运行次数之和来确定线程调度性能的测试结果,其不受待检测的操作系统自身工作内容的干扰,因此,其相较于现有技术中的调度性能检测方法的精确度更高;而且,本技术实施例中的测试方法无需重复执行多次,因此,其相较于现有技术中的调度性能检测方法的复杂程度更低。
43.需要说明的是,在实际应用中,可以重复执行上述步骤101至步骤104,并将每一次得出的测试结果取平均值,以作为所述待检测操作系统的线程调度性能的最终测试结果,或者,增大所述预设时间长度的时间,这样,可以提升所述所述待检测操作系统的线程调度性能的测试结果的准确度。
44.作为一种可选的实施方式,述n个线程包括以下至少一项:
45.n1个具有相同优先级的第一线程;
46.n2个具有不同优先级的第二线程;
47.其中,n1和n2分别为大于1的整数。
48.在具体实施中,上述待检测操作系统对于相同优先级的第一线程可以采用第一调度策略,对不同优先级的第二线程可以采用第二调度策略,且第一调度策略和第二调度策略可能不同。
49.例如:第一调度策略为分时调度策略,即为按照n1个第一线程的排列顺序依次调用所述n1个第一线程中的每一个;第二调度策略为抢占式优先级线程调度策略,即由优先级别高且处于唤醒状态下的第二线程去抢占优先级别低的第二线程对cpu的使用权。
50.其中,在分时调度策略下,全部第一线程平分cpu的时间片,以轮流占用cpu。
51.其中,在抢占式优先级线程调度策略下,待检测操作系统会把cpu分配给优先级最高的进程,以使之被执行。但在,其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,而重新将cpu分配给新增的优先权最高的进程。因此,在采用这种调度策略时,是每当系统中出现一个新的就绪进程i时,就将其优先权pi与正在执行的进程j的优先权pj进行比较。如果pi≤pj,原进程pj便继续执行;但如果是pi》pj,则立即停止pj的执行,做进程切换,使i进程投入执行。显然,这种抢占式的优先权调度策略能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时处理系统中。
52.在一种可选的实施方式中,若第一调度策略和第二调度策略不同,可以对n1个第一线程和n2个第二线程分别进行测试,以按照第一调度策略对n1个第一线程进行调度,并获取预设时间长度内该调度过程中的运行计数之和,以得到第一调度性能测试结果;按照第二调度策略对n2个第二线程进行调度,并获取预设时间长度内该调度过程中的运行计数之和,以得到第二调度性能测试结果。此时,该第一调度性能测试结果用于指示第一调度策略下的线程调度性能,第二调度性能测试结果用于指示第二调度策略下的线程调度性能。
53.当然,若第一调度策略和第二调度策略相同,可以对n1个第一线程和n2个第二线程共同进行测试,在此不作具体阐述。
54.作为一种可选的实施方式,所述在预设时间长度内,循环调用所述n个线程,包括以下至少一项:
55.在预设时间长度内,按照所述n1个第一线程的排列顺序,循环调用所述n1个第一线程;其中,目标第一线程每被调用一次,则将所述目标第一线程对应的运行计数值加1,并
释放所述目标第一线程对中央处理器cpu的使用权,所述目标第一线程为所述n1个第一线程中的任一个;
56.在预设时间长度内,控制所述n2个第二线程按照优先级顺序,循环抢占cpu的使用权,其中,目标第二线程每被调用一次,则将所述目标第二线程对应的运行计数值加1,所述目标第二线程为所述n2个第二线程中的任一个。
57.在一种实施方式中,上述按照所述n1个第一线程的排列顺序,循环调用所述n1个第一线程,可以理解为:同优先级线程调度性能测试。
58.其中,上述n1个第一线程的排列顺序,可以与n1个第一线程的创建顺序相同。
59.上述第一线程的工作内容,可以包括:将自身对应的运行计数值加1,之后立即释放cpu的使用权,这样,上述在预设时间长度内,按照所述n1个第一线程的排列顺序,循环调用所述n1个第一线程,可以理解为:按照所述n1个第一线程的排列顺序依次调用n1个第一线程中的每一个第一线程,且每调用一次某一第一线程,则该第一线程对应的运行计数值加1,之后立即释放cpu的使用权,以调用所述n1个第一线程中排列于该第一线程后的另一第一线程,直至调用完所述n1个第一线程中排列于最后一位的第一线程后,再次调用所述n1个第一线程中排列于第一位的第一线程,并依此循环,直至循环时间达到所述预设时间长度。
60.例如:如图2所示,假设n1等于5,则在同优先级调度性能测试过程中,先创建五个同优先级线程,分别为:线程1、线程2、线程3、线程4和线程5,然后,控制待检测操作系统依次调用这5个线程,其中,每个线程会在执行的过程中会将自己的运行计数(cnt0~4)值加1,然后立即释放(relinquish)cpu的使用权,以使待检测操作系统调度下一个线程。这样,待检测操作系统会按照:线程1、线程2、线程3、线程4和线程5的排列顺序,循环调用该5个线程。
61.本实施方式下,通过按照同优先级的n1个第一线程的排列顺序,循环调用所述n1个第一线程,可以测试得到待检测操作系统的同优先级线程调度性能。
62.在另一种实施方式中,上述在预设时间长度内,控制所述n2个第二线程按照优先级顺序,循环抢占cpu的使用权,可以理解为:抢占式优先级线程调度性能测试。
63.其中,上述n2个第二线程的优先级互不相同,且在任一两个第二线程处于就绪状态时,优先级别高的一个第二线程会优先抢占cpu的使用权且占用cpu使用权的第二线程表示当前正在调用的第二线程,例如:假设当前被调用的线程为线程a,而线程b的优先级比线程a的优先级高,则在线程b处于就绪状态时,线程b抢占线程a对cpu的使用权,从而将当前被调用的线程切换为线程b。
64.作为一种可选的实施方式,所述控制所述n2个第二线程按照优先级顺序,循环抢占cpu的使用权,包括:
65.在初始状态下,调用优先级别最低的第二线程,其中,所述n2个第二线程中除所述优先级别最低的第二线程以外的其他第二线程均处于挂起状态;
66.在目标第二线程被调用的情况下,控制所述目标第二线程唤醒第一子线程,以使所述第一子线程抢占所述目标第二子线程对cpu的使用权,其中,所述第一子线程为所述n2个第二线程中比所述目标第二线程高一个优先级的第二线程;
67.在所述n2个第二线程中除所述优先级别最低的第二线程以外的其他第二线程被
调用完成的情况下,控制所述其他第二线程进入阻塞状态。
68.在实施中,上述处于挂起状态或阻塞状态下的第二线程不会被待检测操作系统调用。
69.上述第二线程的工作内容,可以包括:将自身对应的运行计数值加1,并唤醒优先级更高的另一第二线程,且上述n2个第二线程中除了优先级别最低的第二线程之外的其他第二线程的工作内容还包括:在执行将自身对应的运行计数值加1,并唤醒优先级更高的另一第二线程之后,立即阻塞本线程,以使本线程进入阻塞状态。
70.这样,上述在预设时间长度内,控制所述n2个第二线程按照优先级顺序,循环抢占cpu的使用权,可以理解为:先调用n2个第二线程中优先级别最低的一个第二线程,并由该第二线程去唤醒下一个优先级别更高的第二线程,实现对该优先级别更高的第二线程的调用,直至调用完所述n2个第二线程中优先级别最高的一个第二线程时,n2个第二线程中除了优先级别最低的第二线程之外的其他第二线程都处于阻塞状态下,此时,n2个第二线程中唯一处于就绪状态下且优先级别最低的第二线程再次被调用,并依此循环,直至循环时间达到所述预设时间长度。
71.由上可知,本实施方式中,n2个第二线程被调用的顺序与优先级顺序相反。
72.例如:如图3所示,假设n2等于5,则在抢占式优先级线程调度性能测试过程中,先创建五个不同优先级的线程(优先级高低为线程1《线程2《线程3《线程4《线程5),然后,控制待检测操作系统优先调用线程1,其中,每一个线程的工作内容包括:将自己的运行计数(cnt0~4)值加1。在测试项开始时,优先级最低的线程(线程1)处于就绪态,其它线程(线程2至4)都处于挂起状态,优先级最低的线程(线程1)唤醒优先级次低的线程(线程2),优先级次低的线程(线程2)会抢占cpu,这样,依次唤醒抢占后,最高优先级的线程(线程5)处于阻塞状态,次高优先级的线程(线程2~4)也处于阻塞状态,最后优先级最低的线程(线程1)为唯一可被调用的线程,其又获得了cpu的使用权,并开启下一轮循环。
73.本实施方式下,通过控制所述n2个第二线程按照优先级顺序,循环抢占cpu的使用权,可以测试得到待检测操作系统的抢占式优先级线程调度性能。
74.需要说明的是,在上述n个线程同时包括:n1个具有相同优先级的第一线程和n2个具有不同优先级的第二线程的情况下,可以采用分时调度策略对n1个具有相同优先级的第一线程进行调度,并采用抢占式优先级线程调度策略对n2个具有不同优先级的第二线程进行调度,且分别对上述两个调度过程进行测试。
75.综上,本发明实施例提供的线程调度性能的测试方法具有以下有益效果:
76.测试过程简单,无需设置额外的硬件检测电路,从而排除了硬件对测试结果的干扰,提升了测试结果的准确性;
77.适用范围广,仅需配置执行线程调度性能的测试方法的应用程序与待检测操作系统之间的数据接口,便可以完成执行线程调度性能的测试方法的应用程序的移植,因此,其跨操作系统能力强,且可用于横向对比待检测操作系统的线程调度性能;
78.启动线程调度性能的测试方法的过程简单,且可快速获取测试结果;
79.测试结果日志化,存储与解析方便,可参与物联网操作系统开发的敏捷流程;
80.同优先级线程和不同优先级线程分开测试,可提高线程调度性能测试的准确性和针对性。
81.请参阅图4,本发明实施例提供的一种线程调度性能的测试装置400,包括:
82.创建模块401,用于在待检测操作系统中创建并启动n个线程,其中,n为大于1的整数;
83.调用模块402,用于在预设时间长度内,循环调用所述n个线程,以对所述待检测操作系统的线程调度性能进行测试,其中,所述线程每被调用一次,则将所述线程对应的运行计数值加1;
84.获取模块403,用于获取所述n个线程的运行计数值之和;
85.确定模块404,用于根据所述n个线程的运行计数值之和与所述预设时间长度,确定所述待检测操作系统的线程调度性能的测试结果。
86.可选的,所述n个线程包括以下至少一项:
87.n1个具有相同优先级的第一线程;
88.n2个具有不同优先级的第二线程;
89.其中,n1和n2分别为大于1的整数。
90.可选的,调用模块402,包括:
91.调用单元,用于在预设时间长度内,按照所述n1个第一线程的排列顺序,循环调用所述n1个第一线程;其中,目标第一线程每被调用一次,则将所述目标第一线程对应的运行计数值加1,并释放所述目标第一线程对中央处理器cpu的使用权,所述目标第一线程为所述n1个第一线程中的任一个;
92.和/或,
93.抢占单元,用于在预设时间长度内,控制所述n2个第二线程按照优先级顺序,循环抢占cpu的使用权,其中,目标第二线程每被调用一次,则将所述目标第二线程对应的运行计数值加1,所述目标第二线程为所述n2个第二线程中的任一个。
94.可选的,所述抢占单元,包括:
95.调用子单元,用于在初始状态下,调用优先级别最低的第二线程,其中,所述n2个第二线程中除所述优先级别最低的第二线程以外的其他第二线程均处于挂起状态;
96.唤醒子单元,用于在目标第二线程被调用的情况下,控制所述目标第二线程唤醒第一子线程,以使所述第一子线程抢占所述目标第二子线程对cpu的使用权,其中,所述第一子线程为所述n2个第二线程中比所述目标第二线程高一个优先级的第二线程;
97.控制子单元,用于在所述n2个第二线程中除所述优先级别最低的第二线程以外的其他第二线程被调用完成的情况下,控制所述其他第二线程进入阻塞状态。
98.本技术实施例提供的线程调度性能的测试装置400能够执行如图1所示方法实施例中的各个步骤,且能够取得相同的有益效果,为避免重复,在此不再赘述。
99.请参阅图5,本发明实施例还提供一种电子设备,该电子设备500包括处理器501,存储器502,存储在存储器502上并可在处理器501上运行的程序或指令,该程序或指令被处理器501执行时实现如图1所示方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
100.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述图1所示方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
101.其中,所述的计算机可读存储介质,如rom、ram、磁碟或者光盘等。
102.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
103.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
104.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1