管理处理器的亲和性

管理处理器的亲和性

ID:38646912

大小:53.00 KB

页数:4页

时间:2019-06-17

管理处理器的亲和性_第1页
管理处理器的亲和性_第2页
管理处理器的亲和性_第3页
管理处理器的亲和性_第4页
资源描述:

《管理处理器的亲和性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、软亲和性(affinity)意味着进程并不会在处理器之间频繁迁移,而硬亲和性(affinity)则意味着进程需要在您指定的处理器上运行。本文介绍了当前的亲和性(affinity)机制,解释为什么和如何使用亲和性(affinity),并给出了几个样例代码来显示如何使用这种功能。简单地说,CPU亲和性(affinity)就是进程要在某个给定的CPU上尽量长时间地运行而不被迁移到其他处理器的倾向性。Linux内核进程调度器天生就具有被称为软CPU亲和性(affinity)的特性,这意味着进程通常不会在处

2、理器之间频繁迁移。这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。2.6版本的Linux内核还包含了一种机制,它让开发人员可以编程实现硬CPU亲和性(affinity)。这意味着应用程序可以显式地指定进程在哪个(或哪些)处理器上运行。什么是Linux内核硬亲和性(affinity)?在Linux内核中,所有的进程都有一个相关的数据结构,称为task_struct。这个结构非常重要,原因有很多;其中与亲和性(affinity)相关度最高的是cpus_allowed位掩码。这个位掩码

3、由n位组成,与系统中的n个逻辑处理器一一对应。具有4个物理CPU的系统可以有4位。如果这些CPU都启用了超线程,那么这个系统就有一个8位的位掩码。如果为给定的进程设置了给定的位,那么这个进程就可以在相关的CPU上运行。因此,如果一个进程可以在任何CPU上运行,并且能够根据需要在处理器之间进行迁移,那么位掩码就全是1。实际上,这就是Linux中进程的缺省状态。Linux内核API提供了一些方法,让用户可以修改位掩码或查看当前的位掩码:·sched_set_affinity()(用来修改位掩码)·sc

4、hed_get_affinity()(用来查看当前的位掩码)注意,cpu_affinity会被传递给子线程,因此应该适当地调用sched_set_affinity。为什么应该使用硬亲和性(affinity)?通常Linux内核都可以很好地对进程进行调度,在应该运行的地方运行进程(这就是说,在可用的处理器上运行并获得很好的整体性能)。内核包含了一些用来检测CPU之间任务负载迁移的算法,可以启用进程迁移来降低繁忙的处理器的压力。一般情况下,在应用程序中只需使用缺省的调度器行为。然而,您可能会希望修改这

5、些缺省行为以实现性能的优化。让我们来看一下使用硬亲和性(affinity)的3个原因。原因1.有大量计算要做基于大量计算的情形通常出现在科学和理论计算中,但是通用领域的计算也可能出现这种情况。一个常见的标志是您发现自己的应用程序要在多处理器的机器上花费大量的计算时间。原因2.您在测试复杂的应用程序测试复杂软件是我们对内核的亲和性(affinity)技术感兴趣的另外一个原因。考虑一个需要进行线性可伸缩性测试的应用程序。有些产品声明可以在使用更多硬件时执行得更好。我们不用购买多台机器(为每种处理器配置

6、都购买一台机器),而是可以:·购买一台多处理器的机器·不断增加分配的处理器·测量每秒的事务数·评估结果的可伸缩性如果应用程序随着CPU的增加可以线性地伸缩,那么每秒事务数和CPU个数之间应该会是线性的关系(例如斜线图——请参阅下一节的内容)。这样建模可以确定应用程序是否可以有效地使用底层硬件。Amdahl法则Amdahl法则是有关使用并行处理器来解决问题相对于只使用一个串行处理器来解决问题的加速比的法则。加速比(Speedup)等于串行执行(只使用一个处理器)的时间除以程序并行执行(使用多个处理器

7、)的时间:T(1)S=------T(j)其中T(j)是在使用j个处理器执行程序时所花费的时间。Amdahl法则说明这种加速比在现实中可能并不会发生,但是可以非常接近于该值。对于通常情况来说,我们可以推论出每个程序都有一些串行的组件。随着问题集不断变大,串行组件最终会在优化解决方案时间方面达到一个上限。Amdahl法则在希望保持高CPU缓存命中率时尤其重要。如果一个给定的进程迁移到其他地方去了,那么它就失去了利用CPU缓存的优势。实际上,如果正在使用的CPU需要为自己缓存一些特殊的数据,那么所有其

8、他CPU都会使这些数据在自己的缓存中失效。因此,如果有多个线程都需要相同的数据,那么将这些线程绑定到一个特定的CPU上是非常有意义的,这样就确保它们可以访问相同的缓存数据(或者至少可以提高缓存的命中率)。否则,这些线程可能会在不同的CPU上执行,这样会频繁地使其他缓存项失效。原因3.您正在运行时间敏感的、决定性的进程我们对CPU亲和性(affinity)感兴趣的最后一个原因是实时(对时间敏感的)进程。例如,您可能会希望使用硬亲和性(affinity)来指定一个8路主机上的某个处理器

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。