操作系统对多核处理器的支持方法

Download Report

Transcript 操作系统对多核处理器的支持方法

操作系统对多核处理器的支持方法
8.1 多核简介
8.2 操作系统对多核处理器的支持方法
8.3 操作系统基于多核平台的优化
Yanshan University
第八章 多核操作系统
操作系统对多核处理器的支持方法
8.1.1 概述
多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。
多核处理器是单枚芯片(也称为“硅核”),能够直接插入单一的处理器
插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的
逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟
周期内执行更多任务。
多核架构能够使目前的软件更出色地运行,并创建一个促进未来的软件编
写更趋完善的架构。随着向多核处理器的移植,已有软件无需被修改就可支持
多核平台。操作系统专为充分利用多个处理器而设计,且无需修改就可运行。
为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设
计流程与目前对称多处理(SMP)系统的设计流程相同,并且现有的单线程应
用也将继续运行。
多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处
理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性
能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术是处理器
发展的必然。
Yanshan University
8.1 多核简介
操作系统对多核处理器的支持方法
功耗问题限制了单核处理器不断提高性能的发展途径。
作为计算机核心的处理器就是将输入的数字化的数据和信息,进行加工和
处理,然后将结果输出。假定计算机的其他子系统不存在瓶颈的话,那么影响
计算机性能高低的核心部件就是处理器。反映在指令上就是处理器执行指令的
效率。
处理器性能 = 主频 * IPC
从上面的公式可以看出,衡量处理器性能的主要指标是每个时钟周期内可
以执行的指令数(IPC: Instruction Per Clock)和处理器的主频。
提高处理器性能就是两个途径:提高主频和提高每个时钟周期内执行的指
令数(IPC)。处理器微架构的变化可以改变IPC,效率更高的微架构可以提高
IPC从而提高处理器的性能。但是,对于同一代的架构,改良架构来提高IPC的
幅度是非常有限的,所以在单核处理器时代通过提高处理器的主频来提高性能
就成了唯一的手段。
不幸的是,给处理器提高主频不是没有止境的,从下面的推导中可以看出,
处理器的功耗和处理器内部的电流、电压的平方和主频成正比,而主频和电压
成正比。
因为:“处理器功耗正比于电流* 电压 * 电压 * 主频”,“主频正比于
电压”,所以:“处理器功耗正比于主频的三次方 ”。
Yanshan University
8.1.2 发展多核的原因
操作系统对多核处理器的支持方法
Yanshan University
如果通过提高主频来提高处理器的性能,就会使处理器的功耗以指
数(三次方)而非线性(一次方)的速度急剧上升,很快就会触及所谓
的“频率的墙”(frequency wall)。过快的能耗上升,使得业界的多
数厂商寻找另外一个提高处理器性能的因子,提高IPC。
提高IPC可以通过提高指令执行的并行度来实现,而提高并行度有
两种途径:一是提高处理器微架构的并行度;二是采用多核架构。
在采用同样的微架构的情况下,为了达到处理器IPC的目的,我们
可以采用多核的方法,同时有效地控制功耗的急剧上升。
因为:“处理器功耗正比于电流* 电压 * 电压 * 主频”,“IPC正
比于电流”,所以:“处理器功耗正比于 IPC”。
由单核处理器增加到双核处理器,如果主频不变的话,IPC理论上
可以提高一倍,功耗理论上也就最多提高一倍,因为功耗的增加是线性
的。而实际情况是,双核处理器性能达到单核处理器同等性能的时候,
前者的主频可以更低,因此功耗的下降也是指数方(三次方)下降的。
反映到产品中就是双核处理器的起跳主频可以比单核处理器更低,性能
更好。
操作系统对多核处理器的支持方法
Yanshan University
由此可见,将来处理器发展的趋势是:为了达到更高的性能,
在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较
低的主频。这样设计的效果是,更多的并行提高IPC,较低的主频有
效地控制了功耗的上升。
处理器实际性能是处理器在每个时钟周期内所能处理器指令数
的总量,因此增加一个内核,理论上处理器每个时钟周期内可执行的
单元数将增加一倍。原因很简单,因为它可以并行的执行指令,含有
几个内核,单位时间可以执行的指令数量上限就会增加几倍。而在芯
片内部多嵌入几个内核的难度要远远比加大内核的集成度要简单很多。
于是,多核就能够在不提高生产难度的前提下,用多个低频率核心产
生超过高频率单核心的处理效能,特别是服务器产品需要面对大量并
行数据,多核心分配任务更能够提高工作效率。可以看作一种多处理
器协作的微缩形式,并且达到更加的性能价格比,一套系统达到多套
系统的性能。
操作系统对多核处理器的支持方法
1. 晶体管时代即将到来
根据摩尔定律,微处理器的速度以及单片集成度每18个月就会翻一番。经
过发展,通用微处理器的主频已经突破了4GHz,数据宽度也达到64位。在制
造工艺方面也同样以惊人的速度在发展,0.13um工艺的微处理器已经批量生产,
90nm工艺以下的下一代微处理器也已问世。照此下去,到2010年左右,芯片
上集成的晶体管数目预计超过10亿个。因此,体系结构的研究又遇到新的问题:
如何有效地利用数目众多的晶体管?国际上针对这个问题的研究方兴未艾。多
核通过在一个芯片上集成多个简单的处理器核充分利用这些晶体管资源,发挥
其最大的能效。
2.门延迟逐渐缩短,而全局连线延迟却不断加长
随着VLSI工艺技术的发展,晶体管特征尺寸不断缩小,使得晶体管门延迟
不断减少,但互连线延迟却不断变大。当芯片的制造工艺达到0.18微米甚至更
小时,线延迟已经超过门延迟,成为限制电路性能提高的主要因素。在这种情
况下,由于CMP(单芯片多处理器)的分布式结构中全局信号较少,与集中式
结构的超标量处理器结构相比,在克服线延迟影响方面更具优势。
Yanshan University
8.1.3 多核的出现是技术发展的必然性
操作系统对多核处理器的支持方法
按照Pollack规则,处理器性能的提升与其复杂性的平方根成正比。 如果一个处理器的
硬件逻辑提高一倍,至多能提高性能40%,而如果采用两个简单的处理器构成一个相同硬
件规模的双核处理器,则可以获得70%~80%的性能提升。同时在面积上也同比缩小。
4.能耗不断增长
随着工艺技术的发展和芯片复杂性的增加,芯片的发热现象日益突出。多核处理器里
单个核的速度较慢,处理器消耗较少的能量,产生较少的热量。同时,原来单核处理器里
增加的晶体管可用于增加多核处理器的核。在满足性能要求的基础上,多核处理器通过关
闭(或降频)一些处理器等低功耗技术,可以有效地降低能耗。
5.设计成本的考虑
随着处理器结构复杂性的不断提高,和人力成本的不断攀升,设计成本随时间呈线性
甚至超线性的增长。多核处理器通过处理器IP等的复用,可以极大降低设计的成本。同时
模块的验证成本也显著下降。
6.体系结构发展的必然
超标量(Superscalar)结构和超长指令字(VLIW)结构在高性能微处理器中被广泛
采用。但是它们的发展都遇到了难以逾越的障碍。Superscalar结构使用多个功能部件同时
执行多条指令,实现指令级的并行(Instruction-Level Parallelism,ILP)。但其控制逻辑
复杂,实现困难,研究表明,Superscalar结构的ILP一般不超过8。VLIW结构使用多个相
同功能部件执行一条超长的指令,但也有两大问题:编译技术支持和二进制兼容问题。
Yanshan University
3.符合Pollack规则
操作系统对多核处理器的支持方法
未来的主流应用需要处理器具备同时执行更多条指令的能力,但是从单一
线程中已经不太可能提取更多的并行性,主要有以下两个方面的原因:一是不
断增加的芯片面积提高了生产成本;二是设计和验证所花费的时间变得更长。
在目前的处理器结构上,更复杂化的设计也只能得到有限的性能提高。
对单一控制线程的依赖限制了多数应用可提取的并行性,而主流商业应用,
一般都具有较高的线程级并行性。为此研究人员提出了两种新型体系结构: 单
芯片多处理器(CMP)与同时多线程处理器(Simultaneous Multithreading,
SMT),这两种体系结构可以充分利用这些应用的指令级并行性和线程级并行
性,从而显著提高了这些应用的性能。
从体系结构的角度看,SMT比CMP对处理器资源利用率要高,在克服线延
迟影响方面更具优势。CMP相对SMT的最大优势还在于其模块化设计的简洁性。
复制简单设计非常容易,指令调度也更加简单。同时SMT中多个线程对共享资
源的争用也会影响其性能,而CMP对共享资源的争用要少得多,因此当应用的
线程级并行性较高时,CMP性能一般要优于SMT。此外在设计上,更短的芯片
连线使CMP比长导线集中式设计的SMT更容易提高芯片的运行频率,从而在一
定程度上起到性能优化的效果 。
Yanshan University
8.1.4 单芯片多处理器与多线程处理器
操作系统对多核处理器的支持方法
为了更清楚地理解多操作系统、多核与虚拟化趋势,需回到多处理器系统和
多核的关系上。多处理器离多核的应用只有一步之遥。不过,多核与多处理器也
有不少区别,其中有一些挑战你必须面对。如多处理器系统中的软件并不能直接
拿到多核系统中运行。
在采用多核技术的时候,操作系统管理内核的基本方式有两种:第一种是对
称多处理(SMP),这是由一个操作系统来控制多个内核。只要有一个内核空
闲可用,操作系统就在线程等待队列中分配下一个线程给这个空闲内核来运行。
第二种是非对称多处理(AMP),每个内核上都运行各自的操作系统。
多核系统并不是直接把多个芯片的多处理器浓缩到单一芯片之中这么简单。
实际上,多核系统和多处理器系统之间存在着许多重要的区别,导致不能把多处
理器系统上的软件直接移植到多核系统上来。
多处理器系统和多核系统的主要区别之一就是,在多处理器系统中,CPU之
间的界线是比较清晰的。在典型的多处理器情况下,多个CPU通过总线连接起
来,即便是共享外部存储器,这些CPU基本上都是独立运行的。在多核系统中,
情况就有所不同。不论采用何种架构,在多核系统中被共享的东西非常多。
运行在多处理器系统中的程序是多线程的程序。这种程序必须是可重入的,
即程序代码能够被重叠地启动并且同时运行在多个上下文中,这些运行上下文构
成多个线程。
Yanshan University
8.1.5 从多处理器到多核
操作系统对多核处理器的支持方法
1)英特尔酷睿2双核处理
英特尔率先揭开了多核计算时代的帷幕。酷睿2双核处理器的价值在于,它
缔造了一个范围涵盖核心硬件生产商、周边硬件制造商、软件开发商、整机厂商
乃至系统集成商等产业参与者的全新产业链。
对于用户来说,英特尔酷睿2 双核处理器堪称有史以来最令人兴奋的个人电脑核
心引擎。根据多个独立调查组织提供的数据显示,该处理器在各种服务器、台式
机和游戏基准测试中遥遥领先于其它处理器产品,器能够满足用户不断升级的多
元需求。
2)英特尔酷睿2四核处理器
从双核到四核,再到集成80计算核心、性能堪比超级计算机的原型处理器,
英特尔对多内核技术的不懈探索总能够挺立于技术和产业的最前沿。
已上市的酷睿2四核处理器为通用服务器和工作站提供了非凡的速度与响应
能力—受益领域还包括追求绝对性能的数字媒体创建、高端游戏以及其它市场。
45纳米四核时代的普及,进入2009年,处理器已经由双核升级到四核时代。
Yanshan University
8.1.6 多核微处理器
操作系统对多核处理器的支持方法
作为多内核技术的先导者,英特尔于 2007 年初煅制出了内含80
内核的可编程处理器,它提供了足以与超级计算机匹敌的强劲性能,
且功耗仅62瓦,较大多数家用电器更低。毫无疑问,凝聚了英特尔深
厚技术积淀、创新前瞻力及精湛制程工艺的80内核处理器预示了计算
/通信技术领域未来的发展趋向—它还证明,在可以预见的未来,摩
尔定律定能继续驱动整个IT产业高速发展。
多核时代到来Intel发布6核至强处理器,2008年09月,英特尔终
于按计划发布了Xeon(至强)7400处理器。该处理器开发代号为
“Dunnington”,是英特尔首颗基于X86架构的六核处理器,主要面
向注重多线程运算的高端市场。英特尔表示,Xeon 7400在虚拟机和
数据库应用方面进行了很多优化。其二级缓存高16MB,每个核心都
支持虚拟化技术,其虚拟化性能跟以往产品相比提高达50%。
Yanshan University
3)未来的多核微处理器
操作系统对多核处理器的支持方法

