redis的实例以不同CPU内核的映射背后的力学

问题描述 投票:0回答:2

它的记载,独立Redis的实例映射到CPU核心分开。如果我有一个Debian / Ubuntu的机器上运行有8个内核8种Redis的情况下,他们都将映射到每个核心。

1)如果我这个规模下机到四个核,会发生什么?

2)做的修改自动(默认情况下发生),或在一些明确的配置参与?

3)有什么办法来控制的行为?如果是的话,到什么程度?

很想了解这背后的技术面和说明性的例子是最欢迎的。我跑在使用Redis的作为后端的云中托管的应用程序。向上扩展(上下)机器的CPU内核为的事情,我必须做的,但我想知道我第一次进入。

提前致谢!

redis
2个回答
2
投票

有没有神奇。由于Redis的是单线程的,Redis的单个实例只会占用一个单核的一次。运行多个实例创建了超过其中一个将被执行一次,在不同的内核(如果有的话)的可能性。如何做到这一点,则完全由操作系统。 Redis的本身并不做任何事情,“地图”,以特定的核实例。

在实践中,它可能是运行在8个核8个实例可能给你的东西,看起来像实例内核的直接映射,因为智能操作系统将分布在核心流程(以最大限度地利用现有资源),并应表现出一定的偏爱运行在它最近腾空(做缓存的最佳使用)相同的核心过程。但充其量,这只是一个1的简单情况属实:1映射,与系统上的其他进程,所有的进程同样装,无论从网络驱动程序等影响

在一般情况下,你可以说的是,该操作系统将决定如何给CPU时间,所有的运行实例,它可能会做了很好的工作,因为操作系统的调度部分被人写谁知道他们在做什么。


2
投票

Redis是一个(大部分)单线程过程,这意味着该服务器的一个实例将使用单个CPU核心。

服务器进程被映射到操作系统核心 - 这是这方面的一个操作系统负责的主要任务之一。要重申的是,分配资源,包括CPU,是一个OS决定,而且是一个非常复杂的问题(即尝试读取内核的调度的代码;))。

如果我有一个Debian / Ubuntu的机器上运行有8个内核8种Redis的情况下,他们都将映射到每个核心。

也许,这就是到OS的自由裁量权。谁也不能保证每一个实例将获得一个唯一的核心,它是可能的一个核心可以通过几个实例来使用。

1)如果我这个规模下机到四个核,会发生什么?

按比例缩小的像,这意味着重新启动。一旦Redis的服务器重新启动,操作系统将与可用内核分配它们。

2)做的修改自动(默认情况下发生),或在一些明确的配置参与?

有没有涉及到的变化 - 每一个过程,Redis的与否,获取核心。芯进程之间共享,与OS编排整个事情。

3)有什么办法来控制的行为?如果是的话,到什么程度?

是的,大多数操作系统控制资源的分配提供接口。具体而言,taskset Linux命令可用于设置或获取处理的CPU的亲和力。

注意:你应该把CPU关联性设置的操作系统 - 它应该是在那个相当不错。取而代之的是,请确保您提供您的服务器正确的负载。

© www.soinside.com 2019 - 2024. All rights reserved.