python绑定内核_进程绑定CPU

进程绑定CPU

本文所讲述内容仅适用于linux环境

1. CPU亲和性

CPU亲和性是指进程在某个给定的CPU上长时间运行,尽可能少的迁移到其他处理器的倾向性。linux内核的进程调度器天生就具有这样的特性,它尽可能保证一个进程不在处理器之间频繁的迁移,频繁的迁移意味着会增加CPU缓存miss的概率,增加从主存到CPU缓存的复制时间。

2.6版本linux内核新增了一个机制,它允许开发人员可以编程实现硬CPU亲和性,即程序可以显示的指定进程在哪个CPU上执行。

2. CPU亲和性应用场景

有大量计算

系统对时间敏感,对性能要求高

最常见的例子就是nginx,在配置nginx子进程的数量时,一般设置成CPU的核心数,同时通过设置worker_cpu_affinity,将不同的子进程绑定到不同的CPU核上,来增强nginx的响应能力。

如果你的服务器只有一个核,那么是否绑定也就无所谓了。

3. python程序如何绑定CPU

Linux 内核 API 提供了一些方法,让用户可以修改位掩码或查看当前的位掩码:

sched_set_affinity() (用来修改位掩码)

sched_get_affinity() (用来查看当前的位掩码)

python开发人员不需要使用这么底层的API,第三方库psutil就可以完成这些操作

import psutil

count = psutil.cpu_count()

p = psutil.Process()

cpu_lst = p.cpu_affinity() # [0, 1, 2, 3]

p.cpu_affinity([0, 1]) # 将进程绑定到0和1这两个cpu核上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值