8.2.1 并行计算机访存模型

8.2.2 调度

8.2.3 中断

8.2.4 存储管理

8.2.5 虚拟化技术
Yanshan University
8.2 操作系统对多核处理器的支持方法
操作系统对多核处理器的支持方法
 物理存储器被所有节点共享;
 所有节点访问任意存储单元的时间相同;
 发生访存竞争时,仲裁策略平等对待每个节点,即每个节
Yanshan University
UMA(均匀存储访问)模型
点机会均等;
 各节点的CPU可带有局部私有高速缓存;
 外围I/O设备也可以共享,且每个节点有平等的访问权利。
处理器
P1
…
P2
Pn
系统互连
( 总线 , 交叉开关 , 多级 网络 )
I/O
…
SM1
SMm
共享存储器
当前对称多处理器共享存储并行计算机SMP均采用这种模型(一台机器上多个CPU)
操作系统对多核处理器的支持方法
 物理存储器被所有节点共享,任意节点可以直接访问任意内存
模块;
 节点访问内存模块的速度不同,访问本地存储模块的速度一般
是访问其它节点内存模块的3倍以上;
 发生访存竞争时,仲裁策略对节点可能是不等价的;
 各节点的CPU可带有局部私有高速缓存 (cache);
 外围I/O设备也可以共享,但对各节点是不等价的。
