redis - Redis 实例映射到独立 CPU 内核背后的机制

标签 redis

据记载,单独的 Redis 实例映射到单独的 CPU 内核。如果我有 8 个 redis 实例在具有 8 个内核的 D​​ebian/Ubuntu 机器上运行,那么它们都将映射到一个内核。

1) 如果我将这台机器缩减为 4 核会怎样?

2) 更改是自动发生的(默认情况下),还是涉及一些明确的配置?

3) 有什么方法可以控制这种行为吗?如果是,程度如何?

很想了解这背后的技术原理,欢迎提供说明性示例。我运行一个托管在云中的应用程序,它使用 redis 作为后端。扩大(和缩小)机器的 CPU 内核是我必须做的事情之一,但我想知道我首先要了解的是什么。

提前致谢!

最佳答案

没有魔法。由于redis是单线程的,单个redis实例一次只会占用一个核。运行多个实例可能会在不同的内核(如果有的话)上同时执行多个实例。如何做到这一点完全取决于操作系统。 redis 本身不会做任何事情来将实例“映射”到特定的核心。

在实践中,在 8 个内核上运行 8 个实例可能会给你一些看起来像实例到内核的直接映射的东西,因为智能操作系统会跨内核分布进程(以最大化可用资源),并且应该显示出在最近腾出的同一核心上运行进程的偏好(以充分利用缓存)。但充其量,这仅适用于 1:1 映射的简单情况,系统上没有其他进程,所有进程均等加载,不受网络驱动程序等的影响。

在一般情况下,您只能说操作系统将决定如何为您运行的所有实例分配 CPU 时间,并且它可能会做得很好,因为操作系统的调度部分是由知道自己在做什么的人撰写。

关于redis - Redis 实例映射到独立 CPU 内核背后的机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492550/

相关文章:

mysql - Redis作为MySQL引擎?

php - Predis 别名分片

docker - 如何在Windows 10上修复 “Redis must be restarted after THP is disabled”警告?

redis - Redis 优于 Aerospike 的用例有哪些?

mysql - 内存关系数据库

redis - Redis 中的孤儿键

php - 如何获取带有偏移量和限制的predis数据?

azure - StackExchange.Redis 超时

ruby-on-rails - 在 sidekiq ui 上显示多个 sidkekiq 进程

performance - 使用 Redis 跟踪在线用户的 2 种方法。哪个更快?