操作系统 处理器亲和性是什么

操作系统 处理器亲和性是什么

处理器亲和性指的是进程对当前正在运行的处理器具有亲和力。当进程在特定的CPU上执行时,缓存内存会受到影响。处理器的缓存会被进程最近访问的数据填充,因此连续的内存访问通常在缓存内存中得到满足。假设进程被移到另一个CPU上。在这种情况下,第一个处理器的缓存内存的内容必须被作废,并且第二个处理器的缓存必须重新填充。大多数对称多处理(SMP)系统试图避免进程迁移,因为作废和填充缓存代价高昂。

处理器亲和性也称为“缓存亲和性”。它可以将进程或线程绑定到CPU或一组CPU,并确保进程或线程只在指定的CPU上执行,而不在任何其他CPU上执行。它是对称多处理操作系统本机中央队列调度算法的修改。队列中的每个项都有一个指定其相关处理器的标签。在资源分配方面,每个任务都会先分配给其关联处理器,然后再分配给其他处理器。

处理器亲和性利用了进程在某个处理器上运行后,仍然可以在该处理器的状态中保留的残留内容。将一个CPU密集型进程与中断较少的进程调度到同一个处理器上可能会通过减少缓存失效等降级事件来提高性能。然而,它可能会减慢其他程序的速度,因为它们必须等待该处理器再次变为可用状态。使用非线程化应用程序(如图形渲染软件)的许多示例都是处理器亲和性的真实实例。

调度算法的实现在遵循处理器亲和性方面存在差异。某些实现将允许任务在某些条件下切换到另一个处理器以提高效率。例如,如果两个处理器密集型进程(A和B)与一个处理器亲和,而另一个处理器闲置,许多调度器会将作业B转移到第二个处理器以最大化CPU使用率。任务B将对第二个处理器产生亲和性,而任务A将保留对原始处理器的亲和性。

处理器亲和性的用途是什么

处理器亲和性可以有效减少缓存问题,但它不能解决持续的负载平衡问题。例如,一个具有两个双核超线程CPU的系统对调度算法来说是一项困难的任务。

超线程在同一核心上运行的两个虚拟CPU之间创建了完美的亲和性。同一物理处理器上的两个核心之间存在一定的亲和性,但不同物理处理器之间没有亲和性。由于其他资源是共享的,仅凭处理器亲和性可能无法用于分派CPU。假设某个进程已在给定核心上的虚拟超线程CPU上执行,并且虚拟CPU当前正忙,且该CPU不是其配对的CPU。在这种情况下,缓存亲和性建议将该进程分派到空闲的伙伴处理器。然而,这两个虚拟处理器几乎共享所有的计算、内存资源和缓存内存。如果只有一个处理器可用,通常更有效地将该进程路由到一个单独的核心或处理器。尽管这可能会导致进程重新填充缓存的性能损失,但由于不必竞争CPU资源,它可以提高整体性能。

处理器亲和性的类型

主要有两种类型的处理器亲和性,如下所示:

  1. Soft Affinity
  2. Hard Affinity

Soft Affinity

软亲和力是指操作系统保持进程在同一处理器上运行的策略,但不保证一定会这样做。

Hard Affinity

它允许进程定义可能执行的处理器子集。像Linux这样的操作系统实现了软亲和力,并提供了诸如sched setaffinity()这样支持硬亲和力的系统调用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程