Wie kann ich die RAM-Aufteilung ändern?

23

Standardmäßig ist der Pi auf eine Aufteilung von 192 MB: 64 MB RAM: VRAM eingestellt. Da ich den Pi nicht für grafische Zwecke verwenden werde, möchte ich die Aufteilung ändern, um mehr normalen RAM zuzuweisen, um die Auslagerungsnutzung zu vereinfachen.

hifkanotiks
quelle
Es gibt eine ähnliche Frage und relevante Antwort hier .
Jivings

Antworten:

16

Dies sind die RAM-Splits und wofür sollten sie verwendet werden.

  • 240/16 - Dies ist am besten, wenn Sie keine grafischen Aufgaben ausführen, z. B. wenn Sie den Pi als Server verwenden und keine grafische Benutzeroberfläche haben.
  • 224/32 - Dies ist wahrscheinlich am besten, wenn Sie den pi mit einer einfachen grafischen Desktop-Umgebung ohne 3D verwenden.
  • 192/64 - Die Standardeinstellung, wahrscheinlich die beste für allgemeine Zwecke.
  • 128/128 - Sehr hoher VRAM, nur wirklich gut, wenn Sie eine sehr grafisch intensive Aufgabe ausführen.

Es gibt verschiedene Methoden, mit denen die RAM-Aufteilung verwaltet werden kann:

Manuell

Sie können die RAM-Aufteilung folgendermaßen ändern:

sudo cp /boot/arm[ram-split]_start.elf /boot/start.elf

Wo [ram-split]ist die Menge an RAM, die der CPU zugewiesen werden soll? Nach einem Neustart wird der neue Wert übernommen.

RPI-Update

Das RPI -Update von Hexxeh unterstützt auch das Ändern der RAM-Aufteilung. Sie würden ausführen, rpi-update [ram-split]wo [ram-split]die RAM-Menge ist, die Sie der CPU zuweisen möchten. Nach einem Neustart wird die Aufteilung angewendet.

RAM-Auswahlskript

Der beste Weg ist wahrscheinlich, dieses select4.sh-Skript zu verwenden und dann die entsprechende RAM-Aufteilung auszuwählen. Nach dem Neustart wird die neue Aufteilung angewendet.

