इंस्टॉलर कैसे गणना करता है कि स्वैप विभाजन का आकार क्या है? संभवत: यह स्थापित रैम आकार पर आधारित है, लेकिन क्या यह रैम पर निर्भर करता है?
इंस्टॉलर कैसे गणना करता है कि स्वैप विभाजन का आकार क्या है? संभवत: यह स्थापित रैम आकार पर आधारित है, लेकिन क्या यह रैम पर निर्भर करता है?
जवाबों:
वास्तव में 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 * RAM देता है CONF_SWAPSIZE =
और एक सेटिंग के लिए swapfactor
...
this is what we want, 2 times RAM size
SWAPFACTOR=2
वास्तविक आकार की गणना आगे की ओर की गई है:
अगर ["$ {CONF_SWAPSIZE}" = ""]; फिर # स्वचालित इष्टतम आकार की गणना करें इको-एन "कंप्यूटिंग साइज़," # यह फिजिकल रैम साइज के सबसे नजदीक लगता है, इसमें 60k की कमी है KCORESIZE = "` ls -l / proc / kcore | awk '{प्रिंट $ 5}' '" # एमबीटी बनाते हैं जो नीचे गोल होता है ठीक 1 बहुत कम होगा, इसलिए 1 जोड़ें MEMSIZE = "` expr "$ {KCORESIZE}" / 1048576 + 1` " # डिफ़ॉल्ट, बिना कॉन्फिग फाइल ओवरराइडिंग, स्वैप = 2 * RAM CONF_SWAPSIZE = "` expr "$ {MEMSIZE}" "*" "$ {SWAPFACTOR}" `" फाई
जैसा कि आप देख सकते हैं कि वे इस पैकेज में इसकी गणना करते हैं, के आकार पर निर्भर करता है /proc/kcore
, फिर इसे ऊपर गोल करने के लिए 1048576, +1 से विभाजित हो जाता है और फिर swapfactor द्वारा गुणा किया जाता है। मेरी मशीन से:
तो इस प्रणाली के लिए डिफ़ॉल्ट 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 एमबीबीएस होगा।