Memory management 如何在linux内核中使用连续内存?

Memory management 如何在linux内核中使用连续内存?,memory-management,linux-kernel,Memory Management,Linux Kernel,我发现物理内存分为以下几类(内存交错): Linux内核正在获得这些交错内存。因此,linux内核看到的物理内存是不连续的。如果我错了,请纠正我 在我的课程工作中,我一直在看linux内核源代码 在创建sysf(/sys/devices/system/memory)时,linux内核创建这些可用物理内存的特定大小(在我的系统上为128 MB)的部分(memory0、memory1等等)。使用这些目录中的状态文件,我可以使分区脱机/联机。() 因此,由这些部分表示的物理内存是分散的。因此,如果我使

我发现物理内存分为以下几类(内存交错):

Linux内核正在获得这些交错内存。因此,linux内核看到的物理内存是不连续的。如果我错了,请纠正我

在我的课程工作中,我一直在看linux内核源代码

在创建sysf(/sys/devices/system/memory)时,linux内核创建这些可用物理内存的特定大小(在我的系统上为128 MB)的部分(memory0、memory1等等)。使用这些目录中的状态文件,我可以使分区脱机/联机。()

因此,由这些部分表示的物理内存是分散的。因此,如果我使任何一个部分脱机,这将使它指向的分散内存不可用

我想让这些部分引用连续内存。大概是这样的:

   memory0 : 0-128 MB
   memory1 : 128-256 MB
   ....
因此,当我使某个部分脱机时,与该部分相关的连续物理内存将不可用。那么,我能让linux内核将物理内存看作是连续的而不是交错的吗

如果我有任何错误,请纠正我


谢谢。

我想您看到的是NUMA下内存分配的交错选项。 关于Linux下的NUMA有一个非常好的例子


如果没有您正在使用的硬件的详细信息,很难猜测如何禁用内存交错选项。您还应该深入研究该实用程序,看看它是否有一些可以在运行的系统上使用的设置。还有一些博客文章提到更改BIOS设置以控制内存交错选项,您可能也必须这样做。(目前没有资格提供2个链接:\n但在BIOS中禁用内存交错的简单谷歌搜索应该会发现一些有用的东西)

有人能帮我解决这个问题吗?你的处理器体系结构是什么?你说过记忆是分等级的。实际上,这在很大程度上取决于处理器内存管理硬件的工作方式。我忙于期中考试。我指的是一般架构,而不是我的机器特有的架构。很抱歉给你带来了困惑。但对于这个讨论,假设系统支持这种交织,那么有没有办法禁用它?@SunEric我不知道Rajesh Golani运行哪个系统。所以我不知道怎么做。谢谢你的回复。在发布这个问题之前,我搜索了一下。我还发现BIOS中有更改内存交错的选项,但我无法在系统中找到这些信息。那么,这是否意味着我的系统不支持内存交错?我认为NUMA不同于内存交错。NUMA将内存块分布在多个处理器上。在我的问题中,我不关心多个处理器。我感兴趣的是内存交叉发生在DIMM列之间。跨DIMM的内存交叉需要通过系统上的内存控制器进行控制。AFAIK禁用它的唯一方法是在BIOS中查找设置或通过现代系统上的EFI外壳。你用的是什么系统?
   memory0 : 0-128 MB
   memory1 : 128-256 MB
   ....