当前位置: 首页 > 知识库问答 >
问题:

redis实例映射到独立CPU核心背后的机制

李甫
2023-03-14

有文档表明,独立的redis实例映射到独立的CPU内核。如果我有8个redis实例运行在一台Debian/Ubuntu机器上,有8个内核,那么所有的redis实例都会映射到一个内核。

1)如果我把这台机器缩小到4个内核,会发生什么?

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

共有1个答案

於鸿羲
2023-03-14

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

实际上,在8个内核上运行8个实例可能会给您提供类似于实例到内核的直接映射的东西,因为智能OS会将进程分散到内核之间(以最大限度地利用可用资源),并且应该显示出在最近空出的同一个内核上运行进程的某些偏好(以最佳利用缓存)。但充其量,这只适用于1:1映射的简单情况,因为系统上没有其他进程,所有进程负载相等,没有网络驱动程序的影响,等等。

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

 类似资料:
  • ElasticSearch背后的核心理念 ElasticSearch是构建在极少数的几个概念之上的。ElasticSearch的开发团队希望它能够快速上手,可扩展性强。而且这些核心特性体现在ElasticSearch的各个方面。从架构的角度来看,这些主要特性是: 开箱即用。安装好ElasticSearch后,所有参数的默认值都自动进行了比较合理的设置,基本不需要额外的调整。包括内置的发现机制(比如

  • 我不明白的是,当我提交作业并指定: 应该只占用4个核心。然而,当提交作业时,它将使用所有16个内核,并跳过参数而旋转8个执行器。但是,如果我将参数更改为,它将相应地调整,4个executors将向上旋转。

  • 问题内容: 我已经制作了一个简单的Entity Framework ASP Core Application,它可以工作,但是我不知道为什么: 我做了这样的上下文: 我有两个表,像这样的模型: 有趣的是,当我运行我的应用程序时,它实际上可以拾取数据。似乎很奇怪,因为我没有指定任何表映射。我假设这只是自动映射,因为指定的表具有相同的名称。 我的问题是: 如果我不希望模型名称与数据库完全相同,该如何指

  • 问题内容: 我正在寻找Redis,以便为我提供一个中间高速缓存存储,其中包含有关交集和并集之类的集合操作的大量计算信息。 我查看了redis网站,发现redis不是为多核CPU设计的。我的问题是,为什么会这样呢? 另外,如果是,我们如何在多核CPU上使用Redis来100%利用CPU资源。 问题答案: 我查看了redis网站,发现redis不是为多核CPU设计的。 我的问题是,为什么会这样? 这是

  • 我想知道我是否可以在一台机器上运行多个独立的neo4j实例。我知道我可以将多个实例配置为HA集群(此处),但这不是我的意图,我只需要在我的机器上使用两个完全不同且独立的neo4j实例(如果有区别的话,这是一个Mac OSX)。这只是为了我的开发测试,我尝试了有两个不同的目录,有不同的,并为它们设置了两个不同的端口,但只有一个运行正常。 如果有任何帮助,我将不胜感激。谢谢你。

  • 实现内核重映射 在上文中,我们虽然构造了一个简单映射使得内核能够运行在虚拟空间上,但是这个映射是比较粗糙的。 我们知道一个程序通常含有下面几段: .text 段:存放代码,需要可读、可执行的,但不可写; .rodata 段:存放只读数据,顾名思义,需要可读,但不可写亦不可执行; .data 段:存放经过初始化的数据,需要可读、可写; .bss 段:存放零初始化的数据,需要可读、可写。 我们看到各个