cpu亲和性相关函数和宏 基础讲解[cpu_set_t]
cpu亲和性相关函数和宏讲解:
写在前面:
- 我在查找关于linux cpu宏函数没看到有对宏函数基础的、详细的讲解,笔者便通过官方文档入手,对次进行的翻译和理解希望能帮到对这方面宏有疑惑的读者
- explain: /elem/ 表示为elem变量,这样子便于区分
P.S:#include <sched.h>
动态范围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().基础宏设置
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带_s 的宏多用于对指定函数的扩展,文档里面没有仔细说明,但基础思路应该并无二致,有需要的可在此基础阅读查阅
source:源码
cpu亲和性相关函数和宏 基础讲解[cpu_set_t]的更多相关文章
- 【转】 管理CPU 亲和性
简单地说,CPU 亲和性(affinity) 就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性.Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affi ...
- Linux中CPU亲和性(affinity)
0.准备知识 超线程技术(Hyper-Threading):就是利用特殊的硬件指令,把两个逻辑内核(CPU core)模拟成两个物理芯片, 让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和 ...
- 关于CPU亲和性的测试
今天看到运维的同事在配置nginx的CPU亲和性时候,运维同事说他在所有的机器上都是按照8核的方式来配置worker进程的CPU亲和性的. 但我觉得就是有点不太对劲,就查了一下nginx的处理work ...
- linux cpu亲和性设置
1.设置进程的cpu亲和性程序如下, #Using:g++ setCpuAffinity.c -o setCpuAffinity #include<sys/types.h> #includ ...
- cpu亲和性绑定
将进程与cpu绑定,最直观的好处就是减少cpu之间的cache同步和切换,提高了cpu cache的命中率,提高代码的效率.从cpu架构上,NUMA拥有独立的本地内存,节点之间可以通过互换模块做连接和 ...
- Verilog语法基础讲解之参数化设计
Verilog语法基础讲解之参数化设计 在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...
- NGINX源代码剖析 之 CPU绑定(CPU亲和性)
作者:邹祁峰 邮箱:Qifeng.zou.job@gmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自&quo ...
- 原生AJAX基础讲解及兼容处理
原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...
- JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承
说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...
- Android学习笔记-Adapter基础讲解
本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用这个Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式 ...
随机推荐
- swap文件修复
修复swap文件 vim -r /aaaa.swap
- kettle从入门到精通 第十课 kettle switch/case、过滤记录、数值范围
1.java代码里面有if else .switch-case等流程控制,kettle也有相应控件.下图便用到switch/case.过滤记录.数值范围控件. 2. switch/case步骤 1)步 ...
- C#中路径说明
路径中一个点和两个点的区别 ./ 表示当前目录,如"./jquery-1.3.2.min.js",也可以去掉"./",如"jquery-1.3. ...
- mysql8新版本安装注意事项及解决本地系统账户Strart the server和SQLyog客户端连接报 plugin caching_sha2_password could not be loaded
mysql 安装包一路next安装, 到Apply Configuration,卡住在Start the server,原因是mysql8新版本的登录身份不对,需要进入服务,找到mysql80,然后属 ...
- 接口签名规则及Java代码demo实现
接口签名规则及Java代码demo实现 签名规则 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用UR ...
- Task2 -- 关于Lecture3
Smiling & Weeping ---- 玲珑骰子安红豆, 入骨相思知不知. 1. 学习Git分支管理: Git分支是灵活开发的关键.创建.切换和合并分支是基础操作.使用如下命令: bas ...
- Oracle 数据库 命令行安装
Oracle 数据库 命令行安装 1. 准备工作 关闭 防火墙,关闭 SElinux 2. 安装相关依赖包 yum -y install binutils compat-libcap1 compat- ...
- Mybatis、Mybatis Generator、Mybatis-Plus、Mybatis Plus Generator
1.介绍 Mybatis Mybatis 是操作数据库的框架:提供一种Mapper类,支持用Java代码对数据库进行增删改查. 缺点:需要先在xml中写好SQL语句: Mybatis Generato ...
- python重拾第十天-协程、异步IO
本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾 ...
- 高通Android平台 电池 相关配置
背景 在新基线上移植有关的代码时,在log中发现有关的东西,请教了有关的同事以后,解决了这个问题. [ 12.775863] pmi632_charger: smblib_eval_chg_termi ...