一种面向smp调度系统的优化方法

文档序号:8339469阅读:398来源:国知局
一种面向smp调度系统的优化方法
【技术领域】
[0001]本发明涉及处理器技术领域,具体地说是一种实用性强、面向SMP调度系统的优化方法。
【背景技术】
[0002]随着技术的发展,计算机科学也在不断前进,而CPU作为计算机最昂贵的资源,发展的速度很快,体积骤减和频率剧增,但是单核处理器的架构越来越繁琐、复杂,不仅给设计带来了相当大的困难,而且还使得CPU得不到最大化的使用,再加上体积变小,功耗却没有降下来,散热也成了问题,很难使得处理器的设计与实现以及频率的提升能够顺利的进行下去。
[0003]所以转向多核处理器是发展的需要。片上多核处理器CMP (Chip Mult1-Processor) 就是在那个关键的时刻被提出的,它在一个处理器芯片上封装了多个核心,各个核心能并行地运行各自的任务,非常接近传统的对称多处理器系统(SymmetricMultiprocessors, SMP)。多核处理器中的每个核都可视为一个独立的单元,并且它的实现起来相对容易,对以后的研发也便于扩展,并且发热也没有比单核处理器少。多核处理器在频率不变的情况下通过并行运行多个任务来实现性能的提升,也使得CPU得到了充分的利用。
[0004]但系统中的处理器增多了,在多处理器环境进行任务调度,使得系统的性能最大化变成非常关键的问题。原先,系统中只有一个处理器,进程的分配不用考虑处理器的环节,只要根据其他的标准作出判断既可,但是现在又有一个非常重要的因素加入,原先的标准就必须作出调整以适应新的架构。并且在处理器间出现某些CPU闲着、某些超载时,要进行适当的调整,让整个系统的CPU利用率最大化,使得Cache得到更多的利用。基于此,现提供一种从调度上使系统的性能最优、面向SMP调度系统的优化方法。

【发明内容】

[0005]本发明的技术任务是针对以上不足之处,提供一种实用性强、面向SMP调度系统的优化方法。
[0006]一种面向SMP调度系统的优化方法,其具体实现过程为:
当第一个获得转移指标的进程使用完之后,在释放转移指标的同时获取它所在的CPU编号,所述转移指标用于保护进程间共享资源;
当存在等待此转移指标的队列时,就让队列中的任务记录当前CPU的编号,唤醒同样持有该转移指标的进程并将其呼唤到该处理器上来,使持有相同转移指标的进程运行在同一个处理器上,其具体呼唤转移过程为:
进程收到输入的唤醒信号,该进程对应执行的CPU的编号为n,并将被唤醒进程的进程控制块中的属性字段赋值为η;
当本地CPU编号为η时,进程继续执行; 当本地CPU编号不为η时,在进行下次负载平衡时,把该进程转移到编号为η的CPU运行队列中,然后进程继续执行。
[0007]所述转移指标、转移进程所需要的转移函数、进程与CPU匹配时的转移阀值共同组成转移因子,其中
转移指标,用于保护进程间共享资源,并把若干个耦合度高的进程关联起来;
转移函数,用来确定任务转移的目的端,确认第一个持有转移指标的进程具体执行时的处理器,并对征用该转移指标的进程进行标记赋值,记录下要转移到的处理器;
转移阀值,用于对进程和CPU进行最佳匹配,即当要进行任务的转移时,转移函数得到的结果等于某个阀值时,就把该任务优先转移到与该转移阀值对应的CPU上执行。
[0008]所述属性字段为一个整型的属性字段cpuindex,其用于表示进程最适合运行的CPU编号,并添加到进程控制块中。
[0009]在创建进程时,cpuindex属性初始化成_1 ;当系统运行到某个进程,并发现该进程需要申请使用完转移指标后,释放该转移指标时,如果发现有竞争存在,就通过函数接口来获得当前的CPU编号并记录在它的cpuindex中,再把它作为参数传递给唤醒函数,让它在唤醒进程的同时把CPU的编号也一起传过去,并把被唤醒的进程的cpuindex字段设置为传递的CPU编号,释放转移指标并唤醒等待该转移指标的进程,此时,如果被唤醒的进程所在的CPU等于它的进程控制块中的cpuindex变量,则不需要进行转移操作;否则,就把被唤醒的进程转移到编号为cpuindex的CPU上去。
[0010]当调度系统查看当前的负载状况时,如果发现有负载不平衡时,通过调用函数进行负载平衡,该负载平衡的过程为:找到调度域中最忙的一个组,再从最忙的组中找到负载最忙的处理器,并选择其中的负载,把它们转移到本地处理器上来。
[0011]本发明的一种面向SMP调度系统的优化方法,具有以下优点:
该发明的一种面向SMP调度系统的优化方法
提出一种面向SMP调度系统的优化方法,以Linux内核为基础进行了源码修改和实现,通过做实验得出的结果来验证方案的正确性,能够有效提高系统性能,提高高速缓存利用率;有效提高系统性能,损耗小,对应用透明,实用性强,易于推广。
【附图说明】
[0012]附图1为本发明的采样流程图。
[0013]附图2为本发明的唤醒进程处理流程图。
【具体实施方式】
[0014]下面结合附图和具体实施例对本发明作进一步说明。
[0015]系统中的处理器增多了,在多处理器环境进行任务调度,使得系统的性能最大化变成非常关键的问题。本发明提出了一种面向SMP调度系统的优化方法,能够有效的提高高速缓存的利用率。
[0016]本发明的目的是这样实现的,为了提高系统的资源利用率和整体性能,充分利用高速缓存,在进行任务的转移时,要考虑多种要素,而标准的Linux内核中的SMP在进行任务的转移时,没有对运行队列中的任务属性的不同进行区别的对待,所以要想进一步提升高速缓存的利用率,主要是通过对转移的任务进行选择,让共享资源多的进程尽量分配到同一个处理器上执行。
[0017]一种面向SMP调度系统的优化方法,在原有的内核基础上,借助FUTEX锁机制,对优化方案进行了设计,针对SMP调度系统的优化,设计了基于唤醒信号的优化方案,进一步的提升高速缓存的利用率。通过对转移的任务进行选择,让共享资源多的进程尽量分配到同一个处理器上执行。本发明设计了利用唤醒信号的反馈模块,当第一个进程获得该锁并使用完之后,在唤醒的同时也把持有该锁的其他进程呼唤到它的处理器上来。
[0018]如附图1、图2所示,其具体实现过程为:
首先对Linux内核的负载均衡调度模型进行了改进,使用四维向量〈P,T,M,S〉表示。其中:
P(Processor):指的是系统中的处理器;
T(Task):指的是系统的任务集;
M(Migrate):指的是系统进行转移的依据,即转移因子;
S(Strategy):指的是系统的负载均衡策略。
[0019]在选择转移的对象时,针对提升Cache利用率,需添加一个转移因子,该转移因子包括转移指标、转移函数和转移阀值,其中:
转移指标:要想让共享资源多的进程分配
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1