ด้วยเหตุผลบางอย่างดูเหมือนว่าจะมีการตีความผิด ๆ มากมายของhttps://www.kernel.org/doc/Documentation/blockdev/zram.txt
ชัดเจนว่า:
2) ตั้งค่าจำนวนสูงสุดของการบีบอัดสตรีม
โดยไม่คำนึงถึงค่าที่ส่งผ่านไปยังแอ็ตทริบิวต์นี้ ZRAM จะจัดสรรสตรีมการบีบอัดหลาย ๆ ครั้งเสมอ - หนึ่งรายการต่อซีพียูออนไลน์ - จำนวนสตรีมการบีบอัดที่จัดสรรจะลดลงเมื่อ CPU บางตัวออฟไลน์ ไม่มีโหมดการบีบอัดสตรีมอีกต่อไปเว้นแต่ว่าคุณกำลังใช้ระบบ UP หรือมีเพียง 1 CPU ออนไลน์
หากต้องการทราบจำนวนสตรีมที่มีอยู่ในปัจจุบัน:
cat /sys/block/zram0/max_comp_streams
แต่มีตำนานเมืองที่พบบ่อยและไม่หยุดยั้งที่กระแสสูงสุดคือ 1
เห็นได้ชัดว่ามันไม่เป็นความจริง
สองระบบปฏิบัติการที่ zram พิสูจน์ให้เห็นว่า Chrome OS และ Android มีประสิทธิภาพสำหรับคุณในอุปกรณ์เดียว พวกเขายังปรับแต่งpage-cluster
:
page-cluster
ควบคุมจำนวนหน้าสูงสุดที่หน้าต่อเนื่องถูกอ่านจากการสลับในครั้งเดียว นี่คือการสลับคู่กับการอ่านแคชหน้า
การติดต่อที่ถูกต้องนั้นไม่ได้อยู่ในรูปของที่อยู่เสมือน / ที่อยู่จริง แต่ต่อเนื่องกันบนพื้นที่สว็อป - นั่นหมายความว่าพวกมันถูกสับเปลี่ยนกัน
มันเป็นค่าลอการิทึม - ตั้งค่าเป็นศูนย์หมายถึง "1 หน้า" การตั้งค่าเป็น 1 หมายถึง "2 หน้า" การตั้งค่าเป็น 2 หมายถึง "4 หน้า" ฯลฯ Zero ปิดการใช้งานการสลับ readahead อย่างสมบูรณ์
ค่าเริ่มต้นคือสาม (แปดหน้าพร้อมกัน) อาจมีประโยชน์เล็กน้อยในการปรับค่านี้ให้เป็นค่าอื่นหากเวิร์กโหลดของคุณมีการแลกเปลี่ยนอย่างมาก
ค่าที่ต่ำกว่าหมายถึงเวลาในการตอบสนองที่ต่ำกว่าสำหรับความผิดพลาดเริ่มต้น แต่ในเวลาเดียวกันความผิดพลาดเพิ่มเติมและความล่าช้าของ I / O สำหรับความผิดพลาดดังต่อไปนี้หากพวกเขาเป็นส่วนหนึ่งของหน้าต่อเนื่อง
- จากเอกสารประกอบเคอร์เนลสำหรับ/proc/sys/vm/*
ดังนั้นใช้echo "0" > /proc/sys/vm/page-cluster
เพื่อบังคับให้หน้าเดียว
ดูเหมือนว่ามีสาเหตุมาจาก zram_config แพ็คเกจเดเบียน / อูบุนตูซึ่งด้วยเหตุผลบางอย่างดูเหมือนว่าจะมีความสัมพันธ์น้อยมากกับเอกสารเคอร์เนลสำหรับ Zram และมีการปรับปรุงชุดของกระซิบจีนที่สำคัญอาจผิดอย่างสมบูรณ์
คุณใช้ swap file เพื่อสร้าง swap drive สำหรับแต่ละคอร์หรือไม่ บางทีนั่นอาจตอบคำถามของคุณ นอกจากนี้เพื่อสำรองข้อมูล Googles Chrome OS & Android ซึ่งประสบความสำเร็จในการใช้งานกับกลุ่มเพจด้านบนเนื่องจากไม่สามารถจับคู่ดิสก์เพื่อให้สามารถปรับปรุงเวลาแฝงในการปรับปรุงอุปกรณ์เดี่ยวได้
นอกจากนี้สำหรับผู้ดูแลระบบ sys การใช้งาน mem ที่สำคัญจริง ๆ หรือการใช้ vm mem คืออะไร? ตัวอย่างส่วนใหญ่แสดงการสร้างผ่าน disk_size และไม่สนใจ mem_limit ทั้งหมด disk_size = ขนาด vm ที่ไม่บีบอัด mem_limit = ขีด จำกัด การปล่อยจริงของ mem
มันทำให้การเลือก disk_size ทำให้สับสนเนื่องจากขนาดสูงสุดเสมือนขึ้นอยู่กับอัตราส่วน comp_alg และค่าโสหุ้ย 0.1% ของขนาดของดิสก์เมื่อไม่ได้ใช้งานและเป็นการคาดเดา mem_limit * (ประมาณ 2 - 4) ของ vs vs frugal แง่ดี
zram_config ไม่ได้ตรวจสอบการใช้บริการก่อนหน้านี้และเขียนทับในขณะที่การตรวจสอบอย่างง่ายของคลาส zram sys อย่างที่จะทำ
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
}