节点0
节点n
CPU0
CPU1
CPU0
CPU1
cache
cache
cache
cache
hub
Yanshan University
NUMA(非均匀存储访问)模型
mem
……
router
hub
router
互联网络
mem
SGI Origin系列并行计算机,
采用基于cache目录一致性
的非均匀访存模型(CC-
NUMA),设计了专门的硬件,
保证在任意时刻各节点
cache中数据与全局内存数
据的一致性。
操作系统对多核处理器的支持方法
 各处理器节点中没有存储层次结构,全部高速缓存组成了
全局地址空间;
 利用分布的高速缓存目录D进行远程高速缓存的访问;
 COMA中的高速缓存容量一般都大于2级高速缓存容量
 使用COMA时,数据开始时可以任意分配,因为在运行时
它最终会被迁移到要用到它的地方。
互连网络
D
D
C
C
P
P
D
…
C
P
Yanshan University
COMA(全高速缓存存储访问)模型
操作系统对多核处理器的支持方法
 所有存储器都是私有的,仅能由其本地处理器访问;
基于消息传递的并行计算机,每个节点都是由一台处理器、本地
存储器和I/O外设组成的自治计算机。
 绝大多数NORMA都不支持远程存储器的访问;
 在DSM(分布式共享内存)中,NORMA就消失了。
