gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:59:36 25 4
gpt4 key购买 nike

我发现物理内存被分成如下几列(Memory Interleaving):

   rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ...
rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
rank3: [1536KB-2048KB] [3584KB-4096KB] ...
Linux 内核正在获取这些交错内存。所以,linux内核看到的物理内存是不连续的。如果我错了,请纠正我。
我一直在为我的类(class)工作寻找 linux 内核源代码。
在创建 sysfs (/sys/devices/system/memory) 时,linux 内核会创建这些可用物理内存的特定大小(在我的系统上为 128 MB)的部分(memory0、memory1...)。使用这些目录中的状态文件,我可以使部分脱机/联机。 ( Memory Hotplug )
所以,这些段所代表的物理内存是分散的。因此,如果我使任何部分离线,这将使分散的内存指向不可用。
我想让这些部分引用连续的内存。像这样:
   memory0 : 0-128 MB
memory1 : 128-256 MB
....
因此,当我使某个部分脱机时,与该部分相关的连续物理内存变得不可用。那么,我可以让 linux 内核将物理内存视为连续而不是交错吗?
如果我对此有任何错误,请纠正我。
谢谢你。

最佳答案

我认为您看到的是由于 NUMA 下内存分配的交错选项。
有一个很好的paper其中讨论了 Linux 下的 NUMA。

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

关于memory-management - 如何在linux内核中使用连续内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19609294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com