Raspberry Pi 3 ma mniej niż 1 GB pamięci dostępnej na poziomie systemu operacyjnego


13

Nie wiem, czy jest to problem krytyczny, czy nie. Ale muszę pozbyć się znaków zapytania w mojej głowie.

Niedawno kupiłem płytę Raspberry Pi 3 i podczas zabawy z niej zdałem sobie sprawę, że meminfo pokazuje rozmiar pamięci fizycznej znacznie mniej (~ 880 MB) niż 1 GB (co jest podane na oficjalnej stronie ).

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

Ilość pamięci dostępnej dla GPU wynosi 16 MB (co jest minimalnym dozwolonym limitem) sprawdzona dwukrotnie w powiązanym punkcie menu raspi-config.

raspi-config -> Advanced Options -> Memory Split

Konfiguracja rozruchowa mówi również, że gpu_mem ma 16 MB .

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

Aby zawęzić obszar problemów, oto informacje o systemie. Nawiasem mówiąc, system jest aktualny.

Wersja systemu operacyjnego:

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

Wersja jądra:

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

Konfiguracja jądra vmsplit:

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

Mam więc 2 pytania:

  • Gdzie brakuje 128 MB pamięci?
  • Co powoduje tę sytuację?

jakiego systemu operacyjnego używasz - raspbian / arch / other? cat /etc/os-releasepowinien to powiedzieć. jaka wersja jądra? uname -apowinien dać to. powinno to pomóc zawęzić prawdopodobne przyczyny. czy aktualizacja rpi faktycznie działała lub generowała jakieś ostrzeżenia?
Shreyas Murali,

Szczegółowe informacje są dodawane do tekstu pytania.
vaha

Prawdopodobnie jest to ten sam problem, co joan sugerowany w innym wątku. Sprawdź za pomocą zcat /proc/config.gz|grep CONFIG_VMSPLIT . Tyle tylko, że rozwiązanie z aktualizacją rpi nie działa, ponieważ nie ma jeszcze nowszego jądra dla Pi3. Ale możesz samodzielnie skompilować jądro z dzieloną pamięcią 2 GB / 2 GB.
Janka

1
Jest to całkowicie normalne, moje Pi3 pokazuje MemTotal: 882776 kB MemFree: 126868 kB MemAvailable: 689576 kB„W normalnych okolicznościach NIGDY nie trzeba uruchamiać aktualizacji rpi, ponieważ zawsze prowadzi to do najnowocześniejszego oprogramowania układowego i jądra, a ponieważ może to być wersja testowa, może spowodować, że nie można uruchomić RPi”. raspberrypi.org/forums/viewtopic.php?p=916911#p916911
Milliways,

Co vcgencmd get_mem arm && vcgencmd get_mem gpupokazuje
Milliways,

Odpowiedzi:


14

Jeśli wynikiem vcgencmd get_mem arm && vcgencmd get_mem gpujest

arm=880M
gpu=128M

Oznacza to, że GPU używa 128M.

Można to zweryfikować / zmienić raspi-config Advanced Options, chociaż sam nie zmniejszyłem GPU. Wychodzę z pamięci, ale myślę, że jest to ustawienie domyślne, prawdopodobnie związane z kamerą. Przynajmniej teraz wiesz, gdzie jest twoja pamięć.


Tak, wszystko zależy od aparatu.
vaha

880 mln i 128 mln sumują się do 1008 mln. Gdzie jest druga 16M?
v7d8dpo4,

@ v7d8dpo4 Z pytania:memory size for GPU is 16MB
David Starkey,

10

Po pierwsze, pozdrawiam @Milliways za sugestię sprawdzenia 2 prostych poleceń.

vcgencmd get_mem arm && vcgencmd get_mem gpu

Gdzie brakuje 128 MB pamięci?

Nawet jeśli jedno raspi-configi drugie /boot/config.txtmówi, że ilość pamięci dostępnej dla GPU wynosi 16 MB, rzeczywiste wartości wynoszą 880 MB dla procesora, 128 MB dla GPU.

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

Tak więc brakuje (właściwie nie brakuje) 128 MB pamięci zarezerwowanej dla GPU .

Co powoduje tę sytuację?

Nawet /boot/config.txtobejmuje linię gpu_mem=16, istnieje inna linia, która włącza moduł kamery.

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

Tak więc włączenie modułu kamery prowadzi do 128 MB rezerwacji pamięci dla GPU, co jest tutaj domyślnie implikowane .

Krótko mówiąc, możemy powiedzieć, że to start_x=1zastępuje gpu_mem=16.

Po wyłączeniu modułu kamery start_x=0, oto wartości pamięci:

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

3
Tak, kamera domyślnie ma rezerwację 128 Mb. To może pracować z mniejszymi szczelinami (jeśli dobrze pamiętam, aż do 32MB), ale z bardziej ograniczonej funkcjonalności (z mniejszą ilością pamięci, tym niższa rozdzielczość można obsługiwać i tak dalej). Jeśli podział jest zbyt mały (jak 16Mb), domyślnie wynosi 128.
Dave Jones

-1

Oprócz opcji aktualizacji rpi wydaje się, że istnieje inny (możliwy) powód, dla którego zgłaszana pamięć jest mniejsza. Tym razem dotyczy to podziału przestrzeni jądra / przestrzeni użytkownika. W tym poście szczegółowo opisano poprawkę polegającą na poprawieniu konfiguracji kompilacji jądra i przebudowaniu jej z kodu źródłowego. Jeden użytkownik zgłosił sukces

autor: tesla01 »Czw 05 lutego 2015 20:04 Cześć, Potwierdzam, że opcja 2G / 2G działa, gdy korzystam z niestandardowego jądra

5 lutego 19:17:12 jądro raspberrypi: [0,000000] Pamięć: 940776K / 966656K dostępne (kod jądra 5785K, 377K rwdata, 1760K rodata, 396K init, 771K bss, 25880K zarezerwowane)

Dzięki :)

Trzeba będzie zweryfikować to rzeczywiście przyczyną (sprawdzając wartość CONFIG_VMSPLITjest albo CONFIG_VMSPLIT=3Galbo CONFIG_VMSPLIT=2G) w niektórych stanowisk w dalszej części tego raportu łącza sukcesu tak jak

autor: birdman »Czw 12 lutego 2015 22:01 Właśnie w tej chwili pojawiła się aktualizacja libraspberrypi- * i raspberrypi-bootloader. jądro teraz 3.18.7-v7 +. pamięć jest teraz zgłaszana przez górę jako „KiB Mem: 998096”

Dzięki!!

podczas gdy niektóre inne nie miały takich samych wyników

Niestety nie jestem w pobliżu mojego PI, aby zweryfikować którekolwiek z tych roszczeń.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.