M
M
P
P
...
M
P
P
P
消息传递互连网络
(网络,环网,超立方,
立方环等)
P
P
P
P
M
M
...
P
M
M
...
...
M
M
M
Yanshan University
NORMA(非远程存储访问)模型
操作系统对多核处理器的支持方法
多核操作系统中进程的分配与调度
进程的分配将进程分配到合理的物理核上,因
为不同的核在共享性和历史运行情况下都是不
同的。
有的物理核能够共享二级cache,而有的却是
独立的。
进程间数据共享->分配给有共享二级cache的
核,提升命中率。
Yanshan University

操作系统对多核处理器的支持方法
多核下操作系统调度的研究热点
程序的并行研究;
多进程的时间相关性研究;
任务的分配与调度;
缓存的错误共享;
一致性访问研究;
进程间通信;
多处理器核内部资源竞争;
Yanshan University

操作系统对多核处理器的支持方法
任务的分配
单核:只有一个核的资源可以使用->不存在
核的任务分配问题;
多核:多个进程如何在各个核中分配?
 均匀分配?
 一起分配到一个核?
 按照一定的算法分配?
受底层系统结构影响
SMP架构->只共享内存
CMP架构->也会共享二级缓存
Yanshan University

操作系统对多核处理器的支持方法
任务的调度
 各个核一致的调度算法
 各个核独立的调度算法
 进程是否一直运行在同一个核?还是迁移?
 怎样调度实时任务和普通任务(优先级不同)?
 系统是否要进行负载均衡?

调度策略(单核)->多核呢?
 先来先服务FCFS
 最短作业优先SJF
 优先级调度
 轮转法RR
 多级队列调度
Yanshan University

操作系统对多核处理器的支持方法
Linux 2.6内核的调度算法
 时间复杂度O(1)
 (1)系统为每个处理器都维护一个单独的就绪队列
 活动的就绪队列:包含当前时间片还有剩余的就绪任务
 扩展的就绪队列:包含那些时间片已经用完的,重新分配时间
片的就绪任务。
 (2)任务的调度是基于优先级调度的
 每个处理器上的任务共有140个优先级,每个就绪任务的优先级
通过散列函数直接映射到处理器的位图数据结构上,通过位图
的find-first-bit可以找到优先级最高的执行
 (3)活动就绪队列和扩展就绪队列通过指针转换
 (4)负载均衡
 一个core的任务结束,转而处理其他最忙core上的任务
 若所有core都有任务,则每200ms检查是否均衡
Yanshan University

操作系统对多核处理器的支持方法
多核调度算法
对任务的分配进行优化。使同一应用程序的任务
尽量在一个核上执行,以便达到有共享数据的任
务尽量在一个核上面运行,而共享数据量少或者
没有的任务在不同核上进行。
对任务的共享数据优化。由于CMP体系结构共
享二级缓存,可以考虑改变任务在内存中的数据
分布,使任务在执行时尽量增加二级缓存的命中
率。
对任务的负载均衡优化。当任务在调度时,出现
了负载不均衡,考虑将较忙处理器中与其他任务
最不相关的任务迁移,以达到数据的冲突量小。
Yanshan University

操作系统对多核处理器的支持方法
Yanshan University
高级编程中断控制器APIC是基于中断控制器分
散在两个基础功能单元—本地单元以及I/O单元的分
布式体系结构。在多核系统中,多个本地和I/O
APIC单元能够作为一个整体通过ICC总线互相操作。
APIC发挥的功能有:接受来自处理器中断引脚
中的内部或外部I/O APIC的中断,然后将这些中断
发送给处理器核处理。
在多核处理器系统中,接收发送核内中断消息。
多核体系处理器中,必须将中断处理分发给一
组核处理。当系统中有多个核在并行执行时,必须
有一个能够接收到的中断分发给能够提供服务的核
的机制。
操作系统对多核处理器的支持方法
APIC通过中断命令寄存器(ICR)来接收和发送
IPI消息,ICR提供如下功能:
 发送中断到其他处理器核
 允许处理器核转发收到的其不服务的中断到其他处理
器核来服务
 给处理器核自身发送中断(一次自中断)
 传递特殊IPI(核内中断)到其他处理器核,比如启动
IPI消息
 IPI消息可以用来启动处理器核或者分配工作任务到不同的处
理器核
 IPI消息能够用来在系统时或者系统执行的广泛功能单元中分
发中断到不同的处理器核。
Yanshan University

