著录项信息
专利名称 | 在异构机群中运行应用程序、提升运算速度的方法及装置 |
申请号 | CN200910241769.1 | 申请日期 | 2009-12-07 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-06-08 | 公开/公告号 | CN102087620A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/50 | IPC分类号 | G;0;6;F;9;/;5;0查看分类表>
|
申请人 | 联想(北京)有限公司 | 申请人地址 | 北京市海淀区上地信息产业基地创业路6号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 联想(北京)有限公司 | 当前权利人 | 联想(北京)有限公司 |
发明人 | 关东仪;肖利民;祝明发 |
代理机构 | 北京集佳知识产权代理有限公司 | 代理人 | 逯长明;王宝筠 |
摘要
本发明公开了在异构机群中运行应用程序、提升运算速度的方法及装置,其中,所述在异构机群中运行应用程序的方法包括分别获取每种结点中单个结点的单线程运算速度;根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目;采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。通过本发明,能够减小不同配置的结点间进程的等待时间,提高运行应用程序的效率。
1.一种在异构机群中运行应用程序的方法,其特征在于,包括:
分别获取每种结点中单个结点的单线程运算速度;
对所述每种结点中单个结点的单线程运算速度进行比较,根据比较的结果以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目,其中,所述每种结点中的单个进程需要使用的线程数目是指每种结点中的每个结点启动的每个进程使用的线程数目;
采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。
2.根据权利要求1所述的方法,其特征在于,所述根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目包括:
预置数据表,所述数据表用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;
将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值落在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目;
或者,根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;
将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值符合所述预置规则中的条件时,根据所述预置规则确定这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目。
3.根据权利要求1所述的方法,其特征在于,还包括:
利用结点中总的中心处理单元CPU核心数目除以相应结点中的单个进程需要使用的线程数目,将所得结果确定为所述每种结点中需要启动的进程数目;
所述根据所述确定的每种结点中的单个进程需要使用的线程数目,在所述各种结点上运行待运行应用程序包括:根据所述确定的单个进程需要使用的线程数目以及每种结点中需要启动的进程数目,在所述各种结点上运行待运行应用程序。
4.根据权利要求1所述的方法,其特征在于,所述分别获取每种结点中单个结点的单线程运算速度包括:
分别获取每种结点中单个结点的单CPU核心的峰值频率,并测试每种结点中单个结点在单CPU核心下运行所述待运行应用程序的效率;将所述峰值频率与所述效率的乘积确定为每种结点中单个结点的单线程运算速度。
5.一种在异构机群中运行应用程序的装置,所述异构机群由至少两种配置的结点组成,在至少两种配置的结点上运行某待运行应用程序,其特征在于,包括:
单线程运算速度获取单元,用于分别获取每种结点中单个结点的单线程运算速度;
线程数目确定单元,用于对所述每种结点中单个结点的单线程运算速度进行比较,根据比较的结果以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目,其中,所述每种结点中的单个进程需要使用的线程数目是指每种结点中的每个结点启动的每个进程使用的线程数目;
运行单元,用于采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。
6.根据权利要求5所述的装置,其特征在于,所述线程数目确定单元包括:
数据表存储子单元,用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;
第一数目确定子单元,用于将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值落在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目;
或者,
规则存储子单元,用于保存根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;
第二数目确定子单元,用于将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值符合所述预置规则中的条件时,根据所述预置规则确定这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目。
7.根据权利要求5所述的装置,其特征在于,还包括:
进程数目确定单元,用于利用结点中总的中心处理单元CPU核心数目除以相应结点中的单个进程需要使用的线程数目,将所得结果确定为所述每种结点中需要启动的进程数目;
所述运行单元具体用于,根据所述确定的单个进程需要使用的线程数目以及每种结点中需要启动的进程数目,在所述各种结点上运行待运行应用程序。
8.根据权利要求5所述的装置,其特征在于,所述单线程运算速度获取单元包括:
峰值频率获取子单元,用于分别获取每种结点中单个结点的单CPU核心的峰值频率;
效率测试子单元,用于测试每种结点中单个结点在单CPU核心下运行所述待运行应用程序的效率;
运算速度获取子单元,用于将所述峰值频率与所述效率的乘积确定为每种结点中单个结点的单线程运算速度。
9.根据权利要求5至8任一项所述的装置,其特征在于,所述装置设置于所述异构机群系统的中央处理服务器内,或者,设置于所述异构机群系统中的各结点内。
10.一种在异构机群中提升运算速度的方法,所述方法应用于一异构机群中,所述异构机群包括:第一结点,所述第一结点具有第一硬件环境,第二结点,所述第二结点具有第二硬件环境;其中,所述第一结点和所述第二结点并行处理第一进程时,所述第一结点具有第一运算速度,所述第二结点具有第二运算速度,所述第一运算速度低于所述第二运算速度,其特征在于,所述方法包括:
分别获取所述第一结点及所述第二结点的单线程运算速度;
根据所述第一结点及所述第二结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;
根据所述需要使用的线程数的比值,增加所述第一结点在所述第一硬件环境下处理所述第一进程使用的线程数,使所述第一结点具有第三运算速度,所述第三运算速度高于所述第一运算速度。
11.根据权利要求10所述的方法,其特征在于,所述确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值包括:
预置数据表,所述数据表用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;
计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;
或者,
根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;
计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值符合所述预置规则中的某条件,根据所述预置规则所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。
12.一种在异构机群中提升运算速度的装置,所述装置应用于一异构机群中,所述异构机群包括:第一结点,所述第一结点具有第一硬件环境,第二结点,所述第二结点具有第二硬件环境;其中,所述第一结点和所述第二结点并行处理第一进程时,所述第一结点具有第一运算速度,所述第二结点具有第二运算速度,所述第一运算速度低于所述第二运算速度,其特征在于,所述装置包括:
单线程运算速度获取单元,用于分别获取所述第一结点及所述第二结点的单线程运算速度;
线程数比值确定单元,用于根据所述第一结点及所述第二结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;
线程数增加单元,用于根据所述需要使用的线程数的比值,增加所述第一结点在所述第一硬件环境下处理所述第一进程使用的线程数,使所述第一结点具有第三运算速度,所述第三运算速度高于所述第一运算速度。
13.根据权利要求12所述的装置,其特征在于,所述线程数比值确定单元包括:
数据表存储子单元,用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;
第一比值确定子单元,用于计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;
或者,
规则存储子单元,用于保存根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;
第二比值确定子单元,用于计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值符合所述预置规则中的某条件,根据所述预置规则所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。
14.根据权利要求12或13所述的装置,其特征在于,所述装置设置于所述异构机群系统的中央处理服务器内,或者,设置于所述异构机群系统中的各结点内。
在异构机群中运行应用程序、提升运算速度的方法及装置\n技术领域\n[0001] 本发明涉及计算机机群技术领域,特别是涉及在异构机群中运行应用程序、提升运算速度的方法及装置。\n背景技术\n[0002] 机群(cluster)系统是互相连接的多个结点的集合,每个结点对应一个服务器,这些服务器可以是单机或多处理器系统,并且,每个结点都有各自独立的存储器、I/O设备和操作系统。机群对用户和应用程序来说是一个单一的系统,它可以提供低价高效的高性能环境和快速可靠的服务。\n[0003] 异构机群是指由两种或两种以上不同配置的服务器通过高速网络互联组成的计算机系统。它与传统机群系统的区别就是,在传统机群中所有的服务器都具有相同的配置。\n相应的,异构机群的优势在于能够适应不同种类的应用,例如,有些应用需要的内存非常大,有些应用则对CPU的计算能力要求很高,这样就可以在机群中配置一部分具有很大内存的结点,以及一部分具有很强CPU计算能力的结点,将这些应用分别交给不同配置的结点完成。\n[0004] 在异构机群中,各种配置的结点数量都是预先确定的,但是在实际应用中,可能会存在所需结点数目超过系统中配置相同的结点数目的应用,此时会同时使用两种甚至两种以上配置的结点来满足应用需求。例如,在某异构机群中,有10台大内存结点和100台普通结点,大内存结点的CPU核心总数是640个,普通结点的CPU核心总数是800个。假设有一个应用程序需要使用1000个CPU核心,这时,该应用程序的需求就超出了现有的相同配置结点的CPU核心总数,因此需要同时在普通结点和大内存结点上运行该应用程序。\n[0005] 在各结点共同运行该应用程序的过程中,每个结点分别负责一部分任务,各结点之间需要互相协作,例如,结点1中某进程的下一步运算可能依赖于结点2中某进程的上一步运算结果。但是,由于在相同的运行环境下,应用程序在不同配置的结点中的运行速度可能会有所不同,因此,可能会造成不同配置结点间进程的等待,影响运行的效率。例如,假设结点1与结点2的配置不同,那么可能会存在结点2的运算速度比结点1的运算速度慢的情况,此时,结点1中的某进程在结束上一步运算之后,就需要等待结点2中相应的进程完成上一步运算,然后结点1才能根据结点2的上一步运算结果进行下一步运算。\n发明内容\n[0006] 本发明提供在异构机群中运行应用程序、提升运算速度的方法及装置,能够减少不同配置的结点间进程的等待时间,提高运行应用程序的效率。\n[0007] 本发明提供了如下方案:\n[0008] 一种在异构机群中运行应用程序的方法,包括:\n[0009] 分别获取每种结点中单个结点的单线程运算速度;\n[0010] 根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目;\n[0011] 采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。\n[0012] 优选的,所述根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目包括:\n[0013] 预置数据表,所述数据表用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;\n[0014] 将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值落在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目;\n[0015] 或者,根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;\n[0016] 将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值符合所述预置规则中的条件时,根据所述预置规则确定这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目。\n[0017] 优选的,还包括:\n[0018] 利用结点中总的中心处理单元CPU核心数目除以相应结点中的单个进程需要使用的线程数目,将所得结果确定为所述每种结点中需要启动的进程数目;\n[0019] 所述根据所述确定的每种结点中的单个进程需要使用的线程数目,在所述各种结点上运行待运行应用程序包括:根据所述确定的单个进程需要使用的线程数目以及每种结点中需要启动的进程数目,在所述各种结点上运行待运行应用程序。\n[0020] 优选的,所述分别获取每种结点中单个结点的单线程运算速度包括:\n[0021] 分别获取每种结点中单个结点的单CPU核心的峰值频率,并测试每种结点中单个结点在单CPU核心下运行所述待运行应用程序的效率;将所述峰值频率与所述效率的乘积确定为每种结点中单个结点的单线程运算速度。\n[0022] 一种在异构机群中运行应用程序的装置,所述异构机群由至少两种配置的结点组成,在至少两种配置的结点上运行某待运行应用程序,包括:\n[0023] 单线程运算速度获取单元,用于分别获取每种结点中单个结点的单线程运算速度;\n[0024] 线程数目确定单元,用于根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目;\n[0025] 运行单元,用于采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。\n[0026] 优选的,所述线程数目确定单元包括:\n[0027] 数据表存储子单元,用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;\n[0028] 第一数目确定子单元,用于将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值落在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目;\n[0029] 或者,\n[0030] 规则存储子单元,用于保存根据所述进程运算速度与进程使用的线程数目之间的关系预先设置的规则;\n[0031] 第二数目确定子单元,用于将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值符合所述预置规则中的条件时,根据所述预置规则确定这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目。\n[0032] 优选的,还包括:\n[0033] 进程数目确定单元,用于利用结点中总的中心处理单元CPU核心数目除以相应结点中的单个进程需要使用的线程数目,将所得结果确定为所述每种结点中需要启动的进程数目;\n[0034] 所述运行单元具体用于,根据所述确定的单个进程需要使用的线程数目以及每种结点中需要启动的进程数目,在所述各种结点上运行待运行应用程序。\n[0035] 优选的,所述单线程运算速度获取单元包括:\n[0036] 峰值频率获取子单元,用于分别获取每种结点中单个结点的单CPU核心的峰值频率;\n[0037] 效率测试子单元,用于测试每种结点中单个结点在单CPU核心下运行所述待运行应用程序的效率;\n[0038] 运算速度获取子单元,用于将所述峰值频率与所述效率的乘积确定为每种结点中单个结点的单线程运算速度。\n[0039] 优选的,所述装置设置于所述异构机群系统的中央处理服务器内,或者,设置于所述异构机群系统中的各结点内。\n[0040] 一种在异构机群中提升运算速度的方法,所述方法应用于一异构机群中,所述异构机群包括:第一结点,所述第一结点具有第一硬件环境,第二结点,所述第二结点具有第二硬件环境;其中,所述第一结点和所述第二结点并行处理第一进程时,所述第一结点具有第一运算速度,所述第二结点具有所述第二运算速度,所述第一运算速度低于所述第二运算速度,所述方法包括:\n[0041] 分别获取所述第一结点及所述第二结点的单线程运算速度;\n[0042] 根据所述第一结点及所述第二结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0043] 根据所述需要使用的线程数的比值,增加所述第一结点在所述第一硬件环境下处理所述第一进程使用的线程数,使所述第一结点具有第三运算速度,所述第三运算速度高于所述第一运算速度。\n[0044] 优选的,所述确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值包括:\n[0045] 预置数据表,所述数据表用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;\n[0046] 计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0047] 或者,\n[0048] 根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;\n[0049] 计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值符合所述预置规则中的某条件,根据所述预置规则所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。\n[0050] 一种在异构机群中提升运算速度的装置,所述装置应用于一异构机群中,所述异构机群包括:第一结点,所述第一结点具有第一硬件环境,第二结点,所述第二结点具有第二硬件环境;其中,所述第一结点和所述第二结点并行处理第一进程时,所述第一结点具有第一运算速度,所述第二结点具有所述第二运算速度,所述第一运算速度低于所述第二运算速度,所述装置包括:\n[0051] 单线程运算速度获取单元,用于分别获取所述第一结点及所述第二结点的单线程运算速度;\n[0052] 线程数比值确定单元,用于根据所述第一结点及所述第二结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0053] 线程数增加单元,用于根据所述需要使用的线程数的比值,增加所述第一结点在所述第一硬件环境下处理所述第一进程使用的线程数,使所述第一结点具有第三运算速度,所述第三运算速度高于所述第一运算速度。\n[0054] 优选的,所述线程数比值确定单元包括:\n[0055] 数据表存储子单元,用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;\n[0056] 第一比值确定子单元,用于计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0057] 或者,\n[0058] 规则存储子单元,用于保存根据所述进程运算速度与进程使用的线程数目之间的关系预先设置的规则;\n[0059] 第二比值确定子单元,用于计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值符合所述预置规则中的某条件,根据所述预置规则所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。\n[0060] 优选的,所述装置设置于所述异构机群系统的中央处理服务器内,或者,设置于所述异构机群系统中的各结点内。\n[0061] 根据本发明提供的具体实施例,本发明公开了以下技术效果:\n[0062] 本发明提供的在异构机群中运行应用程序的方法中,可以确定出每种结点中的单个进程需要使用的线程数目,并采用所述确定的每种结点中单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。由于每种结点中的进程需要使用的线程数目,是基于每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系确定的,因此,相当于首先对各种结点中单个结点的单线程运算速度进行了比较,然后在比较的基础上,结合进程运算速度与进程使用的线程数目之间的关系,来确定每种结点中的单个进程需要使用的线程数目。相当于通过控制进程使用的线程数目,对进程的运算速度进行控制,因此,利用本发明的方法,将有利于减小不同配置的结点之间进程的运算速度的差异,减小进程间的等待时间,提高运行应用程序的效率。\n[0063] 另外,在本发明提供的在异构机群中提升运算速度的方法中,在减小进程间的等待时间的同时,还可以通过增加原来处理速度较慢的结点中进程使用的线程数目,使得异构机群系统中整体上的运算速度得到提高,有利于进一步提高运行应用程序的效率。\n附图说明\n[0064] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。\n[0065] 图1是本发明实施例提供的在异构机群中运行应用程序的方法流程图;\n[0066] 图2是本发明实施例提供的在异构机群中运行应用程序的装置示意图;\n[0067] 图3是本发明实施例提供的在异构机群中运行应用程序的另一装置示意图;\n[0068] 图4是本发明实施例提供的在异构机群中提升运算速度的方法流程图;\n[0069] 图5是本发明实施例提供的在异构机群中提升运算速度的装置示意图。\n具体实施方式\n[0070] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0071] 为了更好地理解本发明,首先进行以下几点说明。\n[0072] (一)机群系统通常是为了大型的应用而提供的,因此,各个结点的处理器性能都是非常强的。对于异构机群系统而言,虽然各结点的配置可能会有所不同,如,不同结点的CPU型号和内存大小可能存在差异,但是各个结点处理器通常都是采用多CPU(Central Processing Unit,中央处理单元)核心。例如,在某异构机群系统中,大共享内存的结点可能配置16颗4核2.93GHz的CPU和512GB内存,普通结点则配置2颗4核3GHz的CPU和\n32GB内存。本发明实施例主要针对系统中各结点处理器都采用多CPU核心的情况。\n[0073] (二)进程是一个具有独立功能的应用程序关于某个数据集合的一次运行活动,每一个启动的应用程序就对应一个进程。在机群系统中,应用程序在多个不同结点上同时运行,并且,为了实现高性能的计算,一个应用程序可以同时启动多个副本,这样,各个副本也分别对应着一个进程,这些进程可能运行在同一个结点,也可能运行在不同的结点。即,同一个结点中可能启动多个进程来运行应用程序的多个副本,其他结点中也都各自启动多个进程来运行应用程序的多个副本;各个进程需要协同完成应用程序的运行。其中,无论是同一结点中的各个进程之间,还是不同结点的进程之间,都是通过网络传递数据,各进程之间需要通过网络互相交换数据,来进行下一步计算。\n[0074] 可见,实际上交换数据并不是发生在各个结点之间,而是发生在各个进程之间,如果系统中所有进程的运算速度都相等,就不会造成进程间的等待的问题,也就不会影响运行效率。\n[0075] (三)每个进程还可以启动多个线程同时计算,这些线程之间共享同一块内存空间,同一进程中的各个线程是并行的,彼此之间也是一种相互协作的关系,可以通过共享的内存空间交换计算结果。同时,也正是由于共享内存空间,因此同一进程的各个线程的计算结果都保存在同一内存空间中,因此,彼此之间不用通过网络进行通信。\n[0076] 从另一个角度而言,由于一个进程是由多个线程相互协作来完成的,进程的运算速度等于各个线程的运算速度之和,如果一个进程启动了n个线程,各个线程的运算速度相同,则该进程的运算速度等于每个线程运算速度的n倍。因此,一个进程启动的线程数目越多,意味着该进程的运算速度就越快,在各个线程的运算速度相同的情况下,每个线程的运算速度以及启动的线程数目影响着进程的运算速度。\n[0077] 理论上,当同一个进程使用的线程数目增加一倍时,进程的运算速度也将增加一倍。但是,由于同一个进程使用的各个线程共用同一内存地址,在访问内存的时候必须遵守一定的规则,例如只允许各个线程对同一个内存地址同时进行读操作,而在进行写操作的时候必须对写入的内存地址进行锁定,这样,其他线程就必须等待锁被释放后才能访问这个内存地址,而锁定和释放的过程也需要占用CPU核心的时间,因此,同一进程的各个线程之间存在内存争用的情况,一个进程使用的线程越多,则内存争用的情况越严重。因此,当同一进程使用的线程增多时,每个线程的运算速度会有所下降。也就是说,对于同一进程而言,如果使用的线程数是原来的2倍,但是实际上进程的速度却达不到原来的2倍,根据经验值,如果使用的线程数是原来的2倍,则实际上进程的速度会在原来的1.2倍到1.5倍之间。\n[0078] (四)对于机群系统中的某个结点而言,可以在该结点中启动多个进程来运行该应用程序的多个副本,每个进程中还可以启动多个线程。其中,每个线程需要占用结点的一个CPU核心。当然,由于结点的CPU核心总数有限,因此,每个结点中可以启动的总线程数目是有限的。也就是说,如果该结点配置有16颗4核CPU,则该结点的CPU核心总数为64,因此,该结点中启动的总线程数目不能超过64,如果该结点中启动了8个进程,则平均每个进程启动的线程数目不能超过8个。\n[0079] (五)在异构机群系统中,对于配置相同的结点而言,每个结点中启动的进程数目,以及每个进程启动的线程数目通常都是相同的,由于配置相同,因此,每个线程的运行速度也相同,相应的,各个进程的运算速度也就相同。而对于配置不同的结点而言,每个进程启动的线程数目不一定相同,同时,由于配置不同,造成每个线程的运算速度也会不同,因此,进程的运算速度也就会有所差异。因此,在同一结点内部以及相同配置的结点之间,不会产生进程等待的问题,但是,在不同配置的结点之间,就可能会存在进程等待的问题。\n[0080] 综上可见,如果能够通过某种技术手段,使得不同配置的结点中的进程的运算速度也相同或大致相同,或者减小进程运算速度的差距,则会减少进程间的等待时间。本发明实施例一提供了这样的技术手段。\n[0081] 实施例一\n[0082] 参见图1,本发明实施例一提供的在异构机群中运行应用程序的方法包括以下步骤:\n[0083] S101:分别获取每种结点中单个结点的单线程运算速度;\n[0084] 首先需要说明的是,在运行某待运行应用程序之前,根据该应用程序的CPU核心使用需求,可以预先为该应用程序分配结点,在本发明实施例中,仅考虑为一个应用程序分配了不同配置的结点的情况。其中,具体分配了几种配置的结点,每种配置的结点数目可以通过现有技术完成,本发明实施例是在假设上述配置已经完成之后的基础上进行的。\n[0085] 因此,步骤S101中所述的各种结点指的是为待运行的应用程序分配的各种结点,本发明实施例只需知道分配的结点种类及相应的配置,不必关心为该应用程序分配的每种结点的数目。\n[0086] 另外需要说明的是,步骤S101所述每种结点是指为某待运行应用程序分配的每种配置的结点,例如,如果为某应用程序分配了100个大内存结点和200个普通结点,则所述分别获取每种结点中单个结点的单线程运算速度是指,分别获取单个大内存结点及单个普通结点在使用单线程运行应用程序时的运算速度。其中,由于对于相同配置的结点而言,每个结点的单线程运算速度时相同的,因此,该步骤在分别获取每种结点中单个结点的单线程运算速度时,针对每种结点仅获取一次即可。例如,当为某待运行应用程序分配了结点之后,可以分别从每种配置的结点中任意选出一个结点,计算选择出的结点的单线程运算速度即可。具体的,仍假设为某待运行应用程序分配了100个大内存结点和200个普通结点,则可以从100个大内存结点中任选出一个结点A,从200个普通结点中任选出一个结点B,然后,分别获取结点A和结点B的单线程运算速度即可;这样,相当于是用结点A的单线程运算速度代表了单个大内存结点的单线程运算速度,用结点B的运算速度代表了单个普通结点的单线程运算速度。\n[0087] 在本发明的其他实施例中,也可以针对每个相同配置的结点都获取一次单线程运算速度,然后通过计算平均值等方式,来获取每种配置的结点中单个结点的单线程运算速度。当然,如果从相同配置的结点中选择一部分结点,然后通过计算这部分结点的单线程运算速度平均值的方式,来获取每种配置的结点中单个结点的单线程运算速度也是可行的,本领域技术人员可以根据需要进行选择。\n[0088] 此外,还需要说明的是,步骤S101是在运行待运行程序之前所做的工作,因此,该步骤S101可以看作是一种预测或者估计,获取的单线程运算速度并不一定与实际运行某待运行应用程序时的单线程运算速度相等,但是能够从一定程度上体现出实际的单线程运算速度。\n[0089] 具体获取每种结点中单个结点的使用单线程运行应用程序的运算速度的方法可以有多种,下面进行详细介绍。\n[0090] (1)如前文所述,每个线程占用一个CPU核心,因此,单线程的运算速度可以通过CPU核心的峰值频率来衡量。其中,峰值频率是用来衡量CPU核心性能的重要指标,它是指CPU核心每秒钟能完成的浮点计算最大次数。因此,可以直接将CPU核心的峰值频率作为单线程的运算速度。\n[0091] 其中,峰值频率通常包括理论峰值频率和实测峰值频率,在本发明实施例中,可以选择理论峰值频率或实测峰值频率中的任一种来表示单线程的运算速度。\n[0092] 理论峰值频率是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的:理论浮点峰值=CPU主频×CPU每个时钟周期执行浮点运算的次数。其中,CPU主频作为CPU的一个性能参数,通常都是已知的,例如,一个2.93GHZ的CPU,2.93GHZ就是该CPU的主频;CPU每个时钟周期执行浮点运算的次数,由处理器中浮点运算单元的个数及每个浮点运算单元在每个时钟周期能处理几条浮点运算来决定的;不同的处理器每个时钟周期能执行浮点运算的次数可能会有所不同,但目前常见的CPU核心,CPU每个时钟周期执行浮点运算的次数通常都是4。\n[0093] 理论峰值频率在一定程度上能够反映CPU核心的性能,但其仅反映了一种理想的状态,并不能代表CPU核心的实际运算能力。为此,可以使用一些标准的程序来测试计算机的运算速度,其中Linpack以其使用简单、适用性强等特点被广泛地用于评价计算机的实际峰值运算能力。\n[0094] 因此,实测峰值频率通常是指Linpack测试值,也就是说在这台机器上运行Linpack测试程序,通过各种调优方法得到的最优的测试结果。\n[0095] 具体实现时,对于某种结点中的某一个结点而言,可以先获取该结点中CPU核心的峰值频率,然后将该峰值频率作为该种结点中的单个结点的单线程运算速度。其他各种结点,也均做同样处理即可。\n[0096] (2)上述方法(1)中,采用CPU核心的峰值频率作为单线程的运算速度,但是,实际上在应用程序运行过程中,几乎不可能达到实测浮点峰值,更不用说达到理论浮点峰值了。\n这两个值只是作为衡量CPU核心性能的一个指标,用来表明CPU核心处理能力的一个标尺和潜能的度量。因此,上述方法(1)仅能粗略地表示出每种结点使用单线程运行应用程序的运算速度。\n[0097] 为了准确地表示出每种结点中的单个结点使用单线程运行应用程序的运算速度,可以首先对每种结点中的单个结点在使用单线程时CPU核心的效率进行测试。具体进行测试时,可以首先将各种结点中的单个结点创建的进程数设为1,该进程中使用的线程数也设为1,然后,在各种结点中运行某用于测试的应用程序。这样,就相当于是在各结点中都是使用单线程运行该应用程序,然后分别统计出在各结点中实际运行的时间,与该应用程序的算法的计算量进行对比,就可以算出各结点中CPU核心的效率。\n[0098] 然后,对于各种结点中的单个结点,分别计算单CPU核心的峰值频率(可以是理论峰值频率或实测峰值频率)与CPU核心的效率的乘积,将计算所得结果作为各种结点中的单个结点使用单线程运行应用程序的运算速度,也即各种结点中的单个结点的单线程运算速度。\n[0099] (3)上述方法(2)中,测试CPU核心的效率时,所使用的应用程序是可以任意选择的,也就是说,无论将要运行哪个应用程序,都可以使用相同的应用程序进行测试。\n[0100] 但是实际上,对于不同的应用程序而言,由于算法可能不同,代码实现质量也可能不尽相同,因此,CPU核心在运行不同应用程序时,CPU核心的效率也可能是不同的。\n[0101] 因此,该方法(3)中,可以使用待运行应用程序对CPU核心的效率进行测试。具体实现的方法与方法(2)类似,即,首先仍然是将各种结点创建的进程数设为1,该进程中使用的线程数也设为1,只是在各种结点中运行该待运行应用程序即可。然后,对于各种结点,分别计算单CPU核心的峰值频率(可以是理论峰值频率或实测峰值频率)与CPU核心的效率的乘积,将计算所得结果作为各种结点中的单个结点使用单线程运行应用程序的运算速度。\n[0102] 通过该方法(3),可以进一步提高获取的各种结点使用单线程运行应用程序的运算速度的准确性。\n[0103] 当然,在实际应用中,获取各种结点使用单线程运行应用程序的运算速度的方法并不限于上述几种,例如,还可以考虑影响CPU性能的其他因素,或者,在方法(3)的基础上,还可以将测试的结果及测试使用的应用程序保存,后续再需要运行某应用程序时,如果之前运行过某同类的应用程序(例如,都是计算类型的应用程序等),则可以直接使用之前的测试结果,而不必再重新进行测试。\n[0104] S102:根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目;\n[0105] 需要说明的是,所述每种结点中的单个进程使用的线程数目实际上是指,每种结点中的每个结点启动的每个进程使用的线程数目;由于相同配置的结点中,每个结点启动的进程数目相同,并且每个进程使用的线程数目也相同,因此,相同配置的结点中每个结点的每个进程使用的线程数目都是相同的,为了体现语言的简洁性,将其描述为每种结点中的单个进程使用的线程数目。例如,大内存结点中,每个结点启动4个进程,每个进程需要使用4个线程,则,这种结点中的单个进程需要使用的线程数目为4。\n[0106] 与步骤S101类似,该步骤S102也是在运行具体的待运行应用程序之前进行的,其目的是确定出所述每种结点中的单个进程需要使用的线程数目,并且,如果将各种结点按照该步骤计算出的线程数目进行配置,则可以使得对于不同结点之间的进程而言,缩小进程间运算速度的差异。\n[0107] 因此,在该步骤S102中,首先对各种结点中单个结点的单线程运算速度进行了比较,然后在比较的基础上,根据预先设定的进程运算速度与进程使用的线程数目之间的关系,来确定每种结点的单个进程需要使用的线程数目。例如,假设结点A与结点B为不同配置的结点的代表,如果发现结点A与结点B的单线程运算速度的比值非常大,则可以使结点B的所述线程数目大于结点A,通过线程数目的增加,来适当提高结点B的进程运算速度,减小结点A与结点B之间的进程运算速度。因此,利用该方法,将有利于减小不同配置的结点之间进程的运算速度,减小进程间的等待时间。\n[0108] 如前文所述,对于同一个进程而言,如果使用的线程数目不同,则每个线程的运算速度也会有所不同,因此,使用的线程数目的比值不一定等于进程运算速度的比值。但是,可以统计出进程的运算速度与进程使用的线程数目之间的关系。例如,当使用的线程数目的比值已知时,可以根据统计获知该比值对应的进程运算速度的比值所在的区间。例如,当某进程使用的线程数目是原来的2倍时,即线程数目的比值为2∶1,则根据统计可以获知,进程的运算速度将变为原来的1.2到1.5倍之间,即进程运算速度的比值所在的区间为(1.2,1.5);当某进程使用的线程数目是原来的4倍时,即线程数目的比值为4∶1,则根据统计可以获知,进程的运算速度将变为原来的2到2.5倍之间,即进程运算速度的比值所在的区间为(2,2.5);同理,当线程数目的比值为其他值时,也可以通过统计获知各种比值下,对应的进程运算速度的比值所在的区间。\n[0109] 也就是说,根据统计可以获知进程运算速度与进程使用的线程数目之间的关系,这样,具体在确定所述每种结点中的单个进程需要使用的线程数目时,可以如下进行:将步骤S101中获取的各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;然后,根据所述单线程运算速度之间的比值,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目。\n[0110] 具体实现时,可以有多种方式,下面进行详细介绍。\n[0111] 方式一、可以首先预置一张数据表,如表1所示,该数据表用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间。\n[0112] 表1\n[0113] \n 同一进程使用线程数目的比值 进程运算速度的比值所在的区间\n 2∶1 (1.2,1.5)\n 4∶1 (2,2.5)\n …… ……\n[0114] 根据上述表1,可以首先将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;如果计算出的某两种结点的所述比值落在表1中的某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为这两种结点中的单个进程需要使用的线程数目的比值;例如,结点1与结点2的单线程运算速度的比值为1.3,该比值落在(1.2,1.5)内,因此,可以将结点1与结点2中的进程需要使用的线程数目的比值,确定为1∶2。当然,如果某两个结点的单线程运算速度的比值小于1.2,则可以将这两个结点的所述线程数目的比值确定为1∶1;其他结点也可以进行相同的操作,最终可以得到各种结点之间所述线程数目的比值,进而便可以确定出各种结点中的单个进程需要使用的线程数目。例如,有三种结点,结点1与结点2之间的所述线程数目的比值为1∶2,结点2与结点3之间的所述线程数目的比值为1∶1,则,三种结点之间所述线程数目的比值为1∶2∶2,最终可以将三种结点的所述线程数目分别确定为2,4,4,或者,也可以分别确定为4,8,8等。\n[0115] 下面论述该方式一的合理性。首先,假设结点A与结点B的单线程运算速度的比值为1.3,该比值落在(1.2,1.5)内,因此,按照该方式一的方法,将结点A与结点B中的进程需要使用的线程数目的比值确定为1∶2。由于结点的单线程运算速度,相当于是一个进程中使用一个线程时,该进程的运算速度,因此,相当于,结点A中的进程a和结点B中的进程b使用的线程数目都为1时,进程a与进程b之间的运算速度之比为1.3。因此,可以保持进程a使用的线程数目不变,将进程b使用的线程数目设为原来的2倍,这样,进程b的运算速度将变为原来的1.2到1.5倍,因此,可以减小两者之间的差距。而此时,结点A与结点B之间的所述线程数目的比值为1∶2。\n[0116] 方式二、在该方式2中,也可以预先设置规则,例如,在计算出每两个结点的单线程运算速度之间的比值之后,如果发现某两种结点的所述单线程运算速度之间的比值大于\n1.2,则将这两种结点的所述线程数目之比确定为1∶2;或者,如果发现某两种结点的所述单线程运算速度之间的比值大于2,则将这两种结点的所述线程数目之比确定为1∶4等等。\n[0117] 该方式二与方式一仅仅是在实现方式上有所不同,因此,其他相关内容这里不再赘述。\n[0118] 需要说明的是,由于目前常用的多核处理器,CPU核心的总数通常都是2、4、8等,即通常为2的正整数次幂,因此,针对这种情况,可以将各结点中单个进程使用的线程数目也取成2的正整数次幂。这样,如果计算出两个结点A、B中的所述线程数目的比值为1∶2,则可以把结点A中的所述线程数目的值取成2,结点B中所述线程数目b的值取成4。也就是说,在结点A中,各个进程需要使用的线程数目是2个,在结点B中,各个进程使用的线程数目是4个。\n[0119] S103:采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。\n[0120] 通常,在各种结点上运行待运行应用程序时,可以采用固定的启动程序的格式,例如,mpirun-np()-hostfile hostlist xhpl,其中,mpirun是一个函数名,用户将待运行应用程序加载到内存中,并根据np、hostfile中的值,为每个结点进行任务分配;np代表所有参与运行该应用程序的结点启动的进程总数;hostlist是结点列表,其中记录了每个结点启动的进程数目及,每个进程需启动的线程数目;xhpl代表待运行的应用程序。\n[0121] 其中,待运行应用程序支持多线程,并且运行一个应用程序所使用的线程数目是可以修改的。在现有技术中,如果需要采用不同配置的结点运行某应用程序,则总的进程数以及每个进程启动的线程数目可能是采用默认值。\n[0122] 例如,假设某异构机群由两个结点组成,一个结点配置4颗4核2.93GHz的CPU,另一个结点配置2颗4核3GHz的CPU。需要运行一个名叫xhpl应用程序。则在现有技术中,默认情况下,一般是在第一个结点启动8个进程,每个进程使用2个线程,第二个结点启动4个进程,每个进程使用2个线程;因此,总进程数为12。启动程序的格式为:\n[0123] mpirun-np 12-hostfile hostlist xhpl\n[0124] 而针对上述例子,在本发明实施例中,可以在第一个结点启动4个进程,每个进程使用4个线程,第二个结点启动4个进程,每个进程使用2个线程;因此,总进程数为8。启动程序的格式为:\n[0125] mpirun-np 8-hostfile hostlist xhpl\n[0126] 需要说明的是,在本发明实施例中,确定了每个进程中使用的线程数目之后,结点中启动的进程数目可以是任意选择的,只要保证总得线程数目不超过总的CPU核心数目即可。当然,为了保证用满所有的资源,还可以根据每个进程启动的线程数及结点的CPU核心总数,来计算出结点启动进程的数目。具体的,可以将结点的CPU核心总数除以每个进程启动的线程数目,得到的结果即为结点启动的进程数目。例如,某结点的CPU核心总数为16,每个进程启动的线程数目为4,则结点启动的进程数目为16/4=4。\n[0127] 综上所述,对本发明实施例提供的在异构机群中运行应用程序的方法进行了详细地介绍。其中,该方法中各步骤的执行主体可以位于中央处理服务器内,也可以位于各结点内,可以根据实际需要进行配置。\n[0128] 与本发明实施例提供的在异构机群中运行应用程序的方法相对应,本发明实施例还提供了一种在异构机群中运行应用程序的装置,其中,所述异构机群由至少两种配置的结点组成,并在至少两种配置的结点上运行某待运行应用程序,参见图2,该装置包括:\n[0129] 单线程运算速度获取单元201,用于分别获取每种结点中单个结点的单线程运算速度;\n[0130] 线程数目确定单元202,用于根据所述每种结点中单个结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述每种结点中的单个进程需要使用的线程数目;\n[0131] 运行单元203,用于采用所述确定的每种结点中的单个进程需要使用的线程数目,在各种结点上运行待运行应用程序。\n[0132] 具体在确定每种结点中单个进程需要使用的线程数目时,可以采用多种方法,在其中一种方法中,可以预先采用数据表的方式保存进程运算速度与进程使用的线程数目之间的关系,相应的,线程数目确定单元202可以包括:\n[0133] 数据表存储子单元,用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;\n[0134] 第一数目确定子单元,用于将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值落在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目。\n[0135] 在另一种方法中,可以根据进程运算速度与进程使用的线程数目之间的关系,预先设置一定的规则,该规则中保存了判断的条件,以及满足各条件时对应的所述线程数目信息;相应的,线程数目确定单元202可以包括:\n[0136] 规则存储子单元,用于保存根据所述进程运算速度与进程使用的线程数目之间的关系预先设置的规则\n[0137] 第二数目确定子单元,用于将各种结点中单个结点的单线程运算速度两两组合,计算各组合中两结点的所述单线程运算速度之间的比值;当两种结点的所述单线程运算速度之间的比值符合所述预置规则中的条件时,根据所述预置规则确定这两种结点中的所述线程数目的比值;最终得到各种结点之间所述线程数目的比值,并确定出各种结点中的单个进程需要使用的线程数目。\n[0138] 在确定了单个进程使用的线程数目之后,就可以达到减少进程之间的等待的目的,因此,每个结点具体启动多少个进程并不影响本发明的实现。当然,在本发明实施例中,也可以包括确定每个结点启动的进程数目的步骤,相应的,参见图3,该装置还包括:\n[0139] 进程数目确定单元204,用于根据所述确定的每种结点中的单个进程需要使用的线程数目,以及相应结点总的中心处理单元CPU核心数目,确定所述每种结点中需要启动的进程数目;\n[0140] 此时,运行单元203具体用于,根据所述确定的单个进程需要使用的线程数目以及每种结点中需要启动的进程数目,在所述各种结点上运行待运行应用程序。\n[0141] 通常,进程数目确定单元204确定的每个结点启动的进程数目是可以任意的,只要保证每个结点使用的总线程数目不超过该结点总的CPU核心数目即可。但是,为了充分利用各结点的资源,最好的情况是使结点的各CPU核心都能得到利用,此时,进程数目确定单元204具体可以用于利用结点中总的CPU核心数目除以相应结点中的单个进程需要使用的线程数目,将所得结果确定为所述每种结点中需要启动的进程数目。\n[0142] 具体的获取单线程运算速度的方法可以有多种,具体的,单线程运算速度获取单元201可以包括:\n[0143] 峰值频率获取子单元,用于分别获取每种结点中单个结点的单CPU核心的峰值频率;\n[0144] 第一运算速度获取子单元,用于将所述峰值频率作为每种结点中单个结点的单线程运算速度。\n[0145] 为了提高获取单线程运算速度的准确性,单线程运算速度获取单元201也可以包括:\n[0146] 峰值频率获取子单元,用于分别获取每种结点中单个结点的单CPU核心的峰值频率;\n[0147] 效率测试子单元,用于测试每种结点中单个结点在单CPU核心下运行应用程序的效率;\n[0148] 第二运算速度获取子单元,用于将所述峰值频率与所述效率的乘积确定为每种结点中单个结点的单线程运算速度。\n[0149] 其中,为了进一步提高获取单线程运算速度的准确性,所述效率测试子单元具体可以用于,测试每种结点中单个结点在单CPU核心下运行所述待运行应用程序的效率。\n[0150] 其中,本发明实施例所述的装置,可以设置于异构机群系统的中央处理服务器内,也可以设置于异构机群系统中的各结点内,具体实现时,可以根据实际需要进行配置。\n[0151] 实施例二\n[0152] 前文所述对本发明实施例提供的在异构机群中运行应用程序的方法及装置进行了详细地介绍,其中,通过修改每种结点中单个进程使用的线程数目,来减小不同配置的结点之间的进程运算速度的差异。相对于默认状态而言,可能是对于运算速度慢的结点,增加单个进程使用的线程数目,或者,也可能是对于运算速度快的结点,减少单个进程使用的线程数目,又或者,还可能同时改变各种结点中进程使用的线程数目,等等。\n[0153] 在本发明的实施例二中,还提供了一种在异构机群中提升运算速度的方法,该方法应用于一异构机群中,所述异构机群包括:第一结点,所述第一结点具有第一硬件环境,第二结点,所述第二结点具有第二硬件环境;其中,所述第一结点和所述第二结点并行处理第一进程时,所述第一结点具有第一运算速度,所述第二结点具有所述第二运算速度,所述第一运算速度低于所述第二运算速度,参见图4,该方法包括以下步骤:\n[0154] S401:分别获取所述第一结点及所述第二结点的单线程运算速度;\n[0155] 其中,所述第一结点和第二结点并不是特指某一个结点,而是分别代表异构机群中,运算速度较慢的结点以及运算速度较快的结点,可能分别对应一个结点,还可能分别对应多个结点,然后分别从多个结点中选择出的一个结点,等等,本发明实施例对此并不做限定,只要结点间处理进程的速度存在快慢的差异,就在本发明的保护范围之内。\n[0156] 其中,关于具体的获取获取所述第一结点及所述第二结点的单线程运算速度的方法,可以参见实施例一中,关于获取每种结点中单个结点的单线程运算速度的介绍,限于篇幅,这里不再赘述。\n[0157] S402:根据所述第一结点及所述第二结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0158] 在该步骤中,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值时,其原则也是尽量减小所述第一结点与所述第二结点在处理所述第一进程时,速度上的差异。\n[0159] 具体实现时,也可以采用实施例一中,关于确定每种结点中的单个进程需要使用的线程数目的方法,例如,可以预置数据表,所述数据表用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间。在具体计算时,可以按照以下方式实现:计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。\n[0160] 与实施例一中类似,也可以采用预制规则的方式实现,具体的,可以根据所述进程运算速度与进程使用的线程数目之间的关系预置规则;计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值符合所述预置规则中的某条件,根据所述预置规则所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。\n[0161] 关于更加详细的介绍,可以参见实施例一中的相关部分,限于篇幅,这里也不再赘述。\n[0162] S403:根据所述需要使用的线程数的比值,增加所述第一结点在所述第一硬件环境下处理所述第一进程使用的线程数,使所述第一结点具有第三运算速度,所述第三运算速度高于所述第一运算速度。\n[0163] 例如,假设在默认状态下,第一结点和第二结点在处理第一进程时,使用的线程数都是2个;如果计算出所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值位2∶1,则可以将第一结点在所述第一硬件环境下处理所述第一进程使用的线程数增加为4个,这样,即减小了第一结点与第二结点间进程的运算速度的差异,缩短了进程等待时间,而且,通过增加原来处理速度较慢的结点中进程使用的线程数目,使得异构机群系统中整体上的运算速度得到提高。\n[0164] 需要说明的是,该实施例二重点说明的都是与实施例一的不同之处,关于该实施例二中未详述部分,参见实施例一即可。\n[0165] 与实施例二中提供的在异构机群中提升运算速度的方法相对应,本发明实施例还提供了一种在异构机群中提升运算速度的装置,所述装置应用于一异构机群中,所述异构机群包括:第一结点,所述第一结点具有第一硬件环境,第二结点,所述第二结点具有第二硬件环境;其中,所述第一结点和所述第二结点并行处理第一进程时,所述第一结点具有第一运算速度,所述第二结点具有所述第二运算速度,所述第一运算速度低于所述第二运算速度,参见图5,该装置可以包括以下单元:\n[0166] 单线程运算速度获取单元501,用于分别获取所述第一结点及所述第二结点的单线程运算速度;\n[0167] 线程数比值确定单元502,用于根据所述第一结点及所述第二结点的单线程运算速度,以及预先设定的进程运算速度与进程使用的线程数目之间的关系,确定所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0168] 线程数增加单元503,用于根据所述需要使用的线程数的比值,增加所述第一结点在所述第一硬件环境下处理所述第一进程使用的线程数,使所述第一结点具有第三运算速度,所述第三运算速度高于所述第一运算速度。\n[0169] 具体实现时,线程数比值确定单元502包括:\n[0170] 数据表存储子单元,用于保存第一数据与第二数据之间的对应关系,其中,所述第一数据为同一进程使用线程数目的比值,所述第二数据为在所述线程数目的比值下,进程运算速度的比值所在的区间;\n[0171] 第一比值确定子单元,用于计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值在某第二数据的范围内,则将该第二数据对应的第一数据的倒数,确定为所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值;\n[0172] 或者,线程数比值确定单元502也可以包括:\n[0173] 规则存储子单元,用于保存根据所述进程运算速度与进程使用的线程数目之间的关系预先设置的规则;\n[0174] 第二比值确定子单元,用于计算所述第一结点与所述第二结点的单线程运算速度的比值;如果所述单线程运算速度的比值符合所述预置规则中的某条件,根据所述预置规则所述第一结点与所述第二结点在处理所述第一进程时需要使用的线程数的比值。\n[0175] 具体实现时,所述装置设置于所述异构机群系统的中央处理服务器内,或者,设置于所述异构机群系统中的各结点内。\n[0176] 对于该装置实施例,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。\n[0177] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。\n[0178] 以上对本发明所提供的在异构机群中运行应用程序、提升运算速度的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2013-12-04
- 2011-07-20
实质审查的生效
IPC(主分类): G06F 9/50
专利申请号: 200910241769.1
申请日: 2009.12.07
- 2011-06-08
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-01-07
|
2007-07-05
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |