zoukankan      html  css  js  c++  java
  • 【工作笔记】CPU亲和性

          近日看春华兄的代码,发现在每个线程中在处理具体事务前都调用一个set_cpu()的方法。深感不解,直到看了set_cpu的源码和查了一些资料才明白,原来是进行CPU绑定,或者说CPU亲和性。就是进程/线程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,这样做最直观的好处就是提高了cpu cache的命中率,从而减少内存访问损耗,提高程序的速度。同时也能使用绑核考虑就是将重要的业务进程隔离开,对于部分实时进程调度优先级高,可以将其绑定到一个指定核上,既可以保证实时进程的调度,也可以避免其他CPU上进程被该实时进程干扰。

         关于CPU亲和性下面这篇文章写的非常好:管理处理器的亲和性

         set_cpu()源码

         

    int set_cpu()
    {
        cpu_set_t mask;
    
        int NUM_PROCS = sysconf(_SC_NPROCESSORS_CONF);
    
        int i = random() % NUM_PROCS;
            
        CPU_ZERO(&mask);
    
        CPU_SET(i, &mask);
    
        if (-1 == sched_setaffinity(pthread_self(), sizeof(&mask), &mask))
        {
            return -1;
        }
        
        return 0;
    }
  • 相关阅读:
    237. 删除链表中的节点
    牛客网-第一场-J-Fraction Comparision
    1. 两数之和
    CCF-201903-1大中小
    学习Python
    Convert Sorted Array to Binary Search Tree
    3-1
    Merge Sorted Array
    Climbing Stairs
    Add Binary
  • 原文地址:https://www.cnblogs.com/zhiqli/p/4028094.html
Copyright © 2011-2022 走看看