操作系统对多核处理器的支持方法
Yanshan University
多核高级可编程中断控制器 APIC
操作系统对多核处理器的支持方法
Yanshan University
构建并行机系统的不同存储结构
PVP (Cray
T90)
中央存储器
UMA
(Intel SHV,SunFire,DEC 8400,
PowerChallenge,IBMR60,etc.)
SMP SGI
多处理机
( 单地址 空间
共享 存储器 )
COMA
(KSR-1,DDM)
CC-NUMA
NUMA
分布存储器
NCC-NUMA
MIMD
(Stanford Dash,
SGI Origin 2000,Sequent NUMA-Q,
HP/Convex Exemplar)
(Cray T3E)
DSM
Cluster
NORMA
(IBM SP2,DEC TruCluster
Tandem Hymalaya,HP,
Microsoft Wolfpack,etc)
( 松散耦合)
多计算机
(多地址空间非共享存储器)
MPP (Intel
TFLOPS)
( 紧耦合)
(TreadMarks,
Wind Tunnel,
IVY,Shrimp,
etc.)
操作系统对多核处理器的支持方法
多核下存储管理相对变化较少,主要改进
为了充分使用多核的运算能力,很多库函数都
要做成非阻塞调用方式的,但这样会导致数据
冲突或不同步的问题,所以必须保证数据同步
机制。
事务内存管理机制:能够协调程序,在并行运
行的同时,保证数据的同步。
为了提供内存分配的效率,可以使用多线程内
存分配,这样可以提高效率,降低cache冲突,
特别有利于空间核时间关联性强的内存操作。
Yanshan University

操作系统对多核处理器的支持方法
虚拟化技术:是指对计算机资源进行的抽
象,是在系统、应用或用户与资源进行交
互时,对计算机资源的物理特性进行隐藏
的一种技术。
分类:
(1)平台虚拟化:由指定硬件平台上的宿主软件
来实行,为其他软件提供一个模拟的计算机环境。
其他软件通常都是完整的操作系统,就像安装在
独立的硬件平台上一样运行。
(2)资源虚拟化:它是被扩展到具体系统资源的
虚拟化,它涉及资源的合并、划分以及简化的模
拟等作用。

Yanshan University

操作系统对多核处理器的支持方法
模拟:虚拟机模拟完成的硬件,允许针对
完全不同的CPU的未经修改的操作系统直
接运行。
 模拟的实现需要广泛的技术,从状态机到
全虚拟平台的动态编译。
 这种方法长期以来被用来在新处理器可用
之前对软件进行开发。
 Virtual PC、QEMU等

Yanshan University
平台虚拟化—模拟
操作系统对多核处理器的支持方法

原始虚拟和全虚拟
 虚拟机模拟足够的硬件来保证未修改的为相同CPU设计的操作系
统独立运行。
 VMware、Win4BSD等

部分虚拟
 虚拟机模拟多个但并非所有底层硬件环境,特别是地址空间
 这样的环境支持资源共享和进程独立,但是不允许独立的客体操
作系统实例
 Windows、Linux等



类虚拟
操作系统级虚拟
应用程序虚拟
Yanshan University
平台虚拟化
操作系统对多核处理器的支持方法


针对平台虚拟化到具体系统资源的虚拟化的扩展;
涉及资源的合并、划分以及简化的模拟
合并单个资源形成更大的资源或者资源地
 RAID:多个磁盘->大的逻辑磁盘
 物理储存资源->存储池



