《一种多核实时系统任务间加速因子的定义和测量方法.pdf》由会员分享,可在线阅读,更多相关《一种多核实时系统任务间加速因子的定义和测量方法.pdf(13页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103049335 A (43)申请公布日 2013.04.17 CN 103049335 A *CN103049335A* (21)申请号 201210570000.6 (22)申请日 2012.12.25 G06F 9/50(2006.01) (71)申请人 北京航空航天大学 地址 100191 北京市海淀区学院路 37 号 (72)发明人 张炯 牛天放 龙其民 李莹 (54) 发明名称 一种多核实时系统任务间加速因子的定义和 测量方法 (57) 摘要 本发明基于加速效应多核的实时调度模型, 给出了实时任务集中并行任务间加速因子的定 义, 并提出了复杂加速因子分析。
2、模型及测量方法。 本发明中提出的加速因子用于描述多个任务间的 加速效应, 称为复杂加速因子, 可用于多核实时系 统任务调度的启发条件。测量方法包括初始化测 量环境、 测量任务独立运行时间、 测量复杂加速因 子、 输出测量结果文件这四个主要步骤。 本发明提 出的测量方法在保证测量准确性的同时, 提出了 影响距离、 测量剪支等策略, 以提高测量效率。 (51)Int.Cl. 权利要求书 2 页 说明书 9 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 9 页 附图 1 页 1/2 页 2 1. 一种多核实时系统任务间加速因子的定义, 其特。
3、征在于 : k 个访存空间有交集的计 算任务 1, 2k, 其中每个任务单独执行时间分别为 C1, C2Ck。将其部署在同一 个处理器 / 处理器核上以 seq=1, 2k的顺序执行时, 由于共享了处理器 / 处理器 核的 L1、 L2 或 L3 级 Cache, 在并发运行过程中, 彼此增加了对方的 Cache 命中率, 减少对方 及总的运行时间, 使得每个任务的执行时间分别变为C1, C2Ck, 则称该组任务间 的在 seq 顺序下的复杂加速因子为规定任务间的最大影响长 度 d, 在测量加速因子时, 假定在该影响距离以外的两个任务相互间不具备加速效应, 因此 仅考虑影响长度 d 以内的任务。
4、组合。 2. 一种多核实时系统任务间加速因子的测量方法, 其特征在于, 实施如下步骤 : 步骤 1 : 初始化测量系统。 输入给定任务集 S=1, 2n ; 根据任务集特性输入影响距离 d ; 初始化单独执 行时间数组 Cn ; 初始化复杂加速因子矩阵。 步骤 2 : 测量各个任务的独立执行时间。 依次测量任务集 S 中每个任务 i在缓存为空且无中断情况下的独立运行时间 Ci。 步骤 2.1 : 初始化任务运行环境, 清空处理器 L1、 L2、 L3 级 cache。 步骤 2.2 : 将任务 i部署在一个处理器 p 上并执行, 在无中断的情况下记录 i的执 行时间 ck。 步骤 3 : 测量。
5、复杂加速因子 权 利 要 求 书 CN 103049335 A 2 2/2 页 3 步骤 3.1 : 选取下一个 i 个任务组成的任务组合 s。 步骤 3.2 : 生成任务组合 s 的下一个执行顺序 seq。 步骤 3.3 : 预判断当前序列的加速效果, 如果当前序列的子序列加速效果较差, 则跳过 测试, 直接将当前序列的加速因子设为一默认较低值。 步骤3.4 : 将任务组合s部署在同一个处理器核p上, 按照步骤3.2生成的执行顺序seq 依次执行 s 中任务, 记录任务组合的执行总时间 t 。通过该时间即可计算出当前组合对应 的加速因子。 步骤 4 : 测量结果输出。将上述测量结果储存于文件。
6、中输出。 3. 根据权利要求 2 所述的一种多核实时系统任务间加速因子的测量方法, 其特征在 于, 所述步骤 3.4 中任务部署执行具体为 : 将任务组合 s 部署在同一个处理器核 p 上, 按照 步骤 3.2 生成的执行顺序 seq 依次执行 s 中任务, 记录任务组合的执行总时间 t 。通过该 时间即可计算出当前组合对应的加速因子。 4. 根据权利要求 2 所述的一种多核实时系统任务间加速因子的测量方法, 其特征在 于, 在所述步骤 3.3 中预判断当前序列的加速效果具体为 : 根据步骤 3.2 获得的执行序列 seq, 假设 seq 中任务数为 k, 当 k 4 时, 则检测 seq 中。
7、长度为 k-1、 k-2 的子序列, 显然其 长度为 k-1、 k-2 的子序列个数分别为 2 和 3, 此时查询之前获得的复杂加速因子表 (k-1 与 k-2 两个表 ), 如果其子序列的加速效应显示为比较显著的减速效果, 即当前待测试的任务 集的子集中任务亲和性较差, 则可以假定当前待测试任务序列的任务亲和性也较差, 可以 直接跳出下面的步骤 2.1 与步骤 3.4, 直接对当前序列的加速效应值设定为一个较低的默 认值。通过本步骤的判断, 使用剪枝的方式显著减少测试时间, 空间开销, 提高算法执行效 率。 权 利 要 求 书 CN 103049335 A 3 1/9 页 4 一种多核实时系。
8、统任务间加速因子的定义和测量方法 技术领域 0001 本发明涉及一种多核实时系统中任务间加速因子的定义及测量方法, 属于计算机 任务调度领域。 背景技术 0002 随着航空、 箭载、 星载技术的发展, 与这些领域相关的嵌入式实时系统对计算能力 的需求不断提高, 实时计算系统日趋复杂, 而系统需要同时处理的任务数、 任务复杂度也大 幅增长。 多核处理器以其并行处理能力、 高效率、 高性能、 相对低功耗等特性, 已经逐渐被用 于取代单核处理器、 提高实时性能, 成为处理这种复杂应用的有效解决手段。 但由于多核处 理器的结构更加复杂, 随之引发了一系列基础性和一般性的问题亟待解决, 其中一个很重 要。
9、的就是在现有系统中面向单处理器的实时调度算法如何映射到多处理器环境中, 即在多 核环境中应采取怎样的实时调度算法, 以保证计算的正确性和实时性的同时提高性能。 0003 目前比较成熟的实时调度模型大多针对单核环境, 比较经典的如 RMS、 DMS、 EDF、 LST 等, 其中 RMS 为固定优先级的静态实时调度算法, 该算法将可达处理器利用率作为算法 可调度的判定条件, 然而, 这个判定条件是充分不必要的 ; Buttazzo 等人在 RM 算法的基础 上提出了的弹簧调度算法, 算法将任务序列类比为一串相联的弹簧, 通过反复迭代不断地 压缩任务执行时间, 从而降低部分任务的 CPU 利用率,。
10、 提高任务集的可调度性。但是弹簧调 度算法并未提出一个可量化的弹性系数确定方法, 因此难以实施。 0004 近些年来针对多处理器的实时调度研究也得到了广泛的重视, 成为学术界研究的 热点问题之一。但是为固定优先级调度算法找到一个最优任务分配方案却是一个 NP hard 问题, 在实践上需要利用一些启发条件来构造启发式调度算法, 从而给出收敛较快的判定 算法。目前多处理器任务调度目前主要有两种策略 : 划分方案和全局方案。在全局调度方 案策略中, 实时任务的每一次出现都在不同的处理器上执行, 所有处理器上只运行同一种 调度算法。任务在未执行完之前可以被抢占并且可以在不同的处理器间迁移。在划分调度。
11、 方案中, 一个任务的所有出现都在同一处理器上执行, 全部任务由任务分配算法预先划分 到处理器 ; 每一个处理器可以运行不同或者相同的单处理器任务调度算法。 0005 我们的实验证明, 运行于同一计算系统的相关任务集中, 任意两个任务之间存在 不同程度的计算加速效应, 这种加速效应在实际系统中可以是加速和减速, 定量的加速效 果可以通过具体的加速因子数值给出。针对一组确定的任务集, 如果可以找到判断这种相 关性的通用判定方法, 进而根据加速因子的数值比较将任务划分到不同处理器核上, 增加 正加速因子比例, 减少负加速因子比例, 对于提高任务调度效率将很有帮助。 发明内容 0006 本发明针对基。
12、于加速效应多核的实时调度模型, 给出了实时任务集中并行任务间 加速因子的定义, 并提出了加速因子分析模型及测量方法。 0007 首先说明加速效应。在多核计算环境下, 非常容易出现 “高速缓存竞争” 现象。而 说 明 书 CN 103049335 A 4 2/9 页 5 多核处理器一般会采用高速缓存一致性协议来保证不同核心上缓存的同步。这种一致性 的维护是以缓存行 (Cache Line) 为单位的, 缓存行内的任何一个字节的修改都会导致整个 缓存行在其它核上的备份失效 (因为它们保存着该部分数据的旧值) 。如果多个处理器核 心频繁地对同一缓存行进行修改, 带来的缓存同步的代价会非常大。而如果将。
13、具有数据共 享的若干任务调度同一个处理器核上或共享 Cache 的处理器组上运行, 就可以有效地减少 Cache 替换频率, 提高 Cache 命中率, 减少任务执行时间。即运行在同一计算系统中的相关 任务集中, 任意两个或多个任务在同一处理器或共享 Cache 的处理器组上上顺序执行时, 彼此之间会由于数据的相关性而带来不同程度的加速效果, 这种加速效果在实际系统中既 可是加速也可以是减速, 加速效果是由于任务之间数据相关性好, 先执行的任务已经把后 续任务所需的数据调入到高速缓存, 从而减少了 Cache 不命中和替换的次数, 使得执行速 度加快 ; 而减速效果可能是由于先后执行的任务之间。
14、数据相关性差, 顺序执行时需要频繁 地对 Cache 行写回、 替换操作, 从而使执行速度降低。对于如上所述的加速效果我们可以通 过具体加速因子数值定量给出。 0008 本发明中定义的加速因子并不局限于描述两个任务之间的加速效果, 而是用于表 述 n 个任务 (n 2) 之间的加速效应, 定量描述这 n 个任务按一定顺序执行时的加速效果, 称之为复杂加速因子。 0009 复杂加速因子的定义为 : 0010 k个访存空间有交集的计算任务1, 2k, 其中每个任务单独执行时间分别 为 C1, C2Ck。将其部署在同一个处理器 / 处理器核上以 seq=1, 2k的顺序执 行时, 由于共享了处理器 。
15、/ 处理器核的 L1、 L2 或 L3 级 Cache, 在并发运行过程中, 彼此增加 了对方的 Cache 命中率, 减少了由访存不命中带来的数据存取开销, 从而可以减少对方及 总的运行时间, 使得每个任务的执行时间分别变为C1, C2Ck, 则称该组任务间的 在 seq 顺序下的复杂加速因子为显然当任务集合不存在相互 加速时, 即 Ci=C ii=1,2k 时, 复杂加速因子的值应为 1 ; 当任务集合由于共享 Cache、 提 高 Cache 命中率而存在加速效应时,从而加速因子值大于 1, 由于每个任 务获得的加速时间肯定有限, 任务执行时间不会无限制的减小, 因此复杂加速因子的值存 。
16、在上界 ; 同理当任务间的加速效应表现为减速时, 减速效果也存在下界, 即加速因子的值一 定大于 0。 0011 在真实系统中具体实现时, 对于包含 n 个任务的任务集 S, 其中 m(mn) 个任务间 的加速因子可用一个的矩阵表示, 如表1所示。 二维数组中第一维表示不同任务的 组合, 对于 n 个任务的任务集中选取 m 个任务显然有种组合, 表中分别代表 不同的任务组合 ; 第二维表示该任务组合下的不同任务排列方式, m 个任务的执行顺序排 列方式有种, A1, A2Am! 分别代表不同的排列方式。 0012 说 明 书 CN 103049335 A 5 3/9 页 6 0013 表 1 。
17、0014 例如对于 5 个任务组成的任务集 S, 其中 3 个任务间的加速因子矩阵如表 2 所示。 该矩阵中第二行第三列的元素代表 1, 2, 4 这三个任务的集合以 2, 1, 4 的顺 序执行时的加速因子。 0015 0016 表 2 0017 根据定义, 对于任意一种任务组合1, 2k, 有种执行顺序的排列方 式, 当 k 的值较大时, 求出每一种任务组合下的加速因子显然困难很大。事实上, 在实时系 统的实际应用中, 分配到每个处理器上的任务数不会非常大, 而且由于程序的局部性原理, 在一个较长的执行序列中, 先执行的任务对后面相距较远的任务的影响将会很小, 可以忽 略不计。因此规定任务。
18、间的最大影响长度 d, 在测量加速因子时, 假定在该影响距离以外的 两个任务相互间不具备加速效应, 因此仅考虑影响长度 d 以内的任务组合。此处给出的影 响长度 d 是一个抽象的概念, 对于不同的任务集, 其中的任务的特性可能相差很大, 也就是 说 d 的大小是根据特定的任务集而确定的。 0018 本专利中提出的针对多个任务间 (任务数 2) 的加速因子的测量方法, 采取装载 前单独测量的方法, 即在实际任务分配前通过测量计算出所有任务之间的加速关系, 且保 说 明 书 CN 103049335 A 6 4/9 页 7 证加速因子的测量结果符合实际的系统运行情况。以保证获得性能最优的调度策略。。
19、测量 过程包含如下步骤 : 0019 步骤 1 : 初始化测量系统。 0020 输入给定任务集 S=1, 2n ; 0021 根据任务集特性输入影响距离 d, 该影响距离 d 可以根据不同因素确定, 例如任务 的执行时间t, 影响距离d与任务执行时间t成反比, 即当每个任务所需的执行时间较长时, 任务间的影响距离会更短。考虑到影响距离 d 不确定, 因此既可以采取直接输入的方式, 也 可以通过任务单独执行时间计算出 d 值。 0022 初始化单独执行时间数组 Cn ; 0023 初始化复杂加速因子矩阵, 即依次生成的 float 类型二 维数组。 0024 步骤 2 : 测量各个任务的独立执行。
20、时间。 0025 依次测量任务集S中每个任务i在缓存为空且无中断情况下的独立运行时间Ci。 0026 测量方法 : 0027 0028 步骤 2.1 : 初始化任务运行环境, 清空处理器 L1、 L2、 L3 级 cache, 以保证任务执行 时缓存中不会存在数据, 此时执行任务时不需要写回 Cache 中原有数据, 且当前任务所需 数据需要从主存调入 Cache, 因此可以保证此处测得的任务执行时间为任务单独执行时间, 不会受到其它任务加速效应的影响。 0029 步骤 2.2 : 将任务 i部署在一个处理器 p 上并执行, 在无中断的情况下记录 i 的执行时间 ck。在伪代码中可以看出内层循。
21、环执行了 m 次, 也就是说, 对于每个任务, 都是 测试了m次任务单独运行时间, 将这m次运行时间取平均值, 即可得到比较准确的任务单独 执行时间 Ci。 0030 步骤 3 : 测量复杂加速因子 0031 测量任务集 S 中各任务间的复杂加速因子 (2 任务数 x n) 。 0032 测量方法 : 0033 说 明 书 CN 103049335 A 7 5/9 页 8 0034 步骤 3.1 : 选取下一个 i 个任务组成的任务组合 s。即为一个在 n 个任务组成的集 合中选取i个任务组合的函数, 每次选取下一个任务组合, 经过次选取后, 即实现了选取i 个任务的全组合。 0035 步骤 。
22、3.2 : 生成任务组合 s 的下一个执行顺序 seq。该函数对于给定的任务组合, 生成该任务组合的全排列, 每次输出下一个排列方式。 0036 步骤 3.3 : 本子步骤根据步骤 3.2 获得的执行序列 seq, 假设 seq 中任务数为 k, 当 k 4 时, 则检测 seq 中长度为 k-1、 k-2 的子序列, 显然其长度为 k-1、 k-2 的子序列个数分 别为 2 和 3, 此时查询之前获得的复杂加速因子表 (k-1 与 k-2 两个表 ), 如果其子序列的加 速效应显示为比较显著的减速效果, 即当前待测试的任务集的子集中任务亲和性较差, 则 可以假定当前待测试任务序列的任务亲和性。
23、也较差, 可以直接跳出下面的步骤 2.1 与步骤 3.4, 直接对当前序列的加速效应值设定为一个较低的默认值。通过本步骤的判断, 可以通 过剪枝的方式显著减少测试时间, 空间开销, 提高算法执行效率。 0037 步骤 3.4 : 经过步骤 3.3 的判断, 如果当前任务序列的子序列加速效应较好, 则进 行如下测试 : 将任务组合 s 部署在同一个处理器 p 上, 按照步骤 3.2 生成的执行顺序 seq 依 次执行 s 中任务, 记录任务组合的执行总时间 t 。t 即为该任务组合以 seq 顺序执行, 经 过任务相互间加速效应后得到的任务执行总时间。 通过该时间即可计算出当前组合对应的 加速因。
24、子。 说 明 书 CN 103049335 A 8 6/9 页 9 0038 步骤 4 : 测量结果输出 0039 本步骤用于将上述测量结果储存于文件中输出, 用于持久化数据, 以便后续使用 该加速因子做任务调度时使用。 输出数据时, 将不同长度的加速因子表依次输出, 之后计算 出每种任务组合下的最优执行顺序, 将该任务组合作为键、 该最优顺序作为键值储存为键 值对, 从而方便任务调度时查找。 0040 本发明在 RM 算法、 弹簧算法的基础上, 提出了基于加速效应多核的实时调度模 型, 提出了实时任务集中并行任务间加速因子的定义, 并给出了加速因子分析模型及测量 方法, 相比原有的 RM 算。
25、法、 弹簧算法, 具有下述优点和效果 : 0041 1) 提出了弹簧调度算法中弹簧弹性系数可定量的定义和测量方法 0042 现有的弹簧算法只是提出了一种通过压缩任务执行时间从而提高任务集可调度 性的思路, 然而由于算法需要反复迭代不具备线性复杂度, 且算法缺乏实现弹性系数的具 体定义, 并未提出弹性系数的可量化的测量方法。 本发明中提出了加速因子的定义, 并提出 了加速因子可量化的测量方法, 并提出了在真实系统中实现的可行方案, 从而得到了可被 用于多处理器实时调度的启发条件。 0043 2) 提出了影响长度的概念。 0044 提出影响长度的概念, 降低了测量时的时间、 空间开销, 从而使得加。
26、速因子在使用 上更加具有实际意义。 0045 3) 测量时根据子序列加速效应进行剪枝 0046 通过检测当前任务序列的子序列加速因子, 可以有效预判出当前序列的加速效应 情况, 如果预判加速效应很差, 就可以不进行测试, 从而减少测试量, 使测试效率大幅提高。 0047 4) 加速因子的测量方法采取装载前单独测量。 0048 装载前单独测量的方法虽然测试量较大, 但相对于其它测试方法更具有普遍适用 性。 例如基于源码的静态分析方法, 仅可以近似的估算出不同任务集中的访存情况, 一些访 存情况只有在动态执行时才可以确定, 无法静态预测 ; 相比运行时动态策略, 加载前单独测 量的方法在系统运行时。
27、就已经知道完整的加速因子表, 从而不需要反馈与初始测试分析时 间便可以进行有效正确的任务划分, 在运行时效率更高。 附图说明 0049 图 1 是本发明的基于加速效应的复杂加速因子的测量方法的功能流程图 ; 0050 图 2 是本发明测量复杂加速因子的运行流程图 ; 具体实施方式 0051 在下述具体实施示例中, 结合附图对本发明进行进一步的详细说明。 0052 如图1所示, 本发明设计的复杂加速因子测量方法在功能结构上分为4个模块 : 测 量系统初始化模块、 任务单独执行时间测量模块、 复杂加速因子测量模块、 输入输出模块。 0053 本发明提出的实时任务集中的复杂加速因子测量方法, 包含如。
28、下步骤, 如图所示 0054 步骤 1 : 测量系统初始化。 0055 输入给定任务集 S=1, 2n ; 此步骤从文件读取任务集 S 中的任务列 表。 说 明 书 CN 103049335 A 9 7/9 页 10 0056 根据任务集特性, 此处可以添加影响距离参数 d, 此处如果不对影响距离 d 进行设 定, 则会暂时将其设置为默认值, 等待步骤 2 测量任务单独执行时间后, 通过对任务执行时 间的分析, 重新设定影响距离参数。 0057 根据输入任务集的个数, 初始化单独执行时间数组 Cn ; 0058 依次生成从 2 个到影响长度 d 个任务的复杂加速因子矩阵, 即依次生成 的 fl。
29、oat 类型二维数组 , 该数组用于储存步骤 3 中测量的复杂加速 因子, 每个二维数组储存一种长度的复杂加速因子。 0059 步骤 2 : 测量各个任务的独立执行时间。 0060 依次测量任务集 S 中每个任务 i在无中断、 缓存为空情况下的独立运行时间 Ci, 测量时, 每个任务需要在清空缓存的情况下执行 m 次, 将每次执行所需时间缓存, 等 m 次执 行之后, 即可计算出每个任务单独执行时所需的平均时间。 0061 测量方法 : 0062 0063 0064 执行步骤 2.3 生成近似的影响长度 d。 0065 步骤 2.1 : 初始化任务运行环境, 清空处理器 L1、 L2、 L3 。
30、级 cache, 以保证任务执行 时缓存中不会存在数据, 此时执行任务时不需要写回 Cache 中的原有数据, 且当前任务所 需数据需要从主存调入 Cache, 因此可以保证此处测得的任务执行时间为任务单独执行时 间, 不会受到其它任务加速效应的影响。 0066 步骤 2.2 : 将任务 i部署在一个处理器 p 上并执行, 在无中断的情况下记录 i 的执行时间 ck。在伪代码中可以看出内层循环执行了 m 次, 也就是说, 对于每个任务, 都是 测试了m次任务单独运行时间, 将这m次运行时间取平均值, 即可得到比较准确的任务单独 执行时间 Ci。 0067 步骤 2.3 生成近似的影响长度 d,。
31、 本步骤通过之前得到的任务单独执行时间数组, 可以计算出该任务集中每个任务的平均执行时间此处通过某适当算法可以 计算出由任务平均执行时间作为启发条件生成的影响长度 d, 如果之前没有人为指定任务 长度 d, 就将使用本步骤求出的影响长度 d。 0068 步骤 3 : 测量复杂加速因子 0069 本步骤用于测量任务集S中各任务间的复杂加速因子 (2任务数xn) , 测量方 说 明 书 CN 103049335 A 10 8/9 页 11 法为 : 令 i 从 2 到影响长度 d, 依次测量 i 个任务之间的加速因子。本测量步骤的流程图如 图 2 所示, 测量的算法伪代码如下 : 0070 007。
32、1 0072 步骤 3.1 : 选取下一个 i 个任务组成的任务组合 s。即为一个在 n 个任务组成的集 合中选取i个任务组合的函数, 每次选取下一个任务组合, 经过 次选取后, 即实现了选取i 个任务的全组合。例如当前任务集中共有 8 个任务, 当前正在计算 4 个任务间的加速因子。 则每次调用本步骤, 将返回一个由 4 个任务的下标数字组成的集合, 如 0,1,2,3。下面的 步骤中, 就将对于第 0,1,2,3 这四个任务的组合依次测量不同执行顺序下的执行时间。 0073 步骤 3.2 : 生成任务组合 s 的下一个执行顺序 seq。该函数对于给定的任务组合, 生成该任务组合的全排列, 。
33、每次输出下一个排列方式。本步骤在开始时输入一个任务数 x, 则函数的每次调用会返回从 0 到 x-1 的全排列中的一种。再将全排列与任务集合 s 的任务 下标结合, 即可得到当前的任务执行序列。例如当前任务集合 s 为 0,2,3,6, 而生成的执 行顺序seq为0,1,3,2,则经过组合得到的任务执行序列为0,2,6,3。 由于在相同任务 数量下, 对每种任务组合, 本步骤生成的全排列其实是一致的, 均为从0到x-1的全排列, 因 此为提高效率, 本步骤可以只在最外层循环执行一次, 一次性生成所有 x 的全排列, 储存于 一个结构数组中, 每次需要生成序列时直接从数组中取出下一个排列即可, 。
34、从而无需反复 生成序列。 0074 步骤 3.3 : 本子步骤根据步骤 3.2 获得的执行序列 seq, 假设 seq 中任务数为 k, 当 k 4 时, 则检测 seq 中长度为 k-1、 k-2 的子序列, 显然其长度为 k-1、 k-2 的子序列个数分 别为 2 和 3, 此时查询之前获得的复杂加速因子表 (k-1 与 k-2 两个表 ), 如果其子序列的加 说 明 书 CN 103049335 A 11 9/9 页 12 速效应显示为比较显著的减速效果, 即当前待测试的任务集的子集中任务亲和性较差, 则 可以假定当前待测试任务序列的任务亲和性也较差, 可以直接跳出下面的步骤 2.1 与。
35、步骤 3.4, 直接对当前序列的加速效应值设定为一个较低的默认值。通过本步骤的判断, 可以通 过剪枝的方式显著减少测试时间, 空间开销, 提高算法执行效率。 0075 步骤3.4 : 上一步调用了步骤2.1, 将缓存清空, 此时可以将任务组合s部署在同一 个处理器 p 上, 按照步骤 3.2 生成的执行顺序 seq 依次执行 s 中的任务, 任务执行期间不允 许中断, 也禁止其它处理器执行其它任务, 否则容易因共享 Cache 而导致外部因素影响加 速因子的测量。记录任务组合 s 以 seq 顺序执行的总时间 t 。t即为该任务组合以 seq 顺序执行, 经过任务相互间加速效应后得到的任务执行。
36、总时间。由于之前已经计算过任务 组合 s 单独执行时所需的总时间 t= ci(i s), 因此令 Ajk=t/t, 即可计算出该 组合该执行顺序下的加速因子。 0076 步骤 4 : 测量结果输出 0077 本步骤用于将上述测量结果储存于文件中输出, 用于持久化数据, 以便后续使用 该加速因子做任务调度时使用。 输出数据时, 将不同长度的加速因子表依次输出, 之后计算 出每种任务组合下的最优执行顺序, 将该任务组合作为键、 该最优顺序作为键值储存为键 值对, 从而方便任务调度时查找。 说 明 书 CN 103049335 A 12 1/1 页 13 图 1 图 2 说 明 书 附 图 CN 103049335 A 13 。