#!/bin/bash
##
## Raspberry Pi Memory Split Selector Script v4
## Author: SirLagz
## Website: http://sirlagz.net
##
## The purpose of this script is to make selecting the memory split
## on the RPi easy.
## Simply make this script executable if it's not already, move
## it to the directory with the elf files, and run it with ./select4.sh
## The menu should be pretty self explanatory.
##
cd /boot
clear
list=./*
b128det=0
b192det=0
b224det=0
b240det=0
bdefdet=0

for i in $list
do
    case $i in
        "./arm128_start.elf") b128det=1;;
        "./arm192_start.elf") b192det=1;;
        "./arm224_start.elf") b224det=1;;
        "./arm240_start.elf") b240det=1;;
        "./start.elf") bdefdet=1;;
    esac
done

if [[ "$b192det" == "$bdefdet" ]] ; then
    if cmp -s arm192_start.elf start.elf; then
        current=192
    fi
fi

if [[ "$b128det" == "$bdefdet" ]] ; then
    if cmp -s arm128_start.elf start.elf; then
        current=128
    fi
fi

if [[ "$b224det" == "$bdefdet" ]] ; then
    if cmp -s arm224_start.elf start.elf; then
        current=224
    fi
fi

if [[ "$b240det" == "$bdefdet" ]] ; then
    if cmp -s arm240_start.elf start.elf; then
        current=240
    fi
fi

declare -i vram
vram=256-$current
success=1
sysram=`awk '/MemTotal/ { printf("%.0f",$2/1024) }' /proc/meminfo`
echo "##################################"
echo "##      Raspberry Pi Memory     ##"
echo "##        Selector Script       ##"
echo "##################################"
echo "      Current Memory Split"
echo "        CPU $current/$vram VRAM"
echo "      Detected System RAM"
echo "          $sysram MB"
echo "##################################"
echo "1) Set CPU/VRAM split to 128/128"
echo "2) Set CPU/VRAM split to 192/64"
if [[ "$b240det" == 0 ]] ; then
echo "3) Set CPU/VRAM split to 240/16 (NOT DETECTED. DO NOT USE)"
else
echo "3) Set CPU/VRAM split to 240/16"
fi
if [[ "$b224det" == 1 ]] ; then
    echo "4) Set CPU/VRAM split to 224/32"
fi
echo "q) Quit"
echo "Enter Choice:";
read x
case $x in
1)
    rm start.elf && cp arm128_start.elf start.elf
    newram=128
;;
2)
    rm start.elf && cp arm192_start.elf start.elf
    newram=192
;;
3)
    if [[ "$b240det" == 1 ]] ; then
        rm start.elf && cp arm240_start.elf start.elf
        newram=240
    else
        echo "The arm240_start.elf was not detected. Not changing ram split."
        success=0
    fi
;;
4)
    rm start.elf && cp arm224_start.elf start.elf
    newram=224
;;
q|Q)
    exit 0
;;
*)
    $0
;;
esac

if [[ $? -ne 0 ]]; then
    echo "Memory Split setting failed"
elif [[ $success == 1 ]]; then
    declare -i newvram
    newvram=256-$newram
    echo "Memory Split set to $newram/$newvram successfully"
fi

for i in $list
do
    case $i in
        "./arm128_start.elf") b128det=1;;
        "./arm192_start.elf") b192det=1;;
        "./arm224_start.elf") b224det=1;;
        "./arm240_start.elf") b240det=1;;
        "./start.elf") bdefdet=1;;
    esac
done

if [[ "$bdefdet" -ne 1 ]]; then
    $0
    echo "=============================================================================="
    echo "start.elf not detected. Please check that you have selected a valid ram split."
    echo "=============================================================================="
fi

Hier ist ein Github-Link für den Fall, dass der Link verrottet.

hifkanotiks
quelle
Benötigt es danach einen Neustart?
Akavel
@akavel Ja, da die start.elf nur beim Start ausgeführt wird. Bearbeiten Sie jetzt.
Hifkanotiks
1
Die vier von Ihnen geposteten Antworten wurden zusammengeführt. Obwohl dies manchmal akzeptabel ist, glaube ich nicht, dass vier separate Antworten, die sich mit verschiedenen Aspekten der Frage befassen, in diesem Fall von Nutzen sind. Ich hoffe, niemand wendet sich dagegen.
Jivings
14

raspi-config

Sie können die Speicheraufteilung mit dem raspi-configDienstprogramm entweder in debian-wheezy oder raspbian-wheezy ändern.

Führen Sie einfach das Dienstprogramm aus sudo raspi-configund wählen Sie dann die Option für die Speicheraufteilung aus (ungefähr die achte in der Liste).

Jon Egerton
quelle
1

Überprüfen Sie Ihre RAM-Aufteilung

Zu groß für einen Kommentar, aber verwandt. Sie können Ihren RAM-Split überprüfen, indem Sie diesen Befehl ausführen

$ sha1sum /boot/*start.elf
a3f72ae7eae537800454de8e4cb231cbd176c0e1  /boot/arm128_start.elf
7784527719031c1c7fce6f72cf3a5c8c23565f24  /boot/arm192_start.elf
82c6be2c9098c0c9c3d71f45bf16c1dc5adfcf08  /boot/arm224_start.elf
82c6be2c9098c0c9c3d71f45bf16c1dc5adfcf08  /boot/start.elf

Die Aufteilung ergibt sich aus der Datei mit der passenden Prüfsumme, in meinem Fall also 224/32

John La Rooy
quelle
Dies ist zwar nützlich, beantwortet aber nicht die Frage.
Jivings
Ich wollte meinen aktuellen RAM-Split überprüfen, da ich nicht wusste, was der Standard war und er in /boot/config.txt nicht aufgerufen wurde. Leider hatte mein System nur start.elf, daher habe ich den Wert über dmesg aufgespürt. Es gibt eine Zeile (auf meinem System) mit der Aufschrift "Speicher: 448 MB = 448 MB gesamt". Also habe ich einen 448/64 Split.
Großadmiral