计算机集群,网格计算和虚拟服务器使用上述技
术将多个具体计算机合并成大型的计算机。
分区是对单一资源划分成同种形式更易于管理的
资源(磁盘空间、网络带宽等)
封装通过创建简化的接口来隐藏资源的复杂性
Yanshan University
资源虚拟化
操作系统对多核处理器的支持方法
8.3 1.多核多线程技术的发展
1)内存与处理器速度的差距导致cpu浪费时间等待访存获取数据,两种
基本的方法可以从物理上进行一定的改进:增大缓存;提高时钟频率。
但是,缓存成本较大,在物理上也有一定限制;时频的提高,可以在相
同时间完成更多的操作,但随之也带来问题:程序间的相关性和延迟的
影响随之增加。
2)于是,人们想到,不只有突破物理上的限制来提高性能,在空间和
时间上并行,增加吞吐量也是一种途径。因为虽然用户最关心的是交互
性程序的响应时间,管理者关心单位时间的任务完成量;但最终都是在
最短时间内完成最多任务。
既然原来的瓶颈在于访问时处理器需阻塞等待而浪费硬件资源,那
么可以让cpu在这个延迟时间内干其它的事,譬如从其它的指令流读取
指令运行已经准备就绪的进程或线程。
Yanshan University
8.3 操作系统基于多核平台的优化
操作系统对多核处理器的支持方法
1) 传统系统运行的程序只需很少的改变便可以运行在cmt系统
中,但不可避免的某些线程会影响到另外线程的执行,这该如
何处理?
2) 负载平衡与热缓存有时矛盾,如何处理?比如为了减少资
源的争用,将争用少的放到一个核,导致这个核负载大。
3) 进程与其包含的线程的调度分别在什么时候,两者有何关
系?
4) 多核的调度与核内多线程的调度分别配合?先将任务调到
核,再在核内调度个线程还是怎样?
5) 如果任务很少,是只让部分cpu工作,避免调度分发带来的
复杂冗余的工作,还是依旧负载平衡?
Yanshan University
8.3.2 多核多线程与传统程序运行的不同带来的问题
操作系统对多核处理器的支持方法
1)solaris中线程的体系结构
a. 分为用户级和内核级;用户级也可以在核内或核外运行。但是核
外需要上下文切换开销很大;核内更有利于并发使用cpu,同时成为多个
用户线程的调度。
b. 每个进程需要一个线程作为其指令执行体,线程分配到各个cpu运
行。而每个用户级线程必须绑定到一个LWP,LWP再将它关联到一个内
核线程。LWP并不一定是进程创建时就建立,而是在虚要使用时再被请
求创建。这个用户级线程可以作为调度的执行实体,有独立的优先级调
度,这与内核的优先级调度是分离的,并且对内核不可见。
LWP存在于内核里,记录着线程的状态,但内核级线程并不一定有
LWP,如服务线程。
c. 用户级线程有线程库中的每个进程的调度线程调度管理。每个线
程存在于他所属的进程链表,也存在于内核级线程链表。内核级线程决
定线程运行在哪个cpu上,自己则被调度什么时候执行。
Yanshan University
8.3 3. solaris对多核的支持
操作系统对多核处理器的支持方法
内核调度和执行进程的规则,总共有6个classes,可以在
同一核中调度,可以自适应。每个classes有一个列表,用来寻
找线程。
3)负载平衡(load balancing)
为了让各个核之间少无用的调度,每个核有自己的调度队
列,其线程可以重赋值时间片大小,用完后放回队列。内核可
以抢占其它时间片,可以同时多个调度类,但是每个决定要调
度的地方必须有一个间接函数调用调度类相关代码。有一种内
核抽象,代表逻辑cpi,共享物理资源如cache、sockets接口。
4)热缓存机制(充分利用缓存里已经存在的数据)
可公用线程的线程放在同一逻辑cpu;可公用缓存的线程
也放在同一逻辑cpu。
Yanshan University
2)solaris采用调度等级(classes)定义
操作系统对多核处理器的支持方法
对SMP的支持,负载平衡:创建任务时,被放到一个给定的
逻辑cpu运行对列,但并不知道这个任务运行的时间长短,因此
开始的分配可能不理想,于是任务可以重新分发。于是将负载较
重的cpu中的可执行进程或线程重新调度到负载较轻的cpu,即使
现负载平衡。
事实上,每隔200ms,处理器就会检查cpu的负载是否均衡,
不是,则重分配一次。但是,显然,这样就带来了另外一个负面
影响,即新任务对cpu冷缓存,需重新加载数据。
热缓存,每个cpu一个运行队列,各个任务与cpu密切相关,
可以更好的利用热缓存。即任务在cpu上运行所需相关的数据都
被放到这个cpu的缓存,可直接读取;而缓存是本地的存储器
(片上),进而提高了访存速度,减少延迟。
Yanshan University
8.3 4. Linux2.6及以上的调度