一种负载迁移的方法和设备的制造方法

文档序号:8424198阅读:314来源:国知局
一种负载迁移的方法和设备的制造方法
【技术领域】
[0001] 本发明涉及计算机操作技术领域,尤其涉及一种基于对称处理器SMP的负载迁移 的方法和设备。
【背景技术】
[0002] 在目前SMP(SymmetricalMulti-Processing,对称多处理器)环境中,每一个CPU 对应一个RunQueue运行队列。如果当前存在一个任务处于TASKRunning(即可执行)状 态时,选择一个RunQueue运行队列(需要说明的是,只能为该任务在同一时刻选择一个Run Queue运行队列),将该任务加入该RunQueue运行队列中,W便于调度程序在该RunQueue 运行队列对应的CPU中运行该任务。
[0003] 由于目前每一个CPU对应一个RunQueue运行队列,该样虽然能够使得一个持续 处于TASKRunning(即可执行)状态的任务在同一个CPU上运行,有利于数据缓存,提高运 行效率,同时各个CPU上调度的任务都是与其对应的RunQueue运行队列中的,避免了相互 竞争,但是,该样容易使得各个CPU对应的RunQueue运行队列中存储的任务不均衡,造成 一部分CPU运行的过于繁忙,一部分CPU运行的过于空闲,使得整个系统的资源处于不均衡 状态。
[0004] 为了解决系统资源的不均衡问题,提出了LB(LoadBalance,负载均衡)机制。所 谓LB机制就是在某一个时间段内,将比较繁忙的CPU对应的RunQueue运行队列中的任务 迁移至比较空闲的CPU对应的RunQueue运行队列中,由比较空闲的CPU执行迁移后的任 务,该样保证了各个CPU之间的负载均衡。
[0005] 在LB机制实施的过程中,一旦确定了繁忙的CPU对应的RunQueue运行队列(W 后称为源RunQueue)和比较空闲的CPU对应的RunQueue运行队列(W后称为目标Run Queue),在准备任务迁移时,尝试获取保护源RunQueue和保护目标RunQueue的自选锁, 并在自选锁获取成功之后,执行任务在源RunQueue和目标RunQueue之间的迁移,并在迁 移完成后,放弃自选锁。
[0006] 因此,由于在LB机制中保证负载均衡的同时,还需要频繁的获取自选锁和释放自 选锁,该样导致系统的工作性能大幅降低。

【发明内容】

[0007] 本发明实施例提供了一种负载迁移的方法和设备,用于解决目前在LB机制中保 证负载均衡的同时,存在频繁的获取自选锁和释放自选锁,而导致系统的工作性能大幅降 低的问题。
[0008] -种负载迁移的方法,包括:
[0009] 接收目标处理器发送的迁移请求信息,所述迁移请求信息用于表征需要从源处理 器中迁移待处理的任务;
[0010] 根据接收到的所述迁移请求消息中包含的所述目标处理器的标识信息,确定由所 述源处理器和所述目标处理器协商的、用于放置所述源处理器中任务的描述符地址信息的 中间表,W及根据所述迁移请求信息中包含了需要迁移待处理的任务的容量信息,确定待 迁移的任务的描述符地址信息;并
[0011] 将确定的所述描述符地址信息写入确定的所述中间表中,W便于所述目标处理器 从所述中间表中获取所述描述符地址信息,并根据所述描述符地址信息得到所述待迁移的 任务。
[0012] 根据接收到的所述迁移请求消息中包含的所述目标处理器的标识信息,确定由所 述源处理器和所述目标处理器协商的、用于放置所述源处理器中任务的描述符地址信息的 中间表,包括:
[0013] 根据接收到的所述迁移请求消息中包含的所述目标处理器的标识信息和所述源 处理器的标识信息,确定所述目标处理器的标识信息和所述源处理器的标识信息共同指向 的中间表,所述中间表是由所述源处理器和所述目标处理器协商的、用于放置所述源处理 器中任务的描述符地址信息的中间表;
[0014] 其中,所述目标处理器的标识信息不同,和/或所述源处理器的标识信息不同,分 别指向的所述中间表不同。
[0015] 所述中间表为一个循环链表,其中,所述循环链表中包含首指针信息和尾指针信 息;
[0016] 将确定的所述描述符地址信息写入所述中间表中,包括:
[0017] 在确定所述中间表的存储空间不满时,确定所述中间表中所述尾指针信息指向的 地址信息;并
[0018] 从所述地址信息对应的地址信息开始,将确定的所述描述符地址信息依次写入所 述中间表中。
[0019] 所述方法还包括:
[0020] 向所述目标处理器发送迁移响应信息,其中,所述迁移响应信息中包含了所述待 迁移的描述符地址写入所述中间表的地址信息。
[0021] 所述方法还包括:
[0022] 在所述目标处理器得到所述待迁移的任务时,释放所述待迁移的任务在所述源处 理器中占用的存储空间。
[0023] 一种负载迁移的方法,包括:
[0024] 向源处理器发送迁移请求信息,所述迁移请求信息用于表征需要从源处理器中迁 移待处理的任务;
[0025] 从中间表中获取待迁移的任务的描述符地址信息,其中,所述中间表是源处理器 根据接收到的所述迁移请求消息中包含的所述目标处理器的标识信息,W及按照所述源处 理器和所述目标处理器协商的、用于放置所述源处理器中任务的描述符地址信息的规则确 定的;
[0026] 根据所述描述符地址信息,从所述源处理器中获取所述待迁移的任务。
[0027] 所述中间表为一个循环链表,其中,所述循环链表中包含首指针信息和尾指针信 息;
[0028] 从中间表中获取待迁移的任务的描述符地址信息,包括:
[0029] 在确定所述中间表的存储空间不空时,确定所述中间表中所述首指针信息指向的 地址信息;并
[0030] 从所述地址信息对应的地址信息开始,依次读取所述中间表中存储的描述符地址 信息。
[0031] 所述方法还包括:
[0032] 接收所述源处理器发送的迁移响应消息,其中,所述迁移响应信息中包含了所述 待迁移的描述符地址写入中间表的地址信息;
[0033] 从中间表中获取待迁移的任务的描述符地址信息,包括:
[0034] 根据所述迁移响应信息中包含了所述待迁移的描述符地址写入中间表的地址信 息,依次从所述中间表的所述地址信息中获取待迁移的任务的描述符地址信息。
[00巧]一种负载迁移的设备,包括:
[0036] 接收模块,用于接收目标处理器发送的迁移请求信息,所述迁移请求信息用于表 征需要从源处理器中迁移待处理的任务;
[0037] 确定模块,用于根据接收到的所述迁移请求消息中包含的所述目标处理器的标识 信息,确定由所述源处理器和所述目标处理器协商的、用于放置所述源处理器中任务的描 述符地址信息的中间表,W及根据所述迁移请求信息中包含了需要迁移待处理的任务的容 量信息,确定待迁移的任务的描述符地址信息;并
[0038] 写入模块,用于将确定的所述描述符地址信息写入确定的所述中间表中,W便于 所述目标处理器从所述中间表中获取所述描述符地址信息,并根据所述描述符地址信息得 到所述待迁移的任务。
[0039] 所述确定模块,具体用于根据接收到的所述迁移请求消息中包含的所述目标处理 器的标识信息和所述源处理器的标识信息,确定所述目标处理器的标识信息和所述源处理 器的标识信息共同指向的中间表,所述中间表是由所述源处理器和所述目标处理器协商 的、用于放置所述源处理器中任务的描述符地址信息的中间表;
[0040] 其中,所述目标处理器的标识
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1