线程或进程绑定到特定的cpu
常用的宏定义有:
1) 对cpu集进行初始化, 将其设置为空集
void CPU_ZERO(cpu_set_t *set);
2) 将指定的cpu加入到cpu集中
void CPU_SET(int cpu, cpu_set_t *set);
3) 将指定的cpu从集中删除
void CPU_CLR(int cpu, cpu_set_t *set);
4) 查询cpu是否在集中,在,返回非0值; 不在,返回0
int CPU_ISSET(int cpu, cpu_set_t *set);
常用的函数有:
#include <unistd.h>
1) 查询可使用的核数
int sysconf(_SC_NPROCESSORS_CONF);
返回系统可以使用的核数,但是其值会包含系统中禁用的核的数目,因此该值并不代表当前系统中可用的核数
2) 当前系统可以使用的核数
int sysconf(_SC_NPROCESSORS_ONLN);
真正代表了系统当前可用的核数
与以上两个函数类似的另外两个函数如下:
#include <sys/sysinfo.h>
1)获取可用核数
int get_nprocs_conf(void);
2) 获取当前真正可用的核数
int get_nprocs(void);
进程与cpu的绑定
#include <sched.h>
1) 设置进程与cpu的绑定
int sched_setaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);
2) 查看进程与cpu的绑定
int sched_getaffinity(pid_t pid, size_t cpusize, const cpu_set_t *mask);
线程与cpu的绑定
1) 设置线程与cpu的绑定
int pthread_setaffinity_np(pthread_t thread, size_t cpuszie, const cpu_set_t *mask);
2) 查看线程与 cpu 的绑定
int pthread_getaffinity_np(pthread_t thread, size_t cpusize, const cpu_set_t *mask);
查看当前系统cpu相关信息:
cat /proc/cpuinfo
线程或进程绑定到特定的cpu的更多相关文章
- windows下绑定线程(进程)到指定的CPU核心
一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU切换时损耗的性能.2)Intel的自动降频技术和windows的机制冲突:windows有一个功能是平衡负载 ...
- SetThreadAffinityMask windows下绑定线程(进程)到指定的CPU核心
原帖地址:https://www.cnblogs.com/lvdongjie/p/4476766.html 一个程序指定到单独一个CPU上运行会比不指定CPU运行时快.这中间主要有两个原因:1)CPU ...
- 【笔记】Linux进程间同步和进程绑定至特定cpu
#define _GNU_SOURCE #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> ...
- taskset: 让进程运行在指定的CPU 上
观察发现4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态. 不了解Linux是如何调度的,但目前显然有优化的余地.除了处理正常任务,CPU#0还需要处理每秒网卡中断.因此,若能将 ...
- 进程和线程之间的关系和区别 和 CPU牒
流程具有一定独立功能的程序关于某个数据集合上的一次执行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立执行的基本单位. 进 ...
- Java内存模型 (一)什么是进程?什么是线程?进程和线程之间的区别是什么?
什么是进程?什么是线程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程. 进程可以看成程序执行的一个实例.进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间.一个进程无法访问另一个进程 ...
- LR中线程和进程的区别
LoadRunner中的进程与线程 1.进程与线程的区别: 进程和线程的区别是什么?进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别 ...
- 进击的Python【第九章】:paramiko模块、线程与进程、各种线程锁、queue队列、生产者消费者模型
一.paramiko模块 他是什么东西? paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 先来个实例: import param ...
- py 并发编程(线程、进程、协程)
一.操作系统 操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等.操作系统的内核的定义:操 ...
随机推荐
- xss获取cookie源码附利用代码
保存为cookie.asp <% testfile=Server.MapPath("cookies.txt") msg=Request("msg") se ...
- Spring Cloud 组件 —— hystrix
作用与功能 ① 资源隔离, 每个依赖配备单独的线程池,为每个依赖提供一个小的线程池(或信号),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间.② 依赖超时,可配置依赖调用超时时间,超 ...
- Oracle 按指定顺序排序
select * from (select 'Nick' as item from dual union all select 'Viki' as item from dual union all s ...
- Dubbo源码分析(4):Protocol
Protocol接口是Dubbo框架的核心组件.Dubbo框架启动protocol接口实现类,由spring的xml文件配置决定.RegistryProtocol协议是Protocol协议的核心,它负 ...
- 批量把pod实例调成0
#!/bin/bash namespace=`kubectl get ns|grep '^te-'|grep -v datamgr|awk '{print $1}'` #--------------- ...
- greenplum 下载地址
一.推荐使用下面下载地址 https://network.pivotal.io/products/pivotal-gpdb#/releases/158026/file_groups/1083 二.官网 ...
- python3 结束子线程
最近公司内部网络经常出问题,奇慢无比,导致人脸检测程序在下载图片时经常卡住,为了不影响数据的核对, 决定在网络不佳图片下载超时后放弃下载,继续执行后续程序. 于是整理出解决思路如下: 1.在线程中完成 ...
- 解决Cannot find config.m4 Make sure that you run '/home/php/bin/phpize' in the top level source directory of the module
oot@DK:/home/daokr/downfile/php-7.0.0/ext/mysqlnd# /home/php/bin/phpizeCannot find config.m4. Make s ...
- BZOJ 1857: [Scoi2010]传送带
二次联通门 : BZOJ 1857: [Scoi2010]传送带 /* BZOJ 1857: [Scoi2010]传送带 三分套三分 可能是吧..dalao们都说明显是一个单峰函数 可是我证不出来.. ...
- [WARNING] 找不到编译器:wepy-compiler-less。 [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件。
npm install less 之后 npm install wepy-compiler-less 解决 请点赞!因为你的鼓励是我写作的最大动力! 吹逼交流群:711613774