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.