LDD: 多核亲和性

1,进程绑定

#include <sched.h> 
cpu_set_t  set;
void CPU_ZERO(cpu_set_t *set);
void CPU_SET(int cpu, cpu_set_t *set);
void CPU_CLR(int cpu, cpu_set_t *set);
int CPU_ISSET(int cpu, cpu_set_t *set);

int sched_setaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);   
int sched_getaffinity(pid_t pid, size_t cpusetsize,cpu_set_t *mask);

2,线程绑定

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);

3,内核态

void kthread_bind (struct task_struct *k, unsigned int  cpu);
int set_cpus_allowed(struct task_struct *k, cpumask_t new_mask);

4,命令行绑定

taskset -p <COREMASK>  <PID>

taskset -cp <CORE-LIST>  <PID>

5,中断绑核:

echo 0x3 /proc/irq/24/smp_affinity

cat /proc/irq/24/smp_affinity

时间: 2024-10-07 06:07:06

LDD: 多核亲和性的相关文章

进程在多核CPU环境下分布不均导致TCP连接堆积

今天处理了一个客户的故障,可能在web排错方面有一定的代表性,所以在这里跟大家分享. 背景: 电商客户,系统架构是前端一台负载均衡设备,负载均衡算法是轮询(round robin):后面是两台web服务器,跑的应用是gunicorn(一个Python WSGI UNIX的HTTP服务器). 故障现象: 用户抱怨网站响应慢,有较多的页面打不开的情况.从系统监控来看,两台后端服务器的连接数(TCP)不相等.曲线图显示,其中一台的连接数在数十分钟内越来越偏离另一台正常服务器的连接数曲线.最严重的时刻,

Linux中CPU亲和性(affinity)

0.准备知识 超线程技术(Hyper-Threading):就是利用特殊的硬件指令,把两个逻辑内核(CPU core)模拟成两个物理芯片, 让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率. 我们常听到的双核四线程/四核八线程指的就是支持超线程技术的CPU. 物理CPU:机器上安装的实际CPU, 比如说你的主板上安装了一个8核CPU,那么物理CPU个数就是1个,所以物理CPU个数就是主板上安装的CPU个数. 逻辑CPU:一般情况,我

cpu亲和性绑定

将进程与cpu绑定,最直观的好处就是减少cpu之间的cache同步和切换,提高了cpu cache的命中率,提高代码的效率.从cpu架构上,NUMA拥有独立的本地内存,节点之间可以通过互换模块做连接和信息交互,因此每个CPU可以访问整个系统的内存,但是访问远地内存访问效率大大降低,绑定cpu操作对此类系统运行速度会有较大提升,UMA架构下,多cpu通过系统总线访问存储模块.不难看出,NUMA使用cpu绑定时,每个核心可以更专注地处理一件事情,资源体系被充分使用,减少了同步的损耗. 简单地说,CP

linux学习笔记——搭建基于nginx的web服务器、多核配置、nginx配置参数

############ 认识nginx #############Nginx:(发音同 engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用.  其优点是轻量级(占有内存少),高并发(并发能力强),事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用ngi

关于CPU亲和性的测试

今天看到运维的同事在配置nginx的CPU亲和性时候,运维同事说他在所有的机器上都是按照8核的方式来配置worker进程的CPU亲和性的. 但我觉得就是有点不太对劲,就查了一下nginx的处理worker_cpu_affinity的源代码,发现nginx并不会在发现配置错误的时候拒绝启动worker进程,而是仅仅打印一条错误日志“sched_setaffinity() failed”. 如果设置亲和性失败则按照SMP负载策略进行处理,linux的SMP负载均衡是基于进程数的,每个cpu都有一个可

数据挖掘——亲和性分析

亲和性分析根据样本个体之间的相似度,确定它们关系的亲疏.应用场景: 1.向网站用户提供多样化的服务或投放定向广告. 2.为了向用户推荐电影或商品 3.根据基因寻找有亲缘关系的人 比如:统计顾客购买了商品1,然后再购买商品2的比率,算相似度. import numpy as np dataset_filename = "affinity_dataset.txt" x = np.loadtxt(dataset_filename) # print x[:5] # 上述代码的结果代表前5次交易

kvm cpu的亲和性绑定配置

1.CPU的绑定配置 进程的处理器亲和性(process affinity):指将进程绑定到特定的一个或多个cpu上去执行,而不允许将进程调度到其他cpu上. 物理cpu:表示真实的cpu个数 逻辑cpu:表示所有拥有一个完整真实cpu功能的单元,一般等于所有真实cpu的核心或超线程数(ht技术)之和 例子:一个主板有cpu1,cpu2,cpu1双核不开超线程,cpu2四核其中某个核心开两个超线程,那么它有2个真实cpu,和2+(2*1+3)=7个逻辑cpu 实现: (1)在grub.conf上

多核并行编程技术(一)

首先需要先理解几个概念:串行:最基本的程序执行方式,串行程序的整个运行时,只有一个调用栈和一个运行时上下文,单进程/单线程程序可以认为是串行程序.并发:多线程出现后比较常见的程序执行方式,多线程程序运行时,会有多个运行时上下文和对应的多个调用栈.逻辑上多个线程同时发生,物理上是有操作系统调度,CPU某一时刻依然只执行一个线程的任务,但是某个执行中的线程随时可能被OS调度走,而随后运行的线程操作的数据可能跟刚刚被调度走的线程造成冲突,所以有共享数据同步问题. 多进程如果有共享数据,也符合并发程序的

ldd获得可执行程序的所有库并输出到指定目录

#!/bin/bash ########################################################################## #FileName: GetSoFile.sh #Function: generate so file list. #Create time: 2015.09.15 ######################################################################### #可执行程序