2005年11月16日星期三
管理处理器的亲和性(affinity)
管理处理器的亲和性(affinity)为什么(3 个原因)以及如何使用硬(相对于软)CPU 亲和性(affinity) |
级别: 中级 Eli Dow , 软件工程师, IBM Linux Test and Integration Center 2005 年 11 月 14 日 了解 Linux® 2.6 调度器如何处理 CPU 亲和性(affinity)可以帮助您更好地设计用户空间的应用程序。软亲和性(affinity) 意味着进程并不会在处理器之间频繁迁移,而 硬亲和性(affinity) 则意味着进程需要在您指定的处理器上运行。本文介绍了当前的亲和性(affinity)机制,解释为什么和如何使用亲和性(affinity),并给出了几个样例代码来显示如何使用这种功能。 简单地说,CPU 亲和性(affinity) 就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affinity) 的特性,这意味着进程通常不会在处理器之间频繁迁移。这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。 2.6 版本的 Linux 内核还包含了一种机制,它让开发人员可以编程实现 硬 CPU 亲和性(affinity)。这意味着应用程序可以显式地指定进程在哪个(或哪些)处理器上运行。 在 Linux 内核中,所有的进程都有一个相关的数据结构,称为 如果为给定的进程设置了给定的位,那么这个进程就可以在相关的 CPU 上运行。因此,如果一个进程可以在任何 CPU 上运行,并且能够根据需要在处理器之间进行迁移,那么位掩码就全是 1。实际上,这就是 Linux 中进程的缺省状态。 Linux 内核 API 提供了一些方法,让用户可以修改位掩码或查看当前的位掩码:
注意, 通常 Linux 内核都可以很好地对进程进行调度,在应该运行的地方运行进程(这就是说,在可用的处理器上运行并获得很好的整体性能)。内核包含了一些用来检测 CPU 之间任务负载迁移的算法,可以启用进程迁移来降低繁忙的处理器的压力。 一般情况下,在应用程序中只需使用缺省的调度器行为。然而,您可能会希望修改这些缺省行为以实现性能的优化。让我们来看一下使用硬亲和性(affinity) 的 3 个原因。 基于大量计算的情形通常出现在科学和理论计算中,但是通用领域的计算也可能出现这种情况。一个常见的标志是您发现自己的应用程序要在多处理器的机器上花费大量的计算时间。 测试复杂软件是我们对内核的亲和性(affinity)技术感兴趣的另外一个原因。考虑一个需要进行线性可伸缩性测试的应用程序。有些产品声明可以在 使用更多硬件 时执行得更好。 我们不用购买多台机器(为每种处理器配置都购买一台机器),而是可以:
如果应用程序随着 CPU 的增加可以线性地伸缩,那么每秒事务数和 CPU 个数之间应该会是线性的关系(例如斜线图 —— 请参阅下一节的内容)。这样建模可以确定应用程序是否可以有效地使用底层硬件。
Amdahl 法则说明这种加速比在现实中可能并不会发生,但是可以非常接近于该值。对于通常情况来说,我们可以推论出每个程序都有一些串行的组件。随着问题集不断变大,串行组件最终会在优化解决方案时间方面达到一个上限。 Amdahl 法则在希望保持高 CPU 缓存命中率时尤其重要。如果一个给定的进程迁移到其他地方去了,那么它就失去了利用 CPU 缓存的优势。实际上,如果正在使用的 CPU 需要为自己缓存一些特殊的数据,那么所有其他 CPU 都会使这些数据在自己的缓存中失效。 因此,如果有多个线程都需要相同的数据,那么将这些线程绑定到一个特定的 CPU 上是非常有意义的,这样就确保它们可以访问相同的缓存数据(或者至少可以提高缓存的命中率)。否则,这些线程可能会在不同的 CPU 上执行,这样会频繁地使其他缓存项失效。 我 们对 CPU 亲和性(affinity)感兴趣的最后一个原因是实时(对时间敏感的)进程。例如,您可能会希望使用硬亲和性(affinity)来指定一个 8 路主机上的某个处理器,而同时允许其他 7 个处理器处理所有普通的系统调度。这种做法确保长时间运行、对时间敏感的应用程序可以得到运行,同时可以允许其他应用程序独占其余的计算资源。 下面的样例应用程序显示了这是如何工作的。 现 在让我们来设计一个程序,它可以让 Linux 系统非常繁忙。可以使用前面介绍的系统调用和另外一些用来说明系统中有多少处理器的 API 来构建这个应用程序。实际上,我们的目标是编写这样一个程序:它可以让系统中的每个处理器都繁忙几秒钟。可以从后面的“下载”一节中 下载样例程序。 清单 1. 让处理器繁忙
正如您可以看到的一样,这段代码只是通过 fork 调用简单地创建一组线程。每个线程都执行这个方法中后面的代码。现在我们让每个线程都将亲和性(affinity)设置为自己的 CPU。 清单 2. 为每个线程设置 CPU 亲和性(affinity)
如果程序可以执行到这儿,那么我们的线程就已经设置了自己的亲和性(affinity)。调用 亲和性(affinity)掩码是使用在 每个设置的位都对应一个可以合法调度的 CPU,而未设置的位则对应一个不可调度的 CPU。换而言之,进程都被绑定了,只能在那些对应位被设置了的处理器上运行。通常,掩码中的所有位都被置位了。这些线程的亲和性(affinity)都会传递给从它们派生的子进程中。 注意不应该直接修改位掩码。应该使用下面的宏。虽然在我们的例子中并没有全部使用这些宏,但是在本文中还是详细列出了这些宏,您在自己的程序中可能需要这些宏。 清单 3. 间接修改位掩码的宏
对于本文来说,样例代码会继续让每个线程都执行某些计算量较大的操作。 清单 4. 每个线程都执行一个计算敏感的操作
现在您已经了解了在 Linux 2.6 版本的内核中设置 CPU 亲和性(affinity)的基本知识。接下来,我们使用一个
这个方法让程序能够自己确定要让多少个处理器保持繁忙,例如缺省让所有的处理器都处于繁忙状态,并允许用户指定系统中实际处理器范围的一个子集。 当运行前面介绍的 样例程序 时,可以使用很多工具来查看 CPU 是否是繁忙的。如果只是简单地进行测试,可以使用 Linux 命令 这个样例程序虽然非常简单,但是它却展示了使用 Linux 内核中实现的硬亲和性(affinity)的基本知识。(任何使用这段代码的应用程序都无疑会做一些更有意义的事情。)了解了 CPU 亲和性(affinity)内核 API 的基本知识,您就可以从复杂的应用程序中榨取出最后一点儿性能了。 学习
获得产品和技术
讨论
| ||||||||||||||||||||||||||||
2005年11月7日星期一
IBM公布Cell低耗电设计手法概要--技术在线!
【日经BP社报道】
封装于SPE的3种锁存方式概要。在延迟时间和耗电量等指标中依据各指标的优先度,选择了需要采用的锁存方式。
为了在寄存器级别上运用时钟门控设计手法而插入的局部时钟缓冲(LCB)电路结构。
在演讲中利用视频内容所做的演示。介绍了将Cell用作渲染引擎时,为了有效地执行运算处理,如何使用8个SPE进行并行处理的具体事例。
IBM、美国索尼计算机娱乐(Sony Computer Entertainment of America)及美国东芝电子元器件公司(Toshiba America Electronic Components),在2005年11月1日于台湾新竹开幕的“2005年亚洲固态线路研讨会(IEEE Asian Solid-State Circuits Conference,A-SSCC 2005)”上,就新一代微处理器“Cell”在开发过程中采用的低耗电设计手法,做了一次联合发表。在此次研讨会特设的“产业讨论会(Industry Session)上发表的演讲中,主要介绍了降低耗电的思路及测试结果。据A-SSCC筹划委员会(Program Committee)表示,产业讨论会上采纳的演讲更为重视在产业方面具有重大意义的技术发表,而不是学术上的新颖性。从原则上来讲,要求演讲内容要包括通过实测和模拟等手段得到的测试结果,以及现场演示和视频演示,希望以此能使产业界产生更大的兴趣。
IBM发表演讲的技术人员首先介绍说,为了降低Cell的耗电量,推进了对8个信号处理器“SPE”的耗电量、电路面积和性能的优化处理。原因在于SPE部分是一个电路面积占整个Cell芯片的6~7成,且消耗大部分电量的电路块。具体来说,在SPE上大体采用了如下5种设计手法。即(1) “latch selection(锁存选择)”;(2)“clock gating(时钟门控)”;(3)“multi-clock domain design(多时钟域设计)”;(4)“dual threshold voltage(双阀值电压)”;(5)“selective use of dynamic circuits(动态电路的选择性使用)”。
对于第(1)种设计手法,主要选择配置了3种锁存方式。包括“static scannable latch(静态可校验锁存)”、“non-scannable pulse clock latch(非可校验脉冲时钟锁存)”和“scannable dynamic multiplexer latch(可校验动态多路锁存)”。在延迟时间和耗电量等指标中依据各指标的优先度,选择了需要采用的锁存方式。
对于第(2)种设计手法所讲的时钟门控,在寄存器级别上进行了实际应用。从结构上说,关闭各锁存方式的标准状态(不输入时钟信号),只在必要时接收时钟信号。控制时钟信号开关的信号可在1个周期(11FO4)内生成,从而就能进行更精细的控制。从基于时钟门控的耗电量来说,关闭时约为活动时的 20%左右。在SPE中运行应用程序时,利用时钟门控据悉最多可降低约50%的耗电量。
在利用视频内容所做的演示中,针对将Cell用作渲染引擎(三维图形绘图处理)时,利用多内核特点更有效地执行运算处理的手法,介绍了有关情况。“从并行处理的程序封装来说,相关经验比较少。即便对于技术人员来说,不少情况下也很难会有具体的印象。于是,作为相关事例之一,我们提出了渲染的并行处理方式。”(IBM)。(记者:堀切 近史)
2005年11月3日星期四
Package Terminology
Packaging Information
Package Terminology
BGA
Ball Grid Array
CBGA
Ceramic Ball Grid Array
CDIP
Glass-Sealed Ceramic Dual In-Line Package
CDIP SB
Side-Braze Ceramic Dual In-Line Package
CFP
Both Formed and Unformed CFP
CPGA
Ceramic Pin Grid Array
CZIP
Ceramic Zig-Zag Package
Description
Description of package type.
DFP
Dual Flat Package
FC/CSP
Flip Chip / Chip Scale Package
HLQFP
Thermally Enhanced Low Profile QFP
HQFP
Thermally Enhanced Quad Flat Package
HSOP
Thermally Enhanced Small-Outline Package
HTQFP
Thermally Enhanced Thin Quad Flat Pack
HTSSOP
Thermally Enhanced Thin Shrink Small-Outline Package
HVQFP
Thermally Enhanced Very Thin Quad Flat Package
JEDEC
The JEDEC Standard for this package type.
JLCC
J-Leaded Ceramic or Metal Chip Carrier
LCCC
Leadless Ceramic Chip Carrier
Length
The length of the device (in millimeters).
LGA
Land Grid Array
LQFP
Low Profile Quad Flat Pack
Maximum Height
The maximum height above board surface form (in millimeters).
PDIP
Plastic Dual-In-Line Package
PFM
Plastic Flange Mount Package
Pkg
Package designator code used in Texas Instruments part numbers. The link from the Pkg code goes to the package mechanical drawing in PDF format. Each of the PDF files is between 30K and 50K Bytes.
Pins
The number of pins or terminals on the package.
Pitch
The distance between the centers of adjacent pins (in millimeters).
Preference Code
P - Use this package whenever possible
OK - Use if a preferred package is not available
A - Department approval required
X - Do not use
QFP
Quad Flat Package
SIP
Single-In-Line Package
SOJ
J-Leaded Small-Outline Package
SOP
Small-Outline Package (Japan)
SSOP
Shrink Small-Outline Package
TFP
Triple Flat Pack
TO/SOT
Cylindrical Package
TQFP
Thin Quad Flat Package
TSSOP
Thin Shrink Small-Outline Package
TVFLGA
Thin Very-Fine Land Grid Array
TVSOP
Very Thin Small-Outline Package
Thickness
The maximum thickness of the package body (in millimeters).
Type
The abbreviated acronymn for this type of package.
VQFP
Very Thin Quad Flat Package
Width
The width of the device (in millimeters).
*Additional types used in Package Designator Tables - These all are marked "DO NOT USE."
DIMM*
Dual-In-Line Memory Module
HSSOP*
Thermally Enhanced Shrink Small-Outline Package
LPCC*
Leadless Plastic Chip Carrier
MCM*
Multi-Chip Module
MQFP*
Metal Quad Flat Package
OPTO*
Light Sensor Package
PLCC*
Plastic Leaded Chip Carrier
PPGA*
Plastic Pin Grid Array
SDIP*
Shrink Dual-In-Line Package
SIMM*
Single-In-Line Memory Module
SODIMM*
Small Outline Dual-In-Line Memory Module
TSOP*
Thin Small-Outline Package
VSOP*
Very Small Outline Package
XCEPT*
Exceptions - May not be a real Package
Note: In the event of a conflict in dimensions this selection guide and the mechanical drawing, the mechanical drawing shall govern.
