Untuk beberapa alasan tampaknya ada banyak salah tafsir tentang https://www.kernel.org/doc/Documentation/blockdev/zram.txt
Ini dengan jelas menyatakan:
2) Mengatur jumlah maksimum aliran kompresi
Terlepas dari nilai yang diteruskan ke atribut ini, ZRAM akan selalu mengalokasikan beberapa aliran kompresi - satu per CPU online - sehingga memungkinkan beberapa operasi kompresi bersamaan. Jumlah aliran kompresi yang dialokasikan turun ketika beberapa CPU menjadi offline. Tidak ada mode aliran kompresi tunggal lagi, kecuali jika Anda menjalankan sistem UP atau hanya memiliki 1 CPU online.
Untuk mengetahui berapa banyak aliran yang tersedia saat ini:
cat /sys/block/zram0/max_comp_streams
Tetapi ada mitos urban yang umum dan persisten bahwa max stream adalah 1.
Jelas tidak benar.
Dua OS di mana zram telah membuktikan Chrome OS & Android yang efektif sebagai satu perangkat. Mereka juga men-tweak page-cluster
:
page-cluster
mengontrol jumlah halaman hingga halaman berurutan dibaca dari swap dalam satu upaya. Ini adalah swap rekanan swap dari mitra ke halaman.
Consecutivity yang disebutkan bukan dalam hal alamat virtual / fisik, tetapi berturut-turut pada ruang swap - itu berarti mereka ditukar bersama.
Ini adalah nilai logaritmik - pengaturan ke nol berarti "1 halaman", pengaturan ke 1 berarti "2 halaman", pengaturan ke 2 berarti "4 halaman", dll. Nol menonaktifkan swap readahead sepenuhnya.
Nilai default adalah tiga (delapan halaman sekaligus). Mungkin ada beberapa manfaat kecil dalam menyetel ini ke nilai yang berbeda jika beban kerja Anda intensif untuk swap.
Nilai yang lebih rendah berarti latensi yang lebih rendah untuk kesalahan awal, tetapi pada saat yang sama kesalahan tambahan dan penundaan I / O untuk mengikuti kesalahan jika mereka akan menjadi bagian dari halaman berturut-turut yang akan dibawa oleh readahead.
- dari dokumentasi kernel untuk/proc/sys/vm/*
Jadi gunakan echo "0" > /proc/sys/vm/page-cluster
untuk memaksa satu halaman.
Banyak yang tampaknya berasal dari zram_config paket debian / ubuntu yang karena beberapa alasan tampaknya memiliki korelasi yang sangat sedikit dengan dokumen kernel untuk zram dan telah menghasilkan serangkaian bisikan Cina yang pada dasarnya bisa sepenuhnya salah.
Dengan swap file, apakah Anda membuat drive swap untuk setiap inti? Mungkin itu bisa menjawab pertanyaan Anda. Juga untuk mencadangkan ini Googles Chrome OS & Android yang berhasil menggunakan cluster-halaman di atas karena tidak cocok dengan disk sehingga latensi dapat ditingkatkan, satu perangkat.
Juga untuk sys-admin apa yang penting penggunaan mem aktual atau penggunaan mem vm? Sebagian besar contoh memperlihatkan kreasi melalui disk_size dan abaikan mem_limit. disk_size = ukuran vm tidak terkompresi. mem_limit = batas jejak kaki aktual.
Ini semacam membuat pilihan disk_size membingungkan karena ukurannya max virtual tergantung pada rasio comp_alg dan overhead 0,1% dari ukuran disk ketika tidak digunakan dan benar-benar merupakan perkiraan angka dari mem_limit * (sekitar 2 - 4) dari frugal vs optimisme.
zram_config bahkan tidak memeriksa penggunaan layanan sebelumnya dan menimpa sementara pemeriksaan sederhana dari kelas sistem zram seperti kehendak di bawah ini.
createZramSwaps () {
totalmem=$(free|awk '/^Mem:/{print $2}')
mem=$((( totalmem * MEM_FACTOR / 100 / BIG_CORES ) * 1024))
# Check Zram Class created
ZRAM_SYS_DIR='/sys/class/zram-control'
if [ ! -d "${ZRAM_SYS_DIR}" ]; then
modprobe zram
RAM_DEV='0'
echo ${COMP_ALG_SWAP} > /sys/block/zram${RAM_DEV}/comp_algorithm
echo ${mem} > /sys/block/zram${RAM_DEV}/disksize
mkswap /dev/zram${RAM_DEV}
swapon -p ${SWAP_PRI} /dev/zram${RAM_DEV}
else
RAM_DEV=$(cat /sys/class/zram-control/hot_add)
echo ${COMP_ALG_SWAP} > /sys/block/zram${RAM_DEV}/comp_algorithm
echo ${mem} > /sys/block/zram${RAM_DEV}/disksize
mkswap /dev/zram${RAM_DEV}
swapon -p ${SWAP_PRI} /dev/zram${RAM_DEV}
fi
if [ "$BIG_CORES" -gt 1 ];then
for i in $(seq $((BIG_CORES - 1))); do
RAM_DEV=$(cat /sys/class/zram-control/hot_add)
echo ${COMP_ALG_SWAP} > /sys/block/zram${RAM_DEV}/comp_algorithm
echo ${mem} > /sys/block/zram${RAM_DEV}/disksize
mkswap /dev/zram${RAM_DEV}
swapon -p ${SWAP_PRI} /dev/zram${RAM_DEV}
done
fi
}