¿Cómo puedo cambiar la división de RAM?

23

Por defecto, el Pi está configurado en 192MiB: 64MiB RAM: división VRAM. Como no utilizaré el Pi con fines gráficos, me gustaría cambiar la división para asignar más RAM normal para facilitar el uso del intercambio.

hifkanotiks
fuente
Hay una pregunta similar y una respuesta relevante aquí .
Jivings

Respuestas:

16

Estas son las divisiones de RAM y para qué deben usarse.

  • 240/16: esto es mejor si no va a hacer nada gráfico, por ejemplo, si usa Pi como servidor y no tiene GUI.
  • 224/32: esto probablemente sea mejor si está utilizando la pi con un entorno de escritorio gráfico básico, sin 3D.
  • 192/64: el valor predeterminado, probablemente el mejor de uso general.
  • 128/128 - VRAM muy alta, solo realmente bueno si está haciendo una tarea muy intensiva gráficamente.

Existen varios métodos por los cuales se puede administrar la división de RAM:

A mano

Puede cambiar la división de RAM utilizando este método:

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

donde [ram-split]es la cantidad de RAM para asignar a la CPU. Después de reiniciar, se aplicará el nuevo valor.

rpi-update

La actualización rpi de Hexxeh también es compatible con el cambio de la división de RAM, ejecutaría rpi-update [ram-split]dónde [ram-split]está la cantidad de RAM que desea asignar a la CPU. Después de reiniciar, se aplicará la división.

Script Selector Ram

La mejor manera es probablemente usar este script select4.sh , luego seleccionar la división de RAM adecuada. Después de reiniciar, se aplicará la nueva división.

#!/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

Aquí hay un enlace github en caso de rotura del enlace.

hifkanotiks
fuente
¿requiere reiniciar después?
akavel
@akavel Sí, ya que start.elf solo se ejecuta al inicio. Editando ahora.
hifkanotiks
1
Las cuatro respuestas que publicaste se han fusionado. Aunque a veces es aceptable, no creo que tener cuatro respuestas separadas que aborden diferentes aspectos de la pregunta agrega valor en este caso. Espero que nadie se oponga.
Jivings
14

raspi-config

Puede cambiar la división de memoria utilizando la raspi-configutilidad en debian-wheezy o raspbian-wheezy.

Simplemente ejecute la utilidad: sudo raspi-configluego seleccione la opción de división de memoria (es la octava de la lista).

Jon Egerton
fuente
1

Verificando tu RAM dividida

Demasiado grande para un comentario, pero relacionado. Puede verificar su ram ram ejecutando este comando

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

La división está dada por el archivo que tiene la suma de verificación correspondiente, por lo que en mi caso es 224/32

John La Rooy
fuente
Aunque útil, esto no responde la pregunta.
Jivings
Quería verificar mi ram ram actual porque no sabía cuál era el valor predeterminado y no se llamó en /boot/config.txt. Desafortunadamente, mi sistema solo tenía start.elf, así que rastreé el valor a través de dmesg. Hay una línea (en mi sistema) que dice "Memoria: 448 MB = 448 MB en total". Entonces tengo una división 448/64.
GrandAdmiral