创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭: 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);
|