Bazı nedenlerden dolayı https://www.kernel.org/doc/Documentation/blockdev/zram.txt dosyasının çok fazla yanlış yorumlandığı anlaşılıyor.
Açıkça ifade eder:
2) Maksimum sıkıştırma akışı sayısını ayarlayın
Bu özelliğe iletilen değerden bağımsız olarak, ZRAM her zaman çevrimiçi CPU'lar başına bir tane olmak üzere birden fazla sıkıştırma akışı tahsis eder ve böylece aynı anda birkaç sıkıştırma işlemine izin verir. Bazı CPU'lar çevrimdışı olduğunda ayrılan sıkıştırma akışlarının sayısı azalır. Bir UP sistemi çalıştırmadığınız veya yalnızca 1 CPU'nuz çevrimiçi olmadığı sürece artık tek sıkıştırma akışı modu yoktur.
Şu anda kaç akışın mevcut olduğunu bulmak için:
cat /sys/block/zram0/max_comp_streams
Ancak, maksimum akışların 1 olduğu ortak, kalıcı bir şehir efsanesi vardır.
Açıkçası doğru değil.
Zram'ın etkili Chrome OS ve Android'in tek bir cihaz olduğunu kanıtladığı iki işletim sistemi. Ayrıca tweak yapıyorlar page-cluster
:
page-cluster
tek bir denemede birbirini takip eden sayfaların takastan okunduğu sayfa sayısını kontrol eder. Bu, takas karşılığı ile sayfa önbelleği okuma başlığıdır.
Bahsedilen ardışıklık, sanal / fiziksel adresler açısından değil, takas alanı üzerinde ardışıktır - yani birlikte değiştirildikleri anlamına gelir.
Bu logaritmik bir değerdir - sıfıra ayarlamak "1 sayfa", 1'e ayarlamak "2 sayfa", 2'ye ayarlamak "4 sayfa" vb. Anlamına gelir. Sıfır, takas okuma başlığını tamamen devre dışı bırakır.
Varsayılan değer üç (bir seferde sekiz sayfa). İş yükünüz takas yoğunsa bunu farklı bir değere ayarlamanın bazı küçük faydaları olabilir.
Daha düşük değerler, ilk hatalar için daha düşük gecikmeler anlamına gelir, ancak aynı zamanda, ardışık sayfaların getirdiği ardışık sayfaların bir parçası olsaydı, sonraki hatalar için ekstra hatalar ve G / Ç gecikmeleri anlamına gelir.
- için çekirdek belgelerinden/proc/sys/vm/*
Bu yüzden echo "0" > /proc/sys/vm/page-cluster
tek sayfayı zorlamak için kullanın .
Çok fazla neden zram_config, debian / ubuntu paketinden kaynaklanıyor gibi görünüyor, çünkü bazı nedenlerden dolayı zram için çekirdek belgelerle çok az korelasyona sahip görünüyor ve özünde tamamen yanlış olabilecek bir dizi Çinli fısıltı yetiştirdi.
Dosya takas ile her çekirdek için bir takas sürücüsü oluşturuyor musunuz? Belki bu sorularınızı cevaplayabilir. Ayrıca bunu yedeklemek için Googles Chrome OS ve Android, bir diskle eşleşmediği için yukarıdaki sayfa kümesiyle başarılı bir şekilde çalıştığı için gecikme süresi artırılabilir, tek cihazlar.
Ayrıca bir sys-admin için önemli gerçek mem kullanımı veya vm mem kullanımı nedir? Çoğu örnek disk_size yoluyla oluşturmayı gösterir ve mem_limit'i tamamen yok sayar. disk_size = sıkıştırılmamış vm boyutu. mem_limit = gerçek mem ayak izi sınırı.
Disk_size seçimini karmaşık hale getirir çünkü comp_alg oranına bağlı sanal bir maksimum boyut ve kullanılmadığında diskin boyutunun% 0,1'i yükü ve gerçekten mem_limit * (yaklaşık 2 - 4) tutkulu vs iyimserlik.
zram_config, önceki hizmet kullanımını bile kontrol etmez ve aşağıdaki gibi zram sys sınıfının basit bir kontrolü yapılırken üzerine yazar.
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
}