কীভাবে সঠিকভাবে জ্রাম এবং অদলবদল করবেন


9

আমি নতুন 3.0 কার্নেলটি কনফিগার করছি এবং সংকলন করছি। কিছু সময়ের জন্য আমি যে গুডিটি ব্যবহার করার পরিকল্পনা করেছি তার মধ্যে একটি (প্যাচিং করে) 3.0.০ এ একীভূত করা হয়েছিল তা হল জ্রাম।

এইচডিডি swap এবং zram swap উভয়ই সেট করে রাখা সম্ভব যেহেতু zram প্রথমে ব্যবহৃত হয় এবং কেবল ছিটানো পৃষ্ঠাগুলি প্রকৃত অদলবদলে রাখা হয়?

উত্তর:


8

সিডিনোট: প্রতি-সিপিইউ লক করার কারণে, একক বড়ের পরিবর্তে সিপিইউ (মোডপ্রোব জ্রাম_নাম_দেবস = এন জ্রাম) হিসাবে অনেকগুলি জ্রাম -অদলবদল হওয়া জরুরী। RTFM!


1
[তথ্যসূত্র প্রয়োজন]? লিনাক্স ডকুমেন্টেশন বা গুগলে আমি পুনঃসংশোধনটি খুঁজে পাচ্ছি না।
ম্যাকিয়েজ পাইচোটকা

ডিফল্ট হিসাবে ডকুমেন্টেশন অনুযায়ী max_comp_streamsবলে মনে হচ্ছে । ২০১১ সালে সেই প্যারামিটারটি বিদ্যমান ছিল কিনা তা আমি পরীক্ষা করে দেখিনি তবে এটি একাধিক স্ব্যাপ ফাইলের পরে আরও ভাল বিকল্প বলে মনে হচ্ছে। 1
ম্যাকিয়েজ পাইচোটকা

1
zram-configউবুন্টু (এবং সম্ভবত ডেবিয়ান) এর অধীনে প্যাকেজটি পরীক্ষা করে আমি উল্লেখ করেছি যে কনফিগারেশনটি প্রতি কোর বা থ্রেডের মধ্যে 1 (একটি পুরাতন E2140 দ্বৈত কোরের উপর 2 এবং i3-3220-তে 4) ডিফল্ট হয়
এল্ডার

আকর্ষণীয়, এবং এটি /etc/init/zram-config.conf পড়েও বোঝা বেশ স্পষ্ট বলে মনে হচ্ছে
কুম্ভ বিদ্যুৎ

1
এই সিডনোটটি কার্নেল সংস্করণ 3.15 হিসাবে অপ্রচলিত। আপনার কাছে এখন একক, বৃহত্তর zram এর জন্য একাধিক সংক্ষেপণ থ্রেড থাকতে পারে।
পার্কিনস

6

swapon-pঅগ্রাধিকার সেট করে যা সুইচ আছে । আমি সেট আপ করতে পারি:

swapon -p 32767 /dev/zram0
swapon -p 0 /dev/my-lvm-volume/swap

অথবা ইন / ইত্যাদি / এফএসটিএবি:

/dev/zram0              none swap sw,pri=32767 0 0
/dev/my-lvm-volume/swap none swap sw,pri=0     0 0

সম্পাদনা: কেবলমাত্র একটি সম্পূর্ণ সমাধানের জন্য - যেমন লাইনটি উদেব বিধি হিসাবে সহায়ক হতে পারে:

KERNEL=="zram0", ACTION=="add", ATTR{disksize}="1073741824", RUN="/sbin/mkswap /$root/$name"

1

পাস করে আপনি কতটি জ্রাম ডিভাইস চান তা নির্বাচন করুন

zram.num_devices=4

কার্নেল পরামিতি বা সরাসরি মডিউল (zram ছাড়া।)। ডিফল্ট মান ১। জরাম আপনার তৈরি ডিভাইসের সংখ্যা হিসাবে যতগুলি সিপাস ব্যবহার করতে সক্ষম হবে।

Zram0 ডিভাইস প্রস্তুত করুন, আকারটি 1GB এ সেট করুন।

echo 1000000000 > /sys/block/zram0/disksize

বিকল্পভাবে আপনি এটি উদেব বিধি দ্বারা করতে পারেন। Zram0 এ অদলবদল তৈরি করুন

mkswap /dev/zram0

এবং অন্যান্য সোয়াপ ডিভাইসের চেয়ে উচ্চ অগ্রাধিকার সহ এটি সক্ষম করুন

swapon -p 32767 /dev/zram0

আপনি এখানে কার্নেল এবং ডিস্ট্রো সংস্করণ লিখছেন?
সিবিহে

রেকর্ডের জন্য, আপনি 14.04.5 ডেস্কটপ উবুন্টুতে পরামর্শ হিসাবে অগ্রসর হওয়া ব্যর্থ হয়েছে। বিশেষ করে, যখন আমি এর অগ্রাধিকার সেট করতে চেষ্টা zram0এবং zram1একটি 2 নিউক্লিয়াস ইন্টেল T9300 বাক্সে মান থেকে 10, এটা আমার সাথে ছোঁড়ার: swapon: /dev/zram0 or 1: swapon failed: Device or resource busy
সিবিহে

1

কিছু কারণে https://www.kernel.org/doc/Docamentation/ blockdev/zram.txt- এর অনেক ভুল ব্যাখ্যা রয়েছে বলে মনে হচ্ছে

এটি পরিষ্কারভাবে বলে:

২) কমপ্রেশন স্ট্রিমের সর্বাধিক সংখ্যক সেট করুন
এই গুণাবলীর কাছে মানটি নির্বিশেষে ZRAM সর্বদা একাধিক সংক্ষেপণ স্ট্রিম বরাদ্দ করবে - অনলাইনে সিপিইউতে একটি - এইভাবে বেশ কয়েকটি সমকালীন সংক্ষেপণ ক্রিয়াকলাপের অনুমতি দেয়। কিছু সিপিইউ অফলাইন হয়ে গেলে বরাদ্দ হওয়া সংক্ষেপণের স্ট্রিমগুলির সংখ্যা কমে যায়। আপনি কোনও ইউপি সিস্টেম চালাচ্ছেন বা অনলাইনে কেবলমাত্র 1 টি সিপিইউ না থাকলে এখন পর্যন্ত আর কোনও একক-সংক্ষেপণ-প্রবাহের মোড নেই।

বর্তমানে কয়টি স্ট্রিম উপলব্ধ তা জানতে:

cat /sys/block/zram0/max_comp_streams

তবে একটি সাধারণ, ধ্রুবক নগরকথার প্রচলন রয়েছে যে সর্বাধিক স্ট্রিমগুলি 1 1

এটা স্পষ্টত সত্য নয়।

দুটি ওএস যেখানে জ্রাম কার্যকর ক্রোম ওএস এবং অ্যান্ড্রয়েড আপনাকে একক ডিভাইস প্রমাণ করেছে। তারা টুইট page-cluster:

page-clusterএকক প্রয়াসে অদলবদল থেকে পরপর পৃষ্ঠাগুলি পঠন করা পাতার সংখ্যা নিয়ন্ত্রণ করে। এটি পৃষ্ঠার ক্যাশে রিডহেহেডের সোয়াপ পাল্টা।
উল্লিখিত পবিত্রতা ভার্চুয়াল / শারীরিক ঠিকানাগুলির ক্ষেত্রে নয়, তবে ক্রমাগত স্বাপের জায়গায় - এর অর্থ তারা একসাথে অদলবদল হয়েছিল।

এটি একটি লোগারিথমিক মান - এটি শূন্যে সেট করার অর্থ "1 পৃষ্ঠা", এটির 1 সেট করার অর্থ "2 পৃষ্ঠাগুলি", এটির 2 সেট করার অর্থ "4 পৃষ্ঠাগুলি" ইত্যাদি Z

ডিফল্ট মান তিনটি (একসাথে আট পৃষ্ঠা)। আপনার কাজের চাপ অদলবদল-নিবিড় থাকলে এটি একটি অন্য মূল্যের সাথে সুর করার কিছু ছোট সুবিধা থাকতে পারে।

নিম্ন মানের মানে প্রাথমিক ত্রুটির জন্য নিম্ন বিলম্বিত হওয়া, তবে একই সাথে অতিরিক্ত ত্রুটিগুলি এবং I / O বিলম্বগুলি নিম্নলিখিত দোষগুলির জন্য বিলম্বিত করে যদি তারা সেই ধারাবাহিক পৃষ্ঠাগুলির অংশ হয়ে থাকে তবে পঠন শিরোনামটি এনেছে।

                - কার্নেল ডকুমেন্টেশন থেকে/proc/sys/vm/*

সুতরাং echo "0" > /proc/sys/vm/page-clusterএকক পৃষ্ঠা জোর করতে ব্যবহার করুন ।

ডিবিয়ান / উবুন্টু প্যাকেজটি zram_config থেকে অনেকটা উদ্ভূত হয়েছে বলে মনে হয় যে কোনও কারণে zram এর জন্য কার্নেল নথিগুলির সাথে খুব কম সম্পর্ক রয়েছে এবং একাধিক চীনা ফিসফিসার জন্ম দিয়েছে যে মূলত পুরোপুরি ভুল হতে পারে।

ফাইল সোয়াপ দিয়ে আপনি কি প্রতিটি কোরের জন্য একটি সোয়াপ ড্রাইভ তৈরি করেন? হতে পারে এটি আপনার প্রশ্নের উত্তর দিতে পারে। এছাড়াও এটিকে গুগলস ক্রোম ওএস এবং অ্যান্ড্রয়েড ব্যাক আপ করার জন্য যা উপরের পৃষ্ঠা-ক্লাস্টারের সাথে সফলভাবে নিয়োগ করেছে এটি কোনও ডিস্কের সাথে মেলে না, যাতে একক ডিভাইসগুলি বিলম্বিত হতে পারে।

এছাড়াও সিস-অ্যাডমিনের জন্য গুরুত্বপূর্ণ আসল মেম ব্যবহার বা ভিএম মেম ব্যবহার কী? বেশিরভাগ উদাহরণগুলি ডিস্ক_সাইজের মাধ্যমে সৃষ্টি দেখায় এবং মেম_লিমিটকে সম্পূর্ণ উপেক্ষা করে। ডিস্ক_সাইজ = কমপ্রেসড ভিএম আকার। mem_limit = প্রকৃত মেমের পদচিহ্ন সীমা।

এটি ধরণের ডিস্ক_সাইজ পছন্দকে বিভ্রান্ত করে তোলে কারণ এটি ভার্চুয়াল সর্বাধিক আকারের উপর নির্ভর করে কারণ ভার্চুয়াল সর্বাধিক আকারটি কমপ্লেগ-রেশি অনুপাতের উপর নির্ভর করে এবং ডিস্কের আকারের 0.1% এর ওভারহেড যখন ব্যবহার না করা হয় এবং সত্যই ফ্রুগাল বনামের মেম_লিমিট * (আনুমানিক 2 - 4) অনুমান করা যায় আশাবাদ।

zram_config এমনকি পূর্ববর্তী পরিষেবা ব্যবহারের জন্য পরীক্ষা করে না এবং নীচে উইলের মতো জ্রাম সি ক্লাসের একটি সাধারণ চেক অন্তর্ভুক্ত করে ওভাররাইট করে।

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
}

0

আপনি যখন জিরাম সক্ষম করবেন তখন এটি স্বয়ংক্রিয়ভাবে অগ্রাধিকার পাবে।

উবুন্টু 16.04 এর জন্য: /usr/bin/init-zram-swapping

আপনি সেই ফাইলটি সম্পাদনা করতে পারেন (ব্যবহৃত প্রথম ব্যাকআপ করুন), ব্যবহৃত প্রকৃত র‌্যামকে কম করার জন্য, আমি মেম লাইনটি এতে পরিবর্তন করেছি:

mem=$(((totalmem / 4 / ${NRDEVICES}) * 1024))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.