Làm cách nào để thay đổi bộ chia RAM?


23

Theo mặc định, Pi được đặt thành RAM 192MiB: 64MiB: VRAM tách. Vì tôi sẽ không sử dụng Pi cho mục đích đồ họa, tôi muốn thay đổi phân chia để phân bổ RAM bình thường hơn để dễ dàng sử dụng trao đổi.


Có một câu hỏi tương tự và câu trả lời có liên quan ở đây .
Jivings

Câu trả lời:


16

Đây là những phần tách RAM và chúng nên được sử dụng cho mục đích gì.

  • 240/16 - Điều này là tốt nhất nếu bạn sẽ không làm gì về đồ họa, ví dụ nếu bạn đang sử dụng Pi làm máy chủ và không có GUI.
  • 224/32 - Điều này có lẽ là tốt nhất nếu bạn đang sử dụng pi với môi trường máy tính để bàn đồ họa cơ bản, không có 3D.
  • 192/64 - Mặc định, có lẽ là mục đích chung tốt nhất.
  • 128/128 - VRAM rất cao, Chỉ thực sự tốt nếu bạn đang thực hiện một nhiệm vụ chuyên sâu về đồ họa.

Có một số phương pháp có thể quản lý việc phân chia RAM:

Thủ công

Bạn có thể thay đổi phân chia RAM bằng phương pháp này:

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

nơi [ram-split]là dung lượng RAM để giao cho CPU. Sau khi khởi động lại, giá trị mới sẽ được áp dụng.

cập nhật rpi

Cập nhật rpi của Hexxeh cũng hỗ trợ thay đổi phân chia RAM, bạn sẽ chạy rpi-update [ram-split]ở đâu [ram-split]là lượng RAM bạn muốn phân bổ cho CPU. Sau khi khởi động lại, phần tách sẽ được áp dụng.

Tập lệnh chọn Ram

Cách tốt nhất có lẽ là sử dụng tập lệnh select4.sh này , sau đó chọn cách chia RAM phù hợp. Sau khi bạn khởi động lại, phần mới sẽ được áp dụng.

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

Đây là một liên kết github trong trường hợp thối liên kết.


nó có yêu cầu khởi động lại sau đó không?
akavel

@akavel Có, vì start.elf chỉ được thực thi khi khởi động. Chỉnh sửa ngay.
hifkanotiks

1
Bốn câu trả lời bạn đã đăng đã được hợp nhất. Mặc dù đôi khi có thể chấp nhận được, tôi không tin rằng có bốn câu trả lời riêng biệt giải quyết các khía cạnh khác nhau của câu hỏi đã thêm bất kỳ giá trị nào trong trường hợp này. Tôi hy vọng không có ai.
Jivings

14

raspi-config

Bạn có thể thay đổi phân chia bộ nhớ bằng cách sử dụng raspi-configtiện ích trong chế độ debian-wheezy hoặc raspbian-wheezy.

Chỉ cần chạy tiện ích: sudo raspi-configsau đó chọn tùy chọn phân chia bộ nhớ (khoảng 8 trong danh sách).


1

Kiểm tra phân chia RAM của bạn

Quá lớn cho một bình luận, nhưng liên quan. Bạn có thể kiểm tra phân chia ram của mình bằng cách chạy lệnh này

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

Sự phân chia được đưa ra bởi tệp có tổng kiểm tra phù hợp, vì vậy trong trường hợp của tôi, đó là 224/32


Mặc dù hữu ích, điều này không trả lời câu hỏi.
Jivings

Tôi muốn kiểm tra phân tách ram hiện tại của mình vì tôi không biết mặc định là gì và nó không được gọi ra trong /boot/config.txt. Thật không may, hệ thống của tôi chỉ có start.elf, vì vậy tôi đã theo dõi giá trị thông qua dmesg. Có một dòng (trên hệ thống của tôi) có nội dung "Bộ nhớ: Tổng số 448MB = 448MB". Vì vậy, tôi có một sự phân chia 448/64.
GrandAdmirus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.