Jaki jest optymalny podział pamięci głównej na pamięć GPU?

73

Przeczytałem, że można przydzielić 128 MB, 64 MB lub 32 MB do pamięci wideo Raspberry Pi.

Biorąc pod uwagę, że mój podstawowy przypadek użycia tego komputera ma charakter edukacyjny: będę uruchamiał lekkie skrypty Pythona i przeglądanie stron internetowych. Czy przejdzie na utratę funkcji, przechodząc na tylko 32 MB pamięci?

Nie spodziewam się, że będę chciał używać 3D lub odtwarzać wideo.

Salim Fadhley
źródło
2
Upewnij się, że dostosujesz swoją zamianę : D
earthmeLon
1
Poczekaj, ma 42 głosy. To nie jest pytanie, to odpowiedź!
Facet z
Uważam, że zakres wartości jest teraz szerszy i zgodnie z odpowiedzią @Krysztofa Adamskiego możliwe jest określenie konkretnego podziału w pliku config.txt dla różnych całkowitych rozmiarów pamięci, aby ta sama karta mogła tworzyć odpowiednie podziały po umieszczeniu w różne RPis - co przydaje się przy przygotowywaniu dystrybucji, jak sądzę ...
SlySven

Odpowiedzi:

58

Spodziewałbym się, że nie zauważysz zauważalnej różnicy, chyba że wykonujesz ciężkie zadania graficzne, takie jak odtwarzanie wideo.

Jednak trudno jest ocenić optymalne ustawienia, ponieważ limity wydajności będą się różnić w zależności od uruchomionych aplikacji i oczekiwań użytkownika.

Najlepsze, co możesz zrobić, to eksperymentować.

Jeśli chcesz zmienić podział, istnieją dwie różne metody, w zależności od posiadanego oprogramowania. Jeśli to możliwe, upewnij się, że masz najnowsze oprogramowanie układowe . Jeśli nie możesz dokonać aktualizacji z jakiegokolwiek powodu, umieściłem obie opcje poniżej:

Nowe oprogramowanie układowe (po październiku 2012 r.)

  • Edytuj /boot/config.txti dodaj lub edytuj następujący wiersz:

    gpu_mem=16
    
  • Wartość ta może być 16, 64, 128lub 256a oznacza ilość dostępnej pamięci RAM procesora graficznego.

Stare oprogramowanie układowe (przed październikiem 2012 r.)

Aby zmienić pamięć wideo, musisz wymienić start.elfplik na /boot/partycji obrazu. Możliwe .elfpliki powinny znajdować się w /boot/katalogu twojego Pi. Przełączasz, zastępując start.elfplik jednym z pozostałych.

Istnieją trzy modele pamięci, a oto rekomendacje zaczerpnięte z tablicy dyskusyjnej Raspberry Pi :

  1. 224 MB pamięci RAM i 32 MB pamięci VRAM dla dystrybucji Linuksa na pulpicie lub ciężkich aplikacji (bez GUI), które nie muszą odtwarzać wideo ani renderować 3D.  
  2. 192 MB RAM i 64 MB VRAM (domyślnie) dla dystrybucji komputerowych, które chcą odtwarzać wideo lub mieć efekty 3D.  
  3. 128 MB pamięci RAM i 128 MB pamięci VRAM dla aplikacji i gier, które wykonują rozbudowane multimedia lub grają w gry renderowane w 3D.  

 I jeszcze jeden:

240 MB pamięci RAM i 16 VRAM dla prawie zerowej mocy graficznej. Jest wystarczająca ilość pamięci GPU do renderowania ekranu, ale niewiele więcej. Użyj tego, gdy potrzebujesz dalszego zwiększenia wydajności bez GUI.

Jivings
źródło
Zaktualizowałem odpowiedź dla nowych modeli 512 MB.
Jivings
Napisy wydają się zwiększać zapotrzebowanie na pamięć ; w przypadku filmu 1080p z napisami 64 MB to zdecydowanie za mało.
Raphael
51

Pamięć RAM jest bardzo ważna dla wydajności Linuksa z kilku powodów:

  • Skrytki Linux przez większość czasu działa bez wolnej pamięci. Jeśli niektóre aplikacje nie używają pamięci, są one wykorzystywane do pamięci podręcznych, co przyspiesza działanie. Więc nigdy nie marnuje się pamięci. Jeśli aplikacje potrzebują więcej pamięci, pamięci podręczne są zwalniane, więc pamięci podręczne nigdy nie zapobiegną uruchamianiu aplikacji wymagających więcej pamięci RAM. Ale im więcej możesz buforować, tym lepiej.

  • Wiele aplikacji (zwłaszcza stacjonarnych) potrzebuje obecnie dużej ilości pamięci. Nie jest to zaskoczeniem - większość systemów stacjonarnych (a nawet smartfonów) ma obecnie o wiele więcej pamięci niż Rapsberry Pi. Na przykład przeglądarki nawet lekkie) zużyją dziesiątki MB pamięci, jak tylko otworzysz jakąś większą stronę internetową.

  • Każda aplikacja potrzebuje pewnej ilości pamięci. Im więcej aplikacji uruchomisz, tym więcej pamięci będą zużywać.

Dlatego zawsze chcesz mieć jak najwięcej pamięci ARM. Ale GPU ma swoje potrzeby w zależności od wymaganych funkcji.

Wersja 256 MB

W przypadku starszych wersji RaspberryPi z 256 MB pamięci RAM dostępne są 4 podziały:

  • 240/16 - Najwięcej pamięci RAM ARM (240 MB) naśladuje pamięć GPU. Jest to najlepsze rozwiązanie do obliczeń ogólnych, gdy nie potrzebujesz grafiki 3D ani sprzętowego przyspieszania wideo. Ma wystarczającą ilość pamięci do obsługi rozdzielczości bufora ramki 1920x1200x16bpp. Chociaż działa również 32 bpp, nie jest to zalecane, ponieważ pozostawia bardzo mało wolnej pamięci dla GPU.

  • 224/32 - Ten jest przestarzały na rzecz podziału 240/16. Ma wbudowane dekodowanie 3D i sprzętowe wideo, ale ponieważ nie ma wystarczającej ilości pamięci, aby z niego korzystać, nie ma sensu z niego korzystać. Chyba że masz problemy z podziałem 240/16 lub chcesz użyć bufora ramki 32 bpp w najwyższej rozdzielczości. Możliwe, że zostaną usunięte w przyszłości.

  • 192/64 - Aby korzystać ze sprzętowej akceleracji wideo lub grafiki 3D, potrzebujesz co najmniej 64 MB podziału GPU. Może być za mało pamięci GPU do sprzętowego przyspieszonego odtwarzania wideo w najwyższej rozdzielczości lub jeśli potrzebujesz dużo pamięci GPU na rzeczy takie jak tekstury.

  • 128/128 - Najwięcej pamięci RAM może uzyskać. Użyj go, gdy potrzebujesz dużo pamięci do odtwarzania kart graficznych 3D i sprzętowego odtwarzania wideo w wysokiej rozdzielczości. Podział ten jest potrzebny do prawidłowego działania RaspBMC lub bezproblemowego odtwarzania treści wideo FullHD za pomocą omxplayera.

Wersja 512 MB

Nowe wersje RaspberryPi mają 512 MB pamięci RAM. Masz 4 dodatkowe podziały zaprojektowane dla tej wersji:

  • 496/16 i 448/64 - lubią 240/16i 192/64dzielą odpowiednio na 256 MB, ale z 256 MB więcej pamięci RAM dostępnej dla ARM. Ponieważ GPU ma tylko 16 MB / 64 MB lub pamięć RAM, wszystkie ograniczenia z 240/16/ 192/64nadal obowiązują.
  • 384/128 - podobny do podziału 128/128 dla 256 MB - powinieneś mieć wszystkie funkcje układu graficznego, ale z rozsądną ilością pamięci ARM. Prawdopodobnie będzie to teraz najbardziej uniwersalny podział.
  • 256/256 - Jakaś dodatkowa pamięć karty graficznej, jeśli naprawdę jej potrzebujesz, na przykład dla dużych tekstur i podobnych rzeczy. Podczas gdy 256 MB pamięci ARM jest większe, niż można by było mieć w starszych RaspberryPis, nie sądzę, aby ta pamięć była używana wielokrotnie.

Dynamiczne podziały

Nowe wersje pakietu oprogramowania układowego usuwa większość start_*.elfplików, pozostawiając tylko start.elfi start_cd.elf(także fixup*.elfpliki, jeśli zostały dodane). Od teraz nie musisz ręcznie wybierać właściwego start_*.file. Zamiast tego należy użyć gpu_mem*opcji w config.txtpliku, aby wybrać ilość pamięci przeznaczonej na procesor graficzny. Pozostała pamięć zostanie przydzielona do ARM. Dla tych opcji powinno być możliwe użycie dowolnego numeru z następującego zakresu:

**512MB of RAM**: 16M-448M
**256MB of RAM**: 16M-192M

Chociaż nie ma obecnie zakodowanych wartości podziału, większość informacji w pozostałej części tej odpowiedzi powinna nadal być poprawna, gdy próbujesz określić, ile pamięci należy przydzielić GPU.

start_cd.elfa fixup_cd.elfpliki są nacięcia wersje odpowiednich plików, jedynie gdy stosowane gpu_mem=16.

Używanie jednej karty SD w wersji 256 i 512 MB

Jeśli używasz jednego obrazu karty SD dla różnych wersji RaspberryPi, możesz użyć gpu_mem_256i gpu_mem_512opcji. Pierwszy będzie używany tylko w wersji 256 MB, a drugi tylko w wersji 512 MB płyty.

Krzysztof Adamski
źródło
Tak, aktualizacja jest warta, jeśli chcesz używać zarówno XBMC, jak i LXDE bez nudnej ręcznej zmiany pliku konfiguracyjnego przed przełączeniem eatch lub jeśli Pi jest twoim głównym komputerem, którego chcesz używać na co dzień.
avra
6
Przydatne wskazówki. Aby to wyjaśnić - jaki byłby optymalny podział na prowadzenie bezgłowe? Czy na przykład moduł kamery rpi ma wymaganą kartę graficzną?
geotheory
Istnieje teraz gpu_mem_1024, co nie dziwi, 1024 MB RPis - czyli obecnie RPi 2 B (i chyba A, jeśli ktoś wyjdzie?)
SlySven
Według elinux.org/RPiconfig#Camera moduł kamery wymaga następujących wierszy w /boot/config.txt: start_x=1i gpu_mem=128więcej. Ponadto, /usr/bin/raspi-configposiada opcję, która umożliwia aparatu.
mpb