当前位置:

首页 > 编程开发 > Redis如何绑定CPU

Redis如何绑定CPU

CPUBalance
CPUBalance

CPUBalance 是一款利用ProBalance算法优化CPU负载保持系统响应迅速的工具。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

立即下载
¥35
Windows 2026-09-24
正版软件 Windows 系统优化工具

绑定CPURedis6.0开始支持绑定CPU,可以有效减少线程上下文切换。CPU亲和性(CPUAffinity)是一种调度属性,它将一个进程或线程,「绑定」到一个或一组CPU上。也称为CPU绑定。设置CPU亲和性可以一定程度避免CPU上下文切换,提高CPUL1、L2Cache命中率。早期「SMP」架构下,每个CPU通过BUS总线共享资源。CPU绑定意义不大。而在当前主流的「NUMA」架构下,每个CPU有自己的本地内存。访问本地内存有更快的速度。而访问其他CPU内存会导致较大的延迟。这时,CPU绑定对系统运

本文目录

    绑定 CPU

    Redis 6.0 开始支持绑定 CPU,可以有效减少线程上下文切换。

    CPU 亲和性(CPU Affinity)是一种调度属性,它将一个进程或线程,「绑定」到一个或一组 CPU 上。也称为 CPU 绑定。

    设置 CPU 亲和性可以一定程度避免 CPU 上下文切换,提高 CPU L1、L2 Cache 命中率。

    早期「SMP」架构下,每个 CPU 通过 BUS 总线共享资源。CPU 绑定意义不大。

    Redis如何绑定CPU
    而在当前主流的「NUMA」架构下,每个 CPU 有自己的本地内存。访问本地内存有更快的速度。而访问其他 CPU 内存会导致较大的延迟。这时,CPU 绑定对系统运行速度的提升有较大的意义。

    Redis如何绑定CPU
    现实中的 NUMA 架构比上图更复杂,通常会将 CPU 分组,若干个 CPU 分配一组内存,称为 「node」。

    你可以通过 「numactl -H 」 命令来查看 NUMA 硬件信息。

    $ numactl -H
    available: 2 nodes (0-1)node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
    node 0 size: 32143 MB
    node 0 free: 26681 MB
    node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
    node 1 size: 32309 MB
    node 1 free: 24958 MB
    node distances:
    node 0 1
      0: 10 21
      1: 21 10

    上图中可以得知该机器有 40 个 CPU,分组为 2 个 node。

    node distances 是一个二维矩阵,表示 node 之间 「访问距离」,10 为基准值。上述命令中可以得知,node 自身访问,距离是 10。跨 node 访问,如 node 0 访问 node 1 距离为 21。说明该机器「跨 node 访问速度」比「node 自身访问速度」慢 2.1 倍。

    其实,早在 2015 年,有人提出 Redis 需要支持设置 CPU 亲和性,而当时的 Redis 还没有支持 IO 多线程,该提议搁置。

    而 Redis 6.0 引入 IO 多线程。同时,也支持了设置 CPU 亲和性。

    我画了一张 Redis 6.0 线程家族供你参考。

    Redis如何绑定CPU

    上图可分为 3 个模块

    • 主线程和 IO 线程:负责命令读取、解析、结果返回。命令执行由主线程完成。

    • bio 线程:负责执行耗时的异步任务,如 close fd。

    • 后台进程:fork 子进程来执行耗时的命令。

    Redis 支持分别配置上述模块的 CPU 亲和度。你可以在 redis.conf 找到以下配置(该配置需手动开启)。

    # IO 线程(包含主线程)绑定到 CPU 0、2、4、6
    server_cpulist 0-7:2
    # bio 线程绑定到 CPU 1、3
    bio_cpulist 1,3
    # aof rewrite 后台进程绑定到 CPU 8、9、10、11
    aof_rewrite_cpulist 8-11
    # bgsave 后台进程绑定到 CPU 1、10、11
    bgsave_cpulist 1,10-11

    我在上述机器,针对 IO 线程和主线程,进行如下测试:

    首先,开启 IO 线程配置。

    io-threads 4 # 主线程 + 3 个 IO 线程io-threads-do-reads yes # IO 线程开启读和解析命令功能

    测试如下三种场景:

    1. 不开启 CPU 绑定配置。

    2. 绑定到不同 node。
      「server_cpulist 0,1,2,3」

    3. 绑定到相同 node。
      「server_cpulist 0,2,4,6」

    通过 redis-benchmark 对 get 命令进行基准测试,每种场景执行 3 次。

    $ redis-benchmark -n 5000000 -c 50 -t get --threads 4

    结果如下:

    1.不开启 CPU 绑定配置

    throughput summary: 248818.11 requests per second
    throughput summary: 248694.36 requests per second
    throughput summary: 249004.00 requests per second

    2.绑定不同 node

    throughput summary: 248880.03 requests per second
    throughput summary: 248447.20 requests per second
    throughput summary: 248818.11 requests per second

    3.绑定相同 node

    throughput summary: 284414.09 requests per second
    throughput summary: 284333.25 requests per second
    throughput summary: 265252.00 requests per second

    根据测试结果,绑定到同一个 node,qps 大约提升 15%

    使用绑定 CPU,你需要注意以下几点:

    1. Linux 下,你可以使用 「numactl --hardware」 查看硬件布局,确保支持并开启 NUMA。

    2. 线程要尽可能分布在 「不同的 CPU,相同的 node」,设置 CPU 亲和度才有效。否则会造成频繁上下文切换和远距离内存访问。

    3. 你要熟悉 CPU 架构,做好充分的测试。否则可能适得其反,导致 Redis 性能下降。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 CPU
    相关文章 更多
    3dmax建模软件需要什么电脑才能用
    3dmax建模软件需要什么电脑才能用

    想流畅运行3ds Max?本文详细解析3ds Max对CPU、显卡、内存及硬盘的具体要求,提供不同预算下的配置建议,助你避开硬件坑,提升建模渲染效率。

    3dmax渲染吃什么配置?主要看CPU 显卡还是内存性能
    3dmax渲染吃什么配置?主要看CPU 显卡还是内存性能

    了解3ds Max渲染过程中CPU、显卡和内存各自承担的角色。针对V-Ray、Corona等主流渲染器,提供清晰的硬件选型逻辑,避免配置浪费或瓶颈。

    Arm AGI CPU详解:136核Neoverse V3,3nm双芯粒架构与AI数据中心部署
    Arm AGI CPU详解:136核Neoverse V3,3nm双芯粒架构与AI数据中心部署

    Arm在Hot Chips 2026发布首款AI专用数据中心CPU“Arm AGI CPU”,由Meta联合开发。该芯片采用台积电3nm工艺,双芯粒设计,每芯粒70个Neoverse V3核心(屏蔽4个后单芯片136核),TDP 300W,支持DDR5-8800及PCIe 6.0。旨在解决x86在AI算力与能效上的瓶颈,预计2027-2028财年推向市场。

    php72w redis,docker php7安装php-redis
    php72w redis,docker php7安装php-redis

    在Docker环境下为PHP安装Redis扩展:手动编译需下载源码、安装phpize、配置编译并安装,生成redis.so并在php.d目录新建redis.ini加载,重启PHP-FPM;也可直接yum安装php72w-pecl-redis,免手动编译。

    php 如何配置 redis,php 如何设置redis
    php 如何配置 redis,php 如何设置redis

    配置PHP的Redis扩展:先安装Redis服务,从GitHub下载phpredis源码,用phpize编译安装,修改php.ini添加extension=redis.so,重启php-fpm或Apache,通过phpinfo验证并连接Redis。

    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】
    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】

    C++结构体无法直接序列化为RESP协议,需手动将字段映射为*N数组嵌套$lenbulkstring形式。整数需转换为字符串并加:前缀,空字符串用$0\r\n,null用$-1\r\n。长度计算需精确到字节数,特别注意二进制安全,同时确保字段顺序与结构体定义一致。

    如何在Golang架构中部署Redict作为高能数据临时存储中转站
    如何在Golang架构中部署Redict作为高能数据临时存储中转站

    Redis作为跨服务临时状态枢纽,需按消息队列、缓存和原子状态三重角色设计。选型用List实现任务分发及延迟重试,Stream用于事件广播与位点回溯。go-redis/v8需配置MinIdleConns、MaxRetries及超时。数据写入应JSON序列化并带type标签、设合理TTL、将关键字段提至顶层。消费通过原子GET+DEL或processedkey

    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制
    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制

    在高并发秒杀场景下,利用Redis的减库存原子操作预扣减库存拦截超卖请求,再通过数据库乐观锁(版本号与库存校验)确保最终一致性,异常时回滚Redis库存并借助Lua脚本保证原子性,从而有效防止库存超卖。

    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑
    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑

    在Go中使用go-redis执行Lua脚本可借助原子性解决竞态问题,通过redis.Script封装脚本并自动处理SHA1缓存与重试。需注意KEYS必须为非空切片且所有键在Cluster模式下落在同一slot,ARGV以字符串传入并由tonumber转换。返回值需先检查错误再调用Val(),避免panic。

    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】
    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】

    先看一个典型场景:电商秒杀、库存扣减、定时任务重复调度——这些并发冲突在 TP6 应用里屡见不鲜。用 Redis 的 SETNX 做互斥锁,确实是轻量又直接的方案,但“能用”和“稳妥”之间,隔着三层硬功夫:原子加锁、身份校验、合理超时。这三条,差一条就翻车。 很多人第一次上手,直接写 SETNX 加

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?