cpu亲和性相关函数和宏讲解:

写在前面:

  1. 我在查找关于linux cpu宏函数没看到有对宏函数基础的、详细的讲解,笔者便通过官方文档入手,对次进行的翻译和理解希望能帮到对这方面宏有疑惑的读者
  2. explain: /elem/ 表示为elem变量,这样子便于区分

P.S:#include <sched.h>

  1. 动态范围cpu设置
    /**
    * @description: 因为某些应用程序需要动态大小的cpu集合;如今GLIBC提供了一套宏支持这一点
    * 以下函数用来分发和释放cpu集合
    */
    cpu_set_t *CPU_ALLOC(int num_cpus);
    分配足够大的 CPU 集以容纳该(动态)范围内的 CPU
    该动态集合范围为: 0 到 num_cpus-1

    size_t CPU_ALLOC_SIZE(int num_cpus);
    返回cpu集合的大小,但前提范围是合法的【0 to num_cpus-1】,
    这个宏提供了能够设置CPU _*_ s()宏中的参数etsize的值

    void CPU_FREE(cpu_set_t *set);
    释放cpu集 CPU_ALLOC().
  2. 基础宏设置
     1 /**
    2 * @description: 这些宏被用来提供对CPU集合 set 的设置
    3 */
    4 void CPU_ZERO(cpu_set_t *set);
    5 清除设置,让/set/集合不包含cpu
    6 ​
    7 void CPU_SET(int cpu, cpu_set_t *set);
    8 添加/cpu/到/set/集合
    9 ​
    10 void CPU_CLR(int cpu, cpu_set_t *set);
    11 从集合/set/中 移除指定/cpu/
    12 ​
    13 int CPU_ISSET(int cpu, cpu_set_t *set);
    14 测试以查看CPU /cpu/是否是集合/set/的成员
    15 ​
    16 int CPU_COUNT(cpu_set_t *set);
    17 返回集合/set/中有多少个cpu【应该是cpu的数量?】
    18 /**系统中第一个cpu对应的/cpu/值为0,第二个cpu的索引/cpu/值为1,以此类推
    19 *不应该对 特定的CPU值的可用 或者 CPU连续的集合是连续 进行假设,因为CPU可以动态脱机或以其他方式不存在
    20 /**
    21 * @description: 这些宏被用来提供对CPU集合 set 的逻辑操作
    22 */
    23 void CPU_AND(cpu_set_t *destset,
    24 cpu_set_t *srcset1, cpu_set_t *srcset2);
    25 将/srcset1/和/srcset2/的 交集 存储在/destset/【可能是源集之一(当srcset1 == srcset2)】
    26 ​
    27 void CPU_OR(cpu_set_t *destset,
    28 cpu_set_t *srcset1, cpu_set_t *srcset2);
    29 将/srcset1/和/srcset2/的 并集 存储在/destset/【可能是源集之一(当
    30 ​
    31 void CPU_XOR(cpu_set_t *destset,
    32 cpu_set_t *srcset1, cpu_set_t *srcset2);
    33 将/srcset1/和/srcset2/的 异或集【XOR】 存储在/destset/
    34 XOR意思是,/srcset1/和/srcset2/中有其中一个(集合)存在的信息,另一个(集合)不存在的信息,所有符合这些的信息将被存放于接收集合/destset/
    35 ​
    36 int CPU_EQUAL(cpu_set_t *set1, cpu_set_t *set2);
    37 测试两个集合/set1/和/set2/中是否有相同的CPU
    38 // return 1 it mean equal, 0 for unequal
  3. 带_s 的宏多用于对指定函数的扩展,文档里面没有仔细说明,但基础思路应该并无二致,有需要的可在此基础阅读查阅

    source:源码

cpu亲和性相关函数和宏 基础讲解[cpu_set_t]的更多相关文章

  1. 【转】 管理CPU 亲和性

    简单地说,CPU 亲和性(affinity) 就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性.Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affi ...

  2. Linux中CPU亲和性(affinity)

    0.准备知识 超线程技术(Hyper-Threading):就是利用特殊的硬件指令,把两个逻辑内核(CPU core)模拟成两个物理芯片, 让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和 ...

  3. 关于CPU亲和性的测试

    今天看到运维的同事在配置nginx的CPU亲和性时候,运维同事说他在所有的机器上都是按照8核的方式来配置worker进程的CPU亲和性的. 但我觉得就是有点不太对劲,就查了一下nginx的处理work ...

  4. linux cpu亲和性设置

    1.设置进程的cpu亲和性程序如下, #Using:g++ setCpuAffinity.c -o setCpuAffinity #include<sys/types.h> #includ ...

  5. cpu亲和性绑定

    将进程与cpu绑定,最直观的好处就是减少cpu之间的cache同步和切换,提高了cpu cache的命中率,提高代码的效率.从cpu架构上,NUMA拥有独立的本地内存,节点之间可以通过互换模块做连接和 ...

  6. Verilog语法基础讲解之参数化设计

    Verilog语法基础讲解之参数化设计   在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...

  7. NGINX源代码剖析 之 CPU绑定(CPU亲和性)

    作者:邹祁峰 邮箱:Qifeng.zou.job@gmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自&quo ...

  8. 原生AJAX基础讲解及兼容处理

    原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...

  9. JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承

    说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...

  10. Android学习笔记-Adapter基础讲解

    本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用这个Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式 ...

随机推荐

  1. gRPC入门学习之旅(九)

    gRPC入门学习之旅目录 gRPC入门学习之旅(一) gRPC入门学习之旅(二) gRPC入门学习之旅(三) gRPC入门学习之旅(四) gRPC入门学习之旅(七)   3.10.客户端编译生成GRP ...

  2. proteus 器件名称被软件篡改bug的解决方案

    proteus v7.8 器件名称被软件篡改bug 的解决方案 BUG描述 在做单片机实验时,发现从某一个时间保存的设计图文件开始,在添加新的电子元件时会出现部分旧元件的名称被捆绑替换为新元件的名称, ...

  3. js数组操作——对象数组根据某个相同的字段分组

    先说点废话 最近在实际业务中,需要编写一个方法根据数组中每一个对象的一个相同字段,来将该字段值相等的对象重新编入一个数组,返回一个嵌套的数组对象,特地来做个总结. 当然需要注意的是,在开发过程这种数组 ...

  4. 如何防止 Elasticsearch 服务 OOM ?

    ES 和传统关系型数据库有很多区别, 比如传统数据中普遍都有一个叫"最大连接数"的设置.目的是使数据库系统工作在可控的负载下,避免出现负载过高,资源耗尽,谁也无法登录的局面. 那 ...

  5. 前端实现预览PDF

    下载包 npm install react-pdf 我使用的是react-pdf@5.7.2版本 以下例子使用的是react创建的项目 直接上代码=>cv可用,保证高效 1.新增依赖 yarn ...

  6. 订单号规则,不能重复。redis去重 redis集合set应用

    订单号规则,不能重复.redis去重 redis集合set应用 redis锁定商品解决并发售卖问题 RedisUtil工具类https://www.cnblogs.com/oktokeep/p/179 ...

  7. xxlJob端口号及故障转移设置,解决负载均衡调度任务执行

    xxlJob端口号及故障转移设置,解决负载均衡调度任务执行 my.xxljob.executorPort = 1162 my.xxljob.executorAppName = myService-jo ...

  8. mysql连接超时的属性设置

    mysql连接超时的属性设置 2022-10-26 11:09:54.128 [http-nio-6788-exec-5] ERROR o.s.t.i.TransactionAspectSupport ...

  9. Thread的join方法demo

    Thread的join方法demo /** * 关于join官方的解释是 Waits for this thread to die. 也就是等待一个线程结束. */ public class Thre ...

  10. 《史记 XuYu列传》

    前言 甲辰年二月十九,余记挂友人须臾.大醉,作此篇以悼念故友.忆往昔同窗之情,言语无不有经天纬地之能,举手投足间便可斩敌方上将.能文能武,乃当世之奇才,其言语中有大智慧.(文体并不重要) 吃饭时 Xu ...