You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3 Model B无法分配256TB虚拟内存的原因排查求助

树莓派3 Model B无法分配256TB虚拟内存的原因排查求助

各位大佬好!最近我出于学习目的,在研究Linux系统下的虚拟内存分配上限,遇到了一个困惑想请教大家:

  • 在x86_64架构的机器上,我成功分配到了128TB的虚拟内存,和内核文档的说明完全一致;
  • 但换到树莓派3 Model B(arm64架构)上时,我最多只能分配到170TB的虚拟内存,可内核文档里明明写着arm64的虚拟内存上限是256TB。

我实在搞不清楚是什么限制了我无法分配到满额的256TB,想问问各位有没有排查方向或者经验?

下面是我用来测试的代码(原代码未写完,我补了部分逻辑方便运行):

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>

int main() {
    char *chars;
    size_t nbytes = 0;  // 原代码未初始化,这里补了初始值避免随机值干扰

    while(chars != MAP_FAILED) {
      nbytes += 0x10000000000; // 每次尝试多分配1TB
      chars = mmap(
        NULL,
        nbytes,
        PROT_READ | PROT_WRITE,
        MAP_SHARED | MAP_ANONYMOUS,
        -1,
        0
      );

      if (chars != MAP_FAILED) {
          printf("成功分配 %zu TB 虚拟内存\n", nbytes / 0x10000000000);
          munmap(chars, nbytes); // 原代码此处未写完,补全释放逻辑
      } else {
          printf("分配 %zu TB 虚拟内存失败\n", nbytes / 0x10000000000);
          break;
      }
    }
    return 0;
}

有没有大佬能帮我分析下可能的原因?是树莓派的硬件限制、内核配置参数,还是我的测试代码存在问题?

备注:内容来源于stack exchange,提问作者azalio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:14:38