加载中...
CPU 亲和性是指将进程或线程绑定到特定 CPU 核心上运行的机制。通过限制任务在指定核心间迁移,可提升缓存命中率、降低调度抖动,常用于性能敏感场景。

| 中文名 | CPU 亲和性 |
| 英文名 | CPU Affinity |
| Linux 命令 | taskset |
| 系统调用 | sched_setaffinity |
| 主要收益 | 缓存局部性 |
CPU 亲和性(CPU Affinity)是操作系统提供的一种能力,允许把进程或线程绑定到一个或若干指定的 CPU 核心上运行,而不是任由调度器在所有核心间自由迁移。它通过维护每个任务的可运行 CPU 掩码来实现。
在多核系统中,调度器为了负载均衡可能把线程从一个核心迁移到另一个核心。然而迁移会使原核心 L1/L2 缓存中的热数据失效,新核心需重新加载,造成性能损失。CPU 亲和性让开发者或管理员显式约束任务的运行位置,减少迁移。Linux 提供 taskset 命令和 sched_setaffinity 系统调用,Windows 也有相应的 API 与设置界面。
CPU 亲和性广泛应用于高频交易、实时音视频处理、网络数据平面等对延迟极其敏感的系统。数据库、虚拟机、容器编排也常用它把工作负载固定到特定核心以获得稳定性能。此外,将中断处理绑定到专门核心可减少对业务线程的打断。
问:绑核一定能提升性能吗?答:不一定。绑核在缓存敏感、需要稳定延迟的场景收益明显,但若绑定不当会削弱负载均衡,反而在整体吞吐上受损,需结合实际测试。
问:亲和性和 NUMA 有什么关系?答:在 NUMA 架构下,把线程绑定到某内存节点对应的核心,并让它使用本地内存,可显著降低访存延迟,二者常配合使用。

| 中文名 | CPU 亲和性 |
| 英文名 | CPU Affinity |
| Linux 命令 | taskset |
| 系统调用 | sched_setaffinity |
| 主要收益 | 缓存局部性 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