কীভাবে ইনস্টলার কোন আকারের অদলবদল তৈরি করতে পারে তা গণনা করে? সম্ভবত এটি ইনস্টল করা র্যাম আকারের উপর ভিত্তি করে, তবে এটি কতটা র্যামের উপর নির্ভর করে?
কীভাবে ইনস্টলার কোন আকারের অদলবদল তৈরি করতে পারে তা গণনা করে? সম্ভবত এটি ইনস্টল করা র্যাম আকারের উপর ভিত্তি করে, তবে এটি কতটা র্যামের উপর নির্ভর করে?
উত্তর:
প্রকৃতপক্ষে কোনও dphys-swapfile
ডিফল্ট উবুন্টু ইনস্টলেশন সিডিতে কোনও প্রোগ্রাম নেই এবং এটি অদলবদলের আকার গণনা করতে ব্যবহৃত হয় না ।
যা ঘটে তা হ'ল সমস্ত পার্টিশনের মাপ নির্ধারণ করতে ubiquity
ইনস্টলার partman-auto
স্ক্রিপ্ট এবং কনফিগারেশন ফাইল (যাকে রেসিপি বলা হয় ) ব্যবহার করে । এটি এর মতো কাজ করে:
/proc/meminfo
) পায়।বিবরণ:
একটি রেসিপি ফাইলটি দেখতে এটি দেখতে পারে:
1 1 1 free
$iflabel{ gpt }
method{ biosgrub } .
500 10000 -1 $default_filesystem
$lvmok{ }
method{ format }
format{ }
mountpoint{ / } .
96 512 300% linux-swap
$lvmok{ }
method{ swap }
format{ } .
আকারগুলি গণনা করার জন্য অ্যালগরিদম:
for(i=1;i<=N;i++) {
factor[i] = priority[i] - min[i];
}
ready = FALSE;
while (! ready) {
minsum = min[1] + min[2] + ... + min[N];
factsum = factor[1] + factor[2] + ... + factor[N];
ready = TRUE;
for(i=1;i<=N;i++) {
x = min[i] + (free_space - minsum) * factor[i] / factsum;
if (x > max[i])
x = max[i];
if (x != min[i]) {
ready = FALSE;
min[i] = x;
}
}
}
আরও দেখুন:
এটি বরং প্রযুক্তিগত হতে চলেছে তবে এটি মজাদার ছিল তাই এখানে চলে যায় ...
dphys-swapfile
এবং এখানে সোর্স কোড । পছন্দsetup
সেট আপ করতে ব্যবহৃত হয়:সেটআপ - dphys-swapfile কে অনুকূল স্বাপ ফাইল আকার এবং গণনা করতে বলে (পুনরায়) একটি ফিটিং স্বাপ ফাইল তৈরি করুন। এটি র্যাম আকারের 2 বার ডিফল্ট করুন। বুট করার সময় এটি বলা যেতে পারে, সুতরাং ফাইলটি সর্বদা থাকে বর্তমান র্যামের জন্য ডান আকার, বা যখনই র্যামের আকার হবে তখন হাতে চালিত পরিবর্তন করেছেন।
dphys-swapfile
একটি সেটিংস রয়েছে conf_swapsize
(নাট্টিতে এটি খালি):আকারটিকে আমরা এটি হতে বাধ্য করতে চাই, ডিফল্ট (খালি) 2 * র্যাম দেয় CONF_SWAPSIZE =
এবং একটি জন্য একটি সেটিং swapfactor
...
this is what we want, 2 times RAM size
SWAPFACTOR=2
আসল আকারটি আরও কিছুটা এখানে গণনা করা হয়:
যদি ["$ {CONF_SWAPSIZE}" = ""]; তারপর # গণনা স্বয়ংক্রিয় অনুকূল মাপ প্রতিধ্বনি -n "কম্পিউটিং আকার," # এটি শারীরিক র্যাম আকারের নিকটতম বলে মনে হচ্ছে, প্রায় 60 কিলোবাইট নেই KCORESIZE = "` ls -l / proc / kcore | awk '{মুদ্রণ $ 5}' `" # এমবিাইট তৈরি করুন যা গোলাকার নিচে ঠিক 1 খুব কম হবে, তাই 1 যুক্ত করুন MEMSIZE = "` এক্সপ্রেস "$ {KCORESIZE}" / 1048576 + 1` " # ডিফল্ট, কনফিগারেশন ফাইল ওভাররাইড ছাড়াই, অদলবদল = 2 * র্যাম CONF_SWAPSIZE = "` এক্সপ্রেস "$ E MEMSIZE}" '*' "$ W স্বচ্ছল}" `" ফাই
আপনি দেখতে পাচ্ছেন যে এই প্যাকেজে তারা যেভাবে এটি গণনা করে তা আকারের উপর নির্ভর করে /proc/kcore
, তারপরে এটির জন্য 1048576, +1 দ্বারা ভাগ হয়ে যায় এবং তারপরে স্ব্যাপফ্যাক্টর দ্বারা গুণিত হয়। আমার মেশিন থেকে:
সুতরাং এই সিস্টেমের জন্য ডিফল্ট হবে 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 এমবিাইট।