徐州做网站建设的公司,wordpress去除幻灯片,照片怎么制作视频短片,美工素材网站有哪些何为CPU的亲和性
CPU的亲和性#xff0c;进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性#xff0c;进程迁移的频率小就意味着产生的负载小。亲和性一词是从affinity翻译来的#xff0c;实际可以称为CPU绑定。
在多核运行的机器上#xff0c;…何为CPU的亲和性
CPU的亲和性进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性进程迁移的频率小就意味着产生的负载小。亲和性一词是从affinity翻译来的实际可以称为CPU绑定。
在多核运行的机器上每个CPU本身自己会有缓存在缓存中存着进程使用的数据而没有绑定CPU的话进程可能会被操作系统调度到其他CPU上如此CPU cache高速缓冲存储器命中率就低了也就是说调到的CPU缓存区没有这类数据要先把内存或硬盘的数据载入缓存。而当缓存区绑定CPU后程序就会一直在指定的CPU执行不会被操作系统调度到其他CPU性能上会有一定的提高。
另外一种使用CPU绑定考虑的是将关键的进程隔离开对于部分实时进程调度优先级提高可以将其绑定到一个指定CPU核上可以保证实时进程的调度也可以避免其他CPU上进程被该实时进程干扰。
我们可以手动地为其分配CPU核而不会过多的占用同一个CPU所以设置CPU亲和性可以使某些程序提高性能。
Linux操作系统的CPU亲和性特征
操作系统部分Linux的调度程序同时提供”软CPU亲和性”和”硬CPU亲和性”
软亲和性进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他CPU。
Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性affinity 的特性因此linux通过这种软的亲和性试图使某进程尽可能在同一个CPU上运行。
硬亲和性将进程或者线程绑定到某一个指定的cpu核运行
虽然Linux尽力通过一种软的亲和性试图使进程尽量在同一个处理器上运行但它也允许用户强制指定进程无论如何都必须在指定的处理器上运行。
硬亲和性使用场景
硬亲和性场景需要保持高CPU缓存命中率时、需要测试复杂的应用程序时。
保持高CPU缓存命中率如果一个给定的进程迁移到其他地方去了那么它就失去了利用 CPU 缓存的优势。实际上如果正在使用的 CPU 需要为自己缓存一些特殊的数据那么所有其他 CPU 都会使这些数据在自己的缓存中失效。因此如果有多个线程都需要相同的数据那么将这些线程绑定到一个特定的 CPU 上是非常有意义的这样就确保它们可以访问相同的缓存数据或者至少可以提高缓存的命中率。否则这些线程可能会在不同的 CPU 上执行这样会频繁地使其他缓存项失效
NUMA的由来
NUMA(Non-Uniform Memory Access)即非一致性内存访问是一种关于多个CPU如何访问内存的架构模型。
NUMA出现之前所有CPU对内存的访问都要通过北桥来完成。此时所有CPU访问内存都是“一致的”。
这样的架构称为UMA(Uniform Memory Access)直译为“统一内存访问”这样的架构对软件层面来说非常容易总线模型保证所有的内存访问是一致的即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加这样的架构难免遇到问题比如对总线的带宽带来挑战、访问同一块内存的冲突问题。
为解决上述问题NUMA架构出现了即不同的内存器件和CPU核心从属不同的Node每个Node都有自己的内存控制器。BIOS将收集到的Node信息通过ACPI报告给操作系统OS就可以根据NUMA节点间的距离远近访问距离自己最近的内存从而降低总线堵塞和提高性能。
NUMA距离
NUMA距离意指NUMA节点之间的逻辑距离距离越近访问延迟越低。
Linux下可使用numactl -H查看NUMA距离 参考
关于CPU亲和性这篇讲得最全面 - 腾讯云开发者社区-腾讯云 https://forum.huawei.com/enterprise/zh/thread/590169249215823872