Comment puis-je changer la répartition de la RAM?

23

Par défaut, le Pi est défini sur un partage de 192 Mo: 64 Mo de RAM: VRAM. Comme je n'utiliserai pas le Pi à des fins graphiques, je voudrais changer la répartition pour allouer plus de RAM normale pour faciliter l'utilisation du swap.

hifkanotiks
la source
Il y a une question similaire et une réponse pertinente ici .
Jivings

Réponses:

16

Ce sont les divisions de la RAM et à quoi elles doivent être utilisées.

  • 240/16 - C'est mieux si vous ne faites rien de graphique, par exemple si vous utilisez le Pi comme serveur et n'avez pas d'interface graphique.
  • 224/32 - C'est probablement mieux si vous utilisez le pi avec un environnement de bureau graphique basique, sans 3D.
  • 192/64 - La valeur par défaut, probablement la meilleure à usage général.
  • 128/128 - VRAM très élevée, seulement très bon si vous effectuez une tâche très intensive graphiquement.

Il existe plusieurs méthodes pour gérer la répartition de la RAM:

Manuellement

Vous pouvez modifier la répartition de la RAM en utilisant cette méthode:

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

[ram-split]est la quantité de RAM à allouer au CPU. Après un redémarrage, la nouvelle valeur sera appliquée.

rpi-update

La mise à jour rpi d'Hexxeh prend également en charge la modification de la répartition de la RAM, vous exécuteriez rpi-update [ram-split][ram-split]est la quantité de RAM que vous souhaitez allouer au CPU. Après un redémarrage, la division sera appliquée.

Script du sélecteur Ram

La meilleure façon est probablement d'utiliser ce script select4.sh , puis de sélectionner la division RAM appropriée. Après le redémarrage, le nouveau fractionnement sera appliqué.

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

Voici un lien github en cas de pourriture de lien.

hifkanotiks
la source
faut-il un redémarrage par la suite?
akavel
@akavel Oui, car start.elf n'est exécuté qu'au démarrage. Modification maintenant.
hifkanotiks
1
Les quatre réponses que vous avez publiées ont été fusionnées. Bien que parfois acceptable, je ne pense pas que le fait d'avoir quatre réponses distinctes traitant différents aspects de la question ait ajouté une valeur dans ce cas. J'espère que personne ne s'y oppose.
Jivings
14

raspi-config

Vous pouvez modifier la répartition de la mémoire à l'aide de l' raspi-configutilitaire dans debian-wheezy ou raspbian-wheezy.

Exécutez simplement l'utilitaire: sudo raspi-configpuis sélectionnez l'option de partage de la mémoire (il s'agit du 8ème de la liste).

Jon Egerton
la source
1

Vérification de votre répartition RAM

Trop gros pour un commentaire, mais lié. Vous pouvez vérifier votre fractionnement RAM en exécutant cette commande

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

La division est donnée par le fichier qui a la somme de contrôle correspondante, donc dans mon cas, c'est 224/32

John La Rooy
la source
Bien qu'utile, cela ne répond pas à la question.
Jivings
Je voulais vérifier mon fractionnement de RAM actuel parce que je ne savais pas quelle était la valeur par défaut et elle n'a pas été appelée dans /boot/config.txt. Malheureusement, mon système n'avait que start.elf, j'ai donc retrouvé la valeur via dmesg. Il y a une ligne (sur mon système) qui dit "Mémoire: 448 Mo = 448 Mo au total". J'ai donc un partage 448/64.
Grand