Bagaimana saya bisa mengubah pemecahan RAM?

23

Secara default, Pi diatur ke 192MiB: 64MiB RAM: VRAM split. Karena saya tidak akan menggunakan Pi untuk tujuan grafis, saya ingin mengubah pemisahan untuk mengalokasikan lebih banyak RAM normal untuk memudahkan penggunaan swap.

hifkanotiks
sumber
Ada pertanyaan serupa dan jawaban yang relevan di sini .
Jivings

Jawaban:

16

Ini adalah pemisahan RAM dan untuk apa mereka digunakan.

  • 240/16 - Ini yang terbaik jika Anda tidak melakukan apa-apa grafis, misalnya jika Anda menggunakan Pi sebagai server dan tidak memiliki GUI.
  • 224/32 - Ini mungkin yang terbaik jika Anda menggunakan pi dengan lingkungan desktop grafis dasar, tanpa 3D.
  • 192/64 - Default, mungkin tujuan umum terbaik.
  • 128/128 - VRAM sangat tinggi, Hanya sangat bagus jika Anda melakukan tugas yang sangat intensif secara grafis.

Ada beberapa metode yang dengannya RAM dapat dikelola:

Secara manual

Anda dapat mengubah pemecahan RAM menggunakan metode ini:

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

di mana [ram-split]jumlah RAM untuk dialokasikan ke CPU. Setelah reboot, nilai baru akan diterapkan.

rpi-perbarui

Pemutakhiran rpi Hexxeh juga mendukung perubahan pemisahan RAM, Anda akan menjalankan di rpi-update [ram-split]mana [ram-split]jumlah RAM yang ingin Anda alokasikan ke CPU. Setelah reboot, perpecahan akan diterapkan.

Script Pemilih Ram

Cara terbaik mungkin adalah dengan menggunakan skrip select4.sh ini , lalu memilih pemisahan RAM yang sesuai. Setelah Anda me-reboot split baru akan diterapkan.

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

Berikut ini tautan github jika tautan busuk.

hifkanotiks
sumber
apakah itu memerlukan reboot setelah itu?
aliasvel
@akavel Ya, karena start.elf hanya dieksekusi saat startup. Editing sekarang.
hifkanotiks
1
Keempat jawaban yang Anda poskan telah digabungkan. Meskipun kadang-kadang dapat diterima, saya tidak percaya bahwa memiliki empat jawaban terpisah yang membahas berbagai aspek pertanyaan menambah nilai dalam kasus ini. Saya harap tidak ada yang keberatan.
Jivings
14

raspi-config

Anda dapat mengubah pemisahan memori menggunakan raspi-configutilitas dalam debian-wheezy atau raspbian-wheezy.

Jalankan saja utilitas: sudo raspi-configlalu pilih opsi pemecahan memori (ini tentang yang ke-8 dalam daftar).

Jon Egerton
sumber
1

Memeriksa pemisahan RAM Anda

Terlalu besar untuk dikomentari, tetapi terkait. Anda dapat memeriksa split ram Anda dengan menjalankan perintah ini

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

Perpecahan diberikan oleh file yang memiliki checksum yang cocok, jadi dalam kasus saya itu 224/32

John La Rooy
sumber
Meskipun bermanfaat, ini tidak menjawab pertanyaan.
Jivings
Saya ingin memeriksa ram split saya saat ini karena saya tidak tahu apa defaultnya dan tidak dipanggil di /boot/config.txt. Sayangnya sistem saya baru saja mulai. Jadi saya melacak nilainya melalui dmesg. Ada garis (di sistem saya) yang mengatakan "Memori: 448MB = 448MB total". Jadi saya punya perpecahan 448/64.
GrandAdmiral