【Linux 编程】线程绑定 CPU

本文介绍了Linux系统下线程绑定CPU的目的,解释了多线程在不同CPU核间切换对缓存命中率的影响。通过taskset命令和编程方式展示了如何将线程绑定到特定CPU,提高性能。
摘要由CSDN通过智能技术生成

1. 绑定目的

在 Linux 系统中,线程调度是由内核自主完成的。当系统运行在多核 CPU 上时,线程有可能在不同的 CPU 核上来回切换运行。这不利于 CPU 的缓存,缺页率较高。

以 Intel i5 CPU 为例。在多核 CPU 结构中,每个 CPU 有各自的 L1、L2 缓存,而 L3 缓存是共用的。如果一个线程在 CPU 间来回切换,各个 CPU 的缓存的命中率将会降低。而如果线程不管如何调度,都始终可以在一个 CPU 上执行,那么其数据的 L1、L2 缓存的命中率将得到显著提高。

2. 使用命令进行绑定

使用命令 taskset 可以把线程绑定为指定 CPU 上。

taskset 命令使用方法如下:

taskset -p <cpu_set> <pid>

线程的 pid 可以使用 pstree -p | grep <pthread_name> 来获取。但该方法的前提是线程必须已设置名称,否则无法使用 pstree 来查看线程。

cpu_set 为线程对应的 CPU 集,为整型类型,其数值为 1 的 bit 位对应着哪一号 CPU(从 0 起算)。例如 cpu_set 为 1(0001)时对应 1 号 CPU,为 4(0100)时对应 2 号 CPU。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值