[raspberry pi3] zram設置


linux 3.15之后添加了個和mac一樣的功能,內存壓縮zram, 之前還有個zswap, zram通常是以模塊的方式被放在系統里面的,以便在可以根據需求的不同,定制化加載.

 

raspberry pi3的1g內存容量還是太小了,設定了zram可以擠點內存出來用, android4.4的數據貌似是40%.

 

貼代碼(從desktop的ubuntu上抄來的)

設定代碼:

#!/bin/sh

# load dependency modules
NRDEVICES=$(grep -c ^processor /proc/cpuinfo | sed 's/^0$/1/')
if modinfo zram | grep -q ' zram_num_devices:' 2>/dev/null; then
  MODPROBE_ARGS="zram_num_devices=${NRDEVICES}"
elif modinfo zram | grep -q ' num_devices:' 2>/dev/null; then
  MODPROBE_ARGS="num_devices=${NRDEVICES}"
else
  exit 1
fi
modprobe zram $MODPROBE_ARGS

# Calculate memory to use for zram (1/2 of ram)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/  *.*//'`
mem=$(((totalmem / 2 / ${NRDEVICES}) * 1024))

# initialize the devices
for i in $(seq ${NRDEVICES}); do
  DEVNUMBER=$((i - 1))
  echo $mem > /sys/block/zram${DEVNUMBER}/disksize
  mkswap /dev/zram${DEVNUMBER}
  swapon -p 5 /dev/zram${DEVNUMBER}
done

關閉代碼:

#!/bin/sh

if DEVICES=$(grep zram /proc/swaps | awk '{print $1}'); then
  for i in $DEVICES; do
    swapoff $i
  done
fi
rmmod zram

想要開機就設定的話,只要把設定的代碼添加到/etc/rc.local,開機自動設定

 

啟動與否可以使用下面的命令查看:

swapon -s

輸出結果如下

Filename                Type        Size    Used    Priority
/dev/zram0                                 partition    118464    0    5
/dev/zram1                                 partition    118464    0    5
/dev/zram2                                 partition    118464    0    5
/dev/zram3                                 partition    118464    0    5

可以看到分了4塊和processor的數量是相同, 總數是總可用的物理內存的一半,至於為啥和processor數一樣會比較好,原因未知

 

 

# 2016/09/03 

經過這么多天的測試和使用,結論是raspberry 目前的版本還是不要使用比較好,貌似有bug,某些情況下會導致當你還有空閑內存的時候,內存分配不出來,現象如很多程序已啟動就segment fault了, 需要重啟機器才能夠使用, 不推薦使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM