Raspberry Pi 3在操作系统级别上的可用内存不足1GB


13

我不知道这是否是关键问题。但是,我需要摆脱脑海中的问号。

我最近购买了Raspberry Pi 3主板,当我在玩它时,我意识到meminfo显示的物理内存大小(〜880MB)比1GB官方网站上指定的)小得多

root@mypi:~# cat /proc/meminfo 
MemTotal:         882780 kB
MemFree:          536068 kB
MemAvailable:     712180 kB

在相关raspi-config菜单项上检查两次,GPU可用的内存量为16MB(这是允许的最小限制)。

raspi-config -> Advanced Options -> Memory Split

引导配置还说gpu_mem是16MB

root@mypi:~# cat /boot/config.txt | grep -i gpu
gpu_mem=16

为了缩小问题空间,这里是系统信息。顺便说一下,系统是最新的。

操作系统版本:

root@mypi:~# cat /etc/os-release | grep PRETTY_NAME
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

内核版本:

root@mypi:~# uname -a
Linux mypi 4.4.23-v7+ #913 SMP Tue Oct 4 14:16:19 BST 2016 armv7l GNU/Linux

内核vmsplit配置:

root@mypi:~# zcat /proc/config.gz | grep CONFIG_VMSPLIT | grep -v ^#
CONFIG_VMSPLIT_2G=y

因此,我有2个问题:

  • 丢失的128MB内存在哪里?
  • 是什么原因导致这种情况?

您正在使用什么操作系统-raspbian / arch / other?cat /etc/os-release应该告诉。什么内核版本?uname -a应该给。这应该有助于缩小可能的原因。rpi-update实际起作用或产生任何警告吗?
Shreyas Murali

详细信息将添加到问题文本。
vaha 2016年

这可能与琼在另一个主题中提出的问题相同。使用zcat /proc/config.gz|grep CONFIG_VMSPLIT进行检查。只有带有rpi-update的解决方案不起作用,因为Pi3还没有更新的内核。但是您可以自己拆分2GB / 2GB内存来重新编译内核。
Janka

1
这是完全正常的,我的Pi3显示MemTotal: 882776 kB MemFree: 126868 kB MemAvailable: 689576 kB“在正常情况下,永远不需要运行rpi-update,因为它总是可以带您到领先的固件和内核,并且因为这可能是测试版本,所以它可能使RPi无法启动”。raspberrypi.org/forums/viewtopic.php?p=916911#p916911
Milliways

是什么vcgencmd get_mem arm && vcgencmd get_mem gpu节目?
Milliways '16

Answers:


14

如果输出vcgencmd get_mem arm && vcgencmd get_mem gpu

arm=880M
gpu=128M

这意味着GPU正在使用128M。

可以在中进行验证/更改raspi-config Advanced Options,尽管我自己还没有减少GPU。我要从内存中删除,但是我认为这是默认设置,可能与Camera有关。至少您现在知道您的内存在哪里。


是的,这全都与相机有关。
vaha

880M和128M总计为1008M。其他16M在哪里?
v7d8dpo4

@ v7d8dpo4来自问题:memory size for GPU is 16MB
David Starkey

10

首先,我非常感谢@Milliways建议检查2条简单命令。

vcgencmd get_mem arm && vcgencmd get_mem gpu

丢失的128MB内存在哪里?

即使两个raspi-config/boot/config.txt说,提供给GPU的内存量为16MB,实际值是880MB的CPU,128MB的GPU。

root@mypi:~# vcgencmd get_mem arm && vcgencmd get_mem gpu
arm=880M
gpu=128M

因此,缺少(实际上不丢失)128 MB内存是为GPU保留的

是什么原因导致这种情况?

甚至/boot/config.txt包括该行gpu_mem=16,还有另一条启用摄像头模块的行。

root@mypi:~# cat /boot/config.txt | grep -i start_x
start_x=1

因此,启用相机模块会为GPU保留128MB的内存,这在此隐含

简而言之,我们可以说start_x=1重写gpu_mem=16

通过禁用相机模块后start_x=0,以下是内存值:

root@mypi:~# vcgencmd get_mem arm && vcgencmd get_mem gpu
arm=992M
gpu=16M

3
是的,摄像头默认为128Mb预留空间。它可以使用较低的分割(如果我没记错的话,一直下降到32Mb),但功能更多(内存越少,可以处理的分辨率越低,依此类推)。如果分割过小(为16Mb的是),它只会默认为128
戴夫·琼斯

-1

除了rpi-update选项外,似乎还有另一个(可能)原因是报告的内存较少。这一次与内核空间/用户空间的内存分配有关。这篇文章详细介绍了该修复程序,其中涉及调整内核构建配置并从源代码重建它。一位用户报告成功

作者:tesla01»2015年2月5日(星期四)下午,我确认使用自定义内核时2G / 2G选项可以工作

2月5日19:17:12 raspberrypi内核:[0.000000]内存:940776K / 966656K可用(5785K内核代码,377K rwdata,1760K rodata,396K init,771K bss,25880K保留)

谢谢 :)

您将需要验证这的确是原因(通过检查CONFIG_VMSPLITis CONFIG_VMSPLIT=3G或的值CONFIG_VMSPLIT=2G),因为该链接中其他较深的帖子报告成功,如下所示

作者:Birdman»2015年2月12日,星期四,10:01 pm就在这一分钟,对libraspberrypi- *和raspberrypi-bootloader进行了更新。内核现在为3.18.7-v7 +。内存现在由顶部报告为“ KiB Mem:998096”

谢谢!!

而另一些没有相同的结果

不幸的是,我没有接近我的PI来验证任何这些要求。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.