多处理器系统中的操作系统管理的中断引导的制作方法_3

文档序号:9620856阅读:来源:国知局
的哪些处理器将被使用。第二,中断路由器确定如何在所标识的处理器中分布中断。该中断源对处理器指派在中断控制器中进行设置并且被使用一段时间。第三,中断路由器在运行时间期间响应于系统状况而动态改变中断的分布。该进程的结果将当前中断源对处理器指派改变为新的指派。第四,中断路由器跟踪来自各种中断源的中断对系统性能的影响,这用于确定未来的中断源对处理器指派。应当理解,所述进程可以将中断源指派给单个处理器集群以及单个处理器,或者将中断源指派给单个处理器集群而取代于指派给单个处理器。
[0037]现在参考图4,现在将描述一种用于标识将用于处理中断的处理器的方式的示例实施方案。该进程的输出是中断将被分布到其中的处理器集合的指示。
[0038]该过程由标识400初始的可用处理器集合开始。该初始集合可以是可用处理器的全部、可用处理器的预定子集或基于指定特性而标识的处理器的其他集合。作为示例,初始处理器集合可以是全部活跃(即,非空闲的)处理器。接下来,这些处理器中的一些可以基于其已活跃的时间而被删去(eliminate)402。该时间量可以是可调参数,其当被设置为零时,禁用该步骤。
[0039]中断路由器然后以下面详细描述的方式确定404由于中断处理产生的在系统上的负载。然后,在给定目标每处理器负载和所确定的负载的情况下,然后计算406将用于处理中断的处理器数量。
[0040]在一个示例实施方案中,计算用于处理全部中断相关工作的全部处理器时间的总和。将该总时间量除以对于整个系统处理中断的实际逝去时间,以便确定处理中断和相关工作花费的时间的百分比。然后将该时间百分比除以可以是可调参数的目标每处理器负载,以便确定将处理该负载的目标处理器数量。例如,如果八个处理器的每个处理中断达20ms,则总负载是160ms。如果该过程在100ms中发生,则总负载是160% (处理器中的一个的)。如果目标处理负载是40%,则目标处理器数量是四个。
[0041]其他算法可以用于选择处理器的数量。例如,可以检查关于哪些中断源主要对负载负责的统计数据。如果一个中断源负责显著大于目标每处理器负载的负载,则有可能该中断源可以被指派给一个处理器,以及较少处理器可以用于剩余中断。
[0042]所计算的数量可以超过(cap) 408在400处所标识的初始处理器集合中的处理器数量。如果该处理器数量少于初始集合的大小,如在410处所确定的,则选择412初始集合的子集。
[0043]在一个示例实施方案中,子集可以通过使用由内核使用的相同算法来选择,以将线程指派给处理器,由此最大化可以空闲的处理器的数量,从而减少功率消耗。
[0044]在该示例实施方案中,选择(见图4)处理器的集合,以及然后,将中断分布到所选处理器中。现在将结合图5描述该分布进程的示例实施方案。
[0045]首先,按照由中断源对系统施加的负载的次序,对中断源进行排序500。接下来,从列表中选择502中断源。选择504来自处理器集合中的一个处理器,并将其指派给已排序列表中的所选中断源。如果中断源仍剩余,如在506中所确定的,则所述进程通过重复选择步骤502和504继续,直到为全部中断源指派了处理器中的一个为止。在指派被完成之后,将中断控制器设置508为将中断定向到其被指派的处理器。
[0046]存在用于将处理器与中断相匹配的各种各样不同方式,并且,图5中的进程仅是实施这样的匹配的一种方式。
[0047]使用图5中的示例,在步骤502中对中断源的选择和在步骤504中对处理器的选择可以使用以下示例实施方案来执行。以S形曲线(serpentine)方式来选择处理器:从头至尾以及然后从尾至头如此这般地逐步通过列表,将已排序列表中的下一个中断源指派给所选处理器,直到中断源的全部都被指派了为止。
[0048]其他实施方案是可能的,其中,总体目标是将由于处理中断产生的负载均匀地划分到处理器中,取计算复杂度对更优化的分布的折衷。
[0049]在一个示例中,可以使用最差适应装箱算法。在该算法中,每个随后的中断源被指派给在指派后将具有最少总负载的处理器。
[0050]在另一示例中,对下一个处理器的迂回S形曲线选择之后伴随如下条件,即:当前处理器具有比所述下一个处理器更高的总负载;否则,当前处理器被再次用于下一个中断。[0051 ] 在另一示例中,首先将整个处理器预留给每个其负载大于目标每处理器负载的中断。然后,将剩余中断指派给剩余处理器。
[0052]在另一示例中,可以将对系统几乎没有影响的中断源永久指派给特定处理器,并将其从这个将中断源指派给处理器的过程中移除。
[0053]给定中断源和处理器的指派,可以随着系统状况改变,在计算机操作期间动态改变该指派。该进程的结果是,允许系统在不错过中断的同时将活跃处理器转变为空闲状态,以及将空闲处理器转变为活跃状态。
[0054]在图6中示出了实例实施方案。其他实施方案是可能的,并且取决于正被使用的处理器的性质。在图6中所示的实施方案中,处理器具有非可中断和可中断空闲状态,并且,在任一空闲状态下,将“唤醒”命令发给处理器,以便对该处理器进行查询和/或促使其改变状态。一般说来,该进程涉及:标识当前中断源对处理器指派与新的中断源对处理器指派之间的差别,以及,确定这些差别中的任一个是否涉及改变处理器的状态。如果处理器具有状态改变,则在允许中断源被指派给其之前将状态改变。
[0055]由此,在图6中,在该实施方案中,对每个中断源对处理器指派进行处理600以标识目标处理器被改变的中断源。对于每个当前目标处理器将被改变的中断源,将对于新目标处理器的中断源计数递增602。当进行每个这样的递增时,如果目标处理器的中断源计数从零变为一,如在604中所确定的,则将该处理器添加606到将被“唤醒”的处理器列表。然后将“唤醒”指令发送608给该列表上的每个处理器。在某些实施方案中,等待来自处理器的确认确保不丢失中断。
[0056]对每个中断源对处理器指派再次进行处理610,并且,在中断控制器中将当前指派设置为新指派。对于目标处理器已改变的每个中断源,将指派给该中断的先前目标处理器的中断源计数递减612。当进行每个这样的递减时,如果先前目标处理器的中断源计数从一变为零,如在614处所确定的,则将该处理器添加到列表。然后将指令发送616给该列表上的每个处理器,响应于此,每个处理器可以评估其是否是空闲的,以及可以由于不再具有任何以其为目标的中断而转换到功率节省状态中。
[0057]可以取决于处理器如何处理中断、功率节省状态和在那些状态中的转变而对图6中的过程进行修改。在该过程期间,可以标识每个处理器的状态。例如,如果处理器不支持唤醒命令或非可中断状态,则可以删去其他步骤。
[0058]现在将结合图7描述用于跟踪作为关联工作的中断处理对系统的影响的进程的示例实施方案。
[0059]具有测量中断影响的挑战在于这一事实:中断句柄可以调用附加进程和生成附加中断,或者由在与该中断句柄相同的处理器上被执行的中断句柄生成的其他工作。这样的附加工作进而可以在处理器上创建又更多的附
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1