किसी कारण से https://www.kernel.org/doc/Documentation/blockdev/zram.txt की बहुत गलत व्याख्या प्रतीत होती है
यह स्पष्ट रूप से बताता है:
2) अधिकतम संख्या में संपीड़न धाराएँ निर्धारित करें,
भले ही इस विशेषता को मान दिया गया हो, ZRAM हमेशा कई संपीड़न धाराओं को आवंटित करेगा - एक प्रति ऑनलाइन सीपीयू - इस प्रकार कई समवर्ती संपीड़न संचालन की अनुमति देता है। सीपीयू के कुछ ऑफ़लाइन हो जाने पर आवंटित संपीड़न धाराओं की संख्या कम हो जाती है। अब तक कोई एकल-संपीड़न-स्ट्रीम मोड नहीं है, जब तक कि आप एक यूपी सिस्टम नहीं चला रहे हैं या केवल 1 सीपीयू ऑनलाइन है।
यह जानने के लिए कि वर्तमान में कितनी धाराएँ उपलब्ध हैं:
cat /sys/block/zram0/max_comp_streams
लेकिन एक आम, लगातार शहरी मिथक है कि अधिकतम धारा 1 है।
यह स्पष्ट रूप से सच नहीं है।
दो OS जहाँ zram ने प्रभावी Chrome OS और Android आपको एकल डिवाइस साबित किया है। इसके अलावा वे tweak page-cluster
:
page-cluster
उन पृष्ठों की संख्या को नियंत्रित करता है जिन तक लगातार पृष्ठों को एक ही प्रयास में स्वैप से पढ़ा जाता है। यह कैशे रीडहेड पेज पर स्वैप करने के लिए है।
उल्लिखित वाणिज्य दूतावास आभासी / भौतिक पते के संदर्भ में नहीं है, लेकिन स्वैप स्थान पर लगातार - इसका मतलब है कि उन्हें एक साथ स्वैप किया गया था।
यह एक लघुगणक मूल्य है - इसे शून्य पर सेट करने का अर्थ है "1 पृष्ठ", इसे 1 का अर्थ है "2 पृष्ठ", इसे 2 के लिए सेट करने का अर्थ है "4 पृष्ठ", आदि शून्य पूरी तरह से स्वैपहैड को निष्क्रिय करता है।
डिफ़ॉल्ट मान तीन (एक समय में आठ पृष्ठ) है। यदि आपका कार्यभार स्वैप-गहन है, तो इसे एक अलग मूल्य पर ट्यूनिंग करने में कुछ छोटे लाभ हो सकते हैं।
निम्न मानों का अर्थ है प्रारंभिक दोषों के लिए कम विलंबता, लेकिन एक ही समय में अतिरिक्त दोष और I / O दोषों का पालन करने के लिए यदि वे उस निरंतर पृष्ठों का हिस्सा होते हैं जो रीडहेड में लाया जाता है।
- के लिए कर्नेल प्रलेखन से/proc/sys/vm/*
इसलिए echo "0" > /proc/sys/vm/page-cluster
सिंगल पेज को मजबूर करने के लिए उपयोग करें।
बहुत से लगता है कि zram_config से डेबियन / ubuntu पैकेज है कि किसी कारण के लिए zram के लिए कर्नेल दस्तावेजों के साथ बहुत कम सहसंबंध है लगता है और मूल रूप से पूरी तरह से गलत हो सकता है कि चीनी फुसफुसाते हुए की एक श्रृंखला पर प्रतिबंध लगा दिया है।
फ़ाइल स्वैप के साथ आप प्रत्येक कोर के लिए एक स्वैप ड्राइव बनाते हैं? हो सकता है कि यह आपके सवालों का जवाब दे सकता है। इसके अलावा Googles Chrome OS और Android का बैकअप लेने के लिए, जो उपरोक्त पृष्ठ-क्लस्टर के साथ सफलतापूर्वक काम करता है क्योंकि इसकी डिस्क से मेल नहीं खाता है इसलिए विलंबता में सुधार किया जा सकता है, एकल डिवाइस।
इसके अलावा एक sys- व्यवस्थापक के लिए महत्वपूर्ण वास्तविक मेम उपयोग या वीएम मेम उपयोग क्या है? अधिकांश उदाहरण disk_size के माध्यम से निर्माण दिखाते हैं और पूरी तरह से mem_limit को अनदेखा करते हैं। disk_size = असम्पीडित vm आकार। mem_limit = वास्तविक मेम पदचिह्न सीमा।
यह डिस्क_साइज़ पसंद को भ्रमित करता है क्योंकि इसका वर्चुअल अधिकतम आकार कंप_लग अनुपात पर निर्भर है और डिस्क के आकार का 0.1% ओवरहेड है जब उपयोग में नहीं होता है और वास्तव में मेमुलिमिट * (लगभग 2 - 4) का एक फ्रेमवर्क है। आशावाद।
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
}