我们有一个带有共享库的 C++ 多线程应用程序,运行在 linux x86_64(debian-12,内核 6.1.xx)和树莓派 5(arm64,debian-12,内核 6.3.xx)上。如果我锁定在 /proc/$pid/statm。
/proc/$pid/statm 报告的 RPI5 上 x86_64 上的页数是 arm64 上的页数的 4 倍。 gcc-release 生成命令行与 -mtune 选项除外。应用程序在两种架构上创建相同数量的具有相同堆栈大小的线程。
RPI5 arm64:
cat /proc/$(pgrep x4rtflex)/statm
150018 65643 7904 1 0 57587 0
Sum 1124.612061 MB
x85_64 ( core-i5-13500E )
cat /proc/$(pgrep x4rtflex)/statm
578665 245412 37759 1 0 207998 0
Sum 4279.340332 MB
我预计 64 位应用程序将在两种架构上消耗类似的内存。
我撤回问题!
我发现我的错误了!我假设树莓派 5 的页面大小与树莓派 4 相同,均为 4kB,就像 x86_64 一样。树莓派 5 使用 16k 页大小的内核 MMU 配置。