无法在 Raspberry Pi 3 Model B 上分配 256TB 虚拟内存

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

出于教育目的,我正在计算可以在 Linux 上分配多少虚拟内存。在 x86_64 上,结果分配了 128TB 虚拟内存,如文档中所示。但在arm64上,我只设法分配了170TB的虚拟内存,尽管文档说是256Tb。我想了解是什么阻止我分配 256TB 虚拟内存。

所以我写了一个程序

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

int main() {
    char *chars;
    size_t nbytes;

    while(chars != MAP_FAILED) {
      nbytes += 0x10000000000; // 1TB
      chars = mmap(
        NULL,
        nbytes,
        PROT_READ | PROT_WRITE,
        MAP_SHARED | MAP_ANONYMOUS,
        -1,
        0
      );

      munmap(chars, nbytes);
    }

    printf("Allocated %ld total TB\n", nbytes/1024/1024/1024/1024);
    exit(EXIT_FAILURE);
}

设置过量使用的参数:

echo 1 > /proc/sys/vm/overcommit_memory

得到结果:

Allocated 171 total TB

我尝试增加参数:

sysctl -w vm.max_map_count=655300000
ulimit -l unlimited

但没有任何帮助。

我的内核参数:

# grep CONFIG_ARM64_VA_BITS /boot/config-$(uname -r)
# CONFIG_ARM64_VA_BITS_39 is not set
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_VA_BITS=48

# grep CONFIG_ARM64_PA_BITS /boot/config-$(uname -r)
CONFIG_ARM64_PA_BITS_48=y
CONFIG_ARM64_PA_BITS=48

我的系统:

ARM Cortex A53 (ARMv8) - 1GB RAM
5.15.0-1034-raspi #37-Ubuntu SMP PREEMPT
# free -m
               total        used        free      shared  buff/cache   available
Mem:             905         198         346           3         360         616
linux memory arm64
1个回答
0
投票

你不能神奇地创建虚拟内存。虚拟内存的数量取决于可用物理内存的数量。在具有 1GB RAM 的 Raspberry Pi 3 上分配 256TB 虚拟内存是不会发生的,虚拟内存依赖于您的物理 RAM,因此可用量受到实际可用量的限制。

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