美文网首页
线程与CPU核绑定

线程与CPU核绑定

作者: FcxD | 来源:发表于2017-11-13 16:52 被阅读0次

线程与CPU核绑定

不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使用sched_setaffinity()来实现。
与进程的情况相似,线程亲和性的设置和获取主要通过下面两个函数来实现:

int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize, const cpu_set_t *cpuset);
int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize, cpu_set_t *cpuset);

cpu_set_t这个结构体类似于select中的fd_set,可以理解为cpu集,也是通过约定好的宏来进行清除、设置以及判断:

void CPU_ZERO (cpu_set_t *set); //初始化,设为空
void CPU_SET (int cpu, cpu_set_t *set); //将某个cpu加入cpu集中
void CPU_CLR (int cpu, cpu_set_t *set); //将某个cpu从cpu集中移出
int CPU_ISSET (int cpu, const cpu_set_t *set); //判断某个cpu是否已在cpu集中设置了

cpu集可以认为是一个掩码,每个设置的位都对应一个可以合法调度的 cpu,而未设置的位则对应一个不可调度的 CPU。换而言之,线程都被绑定了,只能在那些对应位被设置了的处理器上运行。通常,掩码中的所有位都被置位了,也就是可以在所有的cpu中调度。

相关文章

  • 线程与CPU核绑定

    线程与CPU核绑定 不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使...

  • 绑大核(基于google源码分析)

    多线程,多CPU,线程有优先级高的,cpu也有频率高的。绑定大核就是让优先级高的线程、进程优先运行在频率高的几个c...

  • 性能测试中的指标分析

    总核数 = 物理CPU个数 X 每颗物理CPU的核数总逻辑CPU线程数 = 物理CPU个数 X 每颗物理CPU的核...

  • 线程数优化设置,cpu、内存、io问题排查

    cpu数、核数、与线程数关系: 1、线程数究竟设多少合理 2、线程池大小设置,CPU的核心数、线程数的关系和区别,...

  • iOS 多线程

    进程与线程区别 A8处理器是一款双核处理器,A12处理器是6核CPU进程是cpu资源分配的最小单位,线程是cpu调...

  • CPU个数,核心数,线程数

    我们在买电脑的时候,经常会看CPU的参数,对CPU的描述有这几种:双核、双核四进程、四核、四核四线程、四核八线程。...

  • 面经

    线程池线程数如何抉择IO密集型2 * CPU核数CPU密集型CPU核数 + 1混合型若可拆分则拆分,若相差不大则取...

  • 最简线程池的实现(Rust)

    线程池相关概念 线程池,就是一组工作线程,工作线程的数量一般与CPU核数相关(如果是CPU密集型任务,可初始设为N...

  • Java线程

    一 基础概念 CPU核心数与线程数的关系: 核心数与线程数比例为1:1 例如4核,可以同时跑4个线程,In...

  • (转载)CPU核与进程、线程

    转载的原文: 1.列出某一CPU上跑的所有进程/线程_yinhaijin_51CTO博客[https://blog...

网友评论

      本文标题:线程与CPU核绑定

      本文链接:https://www.haomeiwen.com/subject/rvizmxtx.html