Linux CPU亲缘性

创作人QQ:851301776,邮箱:[email protected],欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

一、Linux亲缘性介绍

        所谓CPU亲缘性可以分为两大类:软亲缘性和硬亲缘性。
        Linux 内核进程调度器天生就具有被称为 CPU 软亲缘性(soft affinity) 的特性,这意味着进程通常不会在处理器之间频繁迁移。这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。但不代表不会进行小范围的迁移。
        CPU 硬亲缘性是指通过Linux提供的相关CPU亲缘性设置接口,显示的指定某个进程固定的某个处理器上运行。本文所提到的CPU亲缘性主要是指硬亲缘性。

1.配置CPU亲缘性的好处

        将进程/线程与cpu绑定,最直观的好处就是提高了cpu cache的命中率,从而减少内存访问损耗,提高程序的速度。

2.Linux系统提供的API

#define _GNU_SOURCE             /* See feature_test_macros(7) */
#include <sched.h>

//设定pid绑定的cpu
int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *mask);

//查看pid绑定的cpu
int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);

猜你喜欢

转载自blog.csdn.net/weixin_43155199/article/details/125441521