प्रदर्शन के लिए स्वैप बनाम फ़ाइल?


62

प्रदर्शन के लिए बेहतर क्या है? डिस्क के अंदर के करीब एक विभाजन में धीमी पहुंच बार होगी, और हमें ड्राइव के लिए ओएस और स्विफ्ट विभाजन के बीच स्विच करने की प्रतीक्षा करनी होगी।

दूसरी ओर, एक स्वैप विभाजन सभी फाइल सिस्टम को बायपास करता है जिससे डिस्क को सीधे लिखा जा सकता है, जो एक फाइल से तेज हो सकता है।

प्रदर्शन व्यापार बंद क्या है?

एक निश्चित आकार के स्वैपफिल के होने से कितना फर्क पड़ता है?

क्या यह एक ऐसा मामला है कि इसे स्वैप विभाजन में बदलना अधिक लंबा होगा, लेकिन प्रदर्शन बेहतर होगा, जबकि यह स्वैप विभाजन पर है कि अगर यह एक स्वैप फ़ाइल रहा है?


जिज्ञासा के कारण। क्या आप कर्नेल संस्करण, रैम, विभाजन और फाइलसिस्टम योजना जैसे सिस्टम विवरण प्रदान कर सकते हैं?
विकी

आप किस ओएस पर देख रहे हैं?
मथिउ चाटु

4
लिनक्स की जानकारी के लिए, देखें lkml.org/lkml/2005/7/7/326
एडम Monsen

सवाल जवाब के लिए कोई अपडेट?
कोकबीरा

जवाबों:


29
  1. हार्ड डिस्क पर, थ्रूपुट और मांग अक्सर डिस्क की शुरुआत की ओर तेज होती है, क्योंकि यह डेटा डिस्क के बाहरी क्षेत्र के करीब संग्रहीत होता है, जिसमें प्रति सिलेंडर अधिक क्षेत्र होते हैं। इस प्रकार, डिस्क की शुरुआत में स्वैप बनाने से प्रदर्शन में सुधार हो सकता है।

  2. 2.6 लिनक्स कर्नेल के लिए, स्वैप विभाजन और अनफैग्मेंटेड स्वैप फ़ाइल के बीच कोई प्रदर्शन अंतर नहीं है । जब स्वैप स्वैप / फ़ाइल को स्वैप द्वारा सक्षम किया जाता है, तो 2.6 कर्नेल पाता है कि कौन सी डिस्क स्वैप स्वैप को संग्रहीत करती है , ताकि जब स्वैप करने का समय आ जाए, तो उसे फाइल सिस्टम से बिल्कुल भी निपटना न पड़े।

इस प्रकार, यदि स्वैपफाइल खंडित नहीं है, तो यह ठीक उसी तरह है जैसे कि उसी स्थान पर स्वैप विभाजन था। या एक और तरीका रखो, यदि आप एक स्वैप विभाजन का उपयोग करते हैं, तो आप समान प्रदर्शन प्राप्त करेंगे, या इसे एक फाइल सिस्टम के साथ स्वरूपित किया जाएगा और फिर एक स्वेपाइल बनाया जाएगा, जो सभी जगह को भर देगा, क्योंकि उस डिस्क पर किसी भी तरह से स्वैप करने के लिए उपयोग किया जाने वाला एक सन्निहित क्षेत्र है। जो कर्नेल सीधे उपयोग करता है।

इसलिए यदि कोई फ़ाइल सिस्टम के ताज़ा होने पर स्वैप बनाता है (तो यह सुनिश्चित करना कि यह खंडित नहीं है और वॉल्यूम की शुरुआत में है), प्रदर्शन वॉल्यूम से ठीक पहले स्वैप विभाजन के समान होना चाहिए। इसके अलावा, अगर किसी ने स्वेपफाइल को वॉल्यूम के बीच में बनाया है, तो दोनों तरफ की फाइलों के साथ, किसी को बेहतर प्रदर्शन मिल सकता है, क्योंकि स्वैप की मांग कम है।

लिनक्स पर, अगर स्वैपफाइल को अनफ्रैगमेंट किया जाता है, और कभी विस्तारित नहीं होता है, तो यह खंडित नहीं हो सकता है, कम से कम ext3 / 4 जैसे सामान्य फाइल सिस्टम के साथ। यह हमेशा एक ही डिस्क ब्लॉक का उपयोग करेगा, जो कि सन्निहित हैं।

मैं यह निष्कर्ष निकालता हूं कि एक समर्पित स्वैप विभाजन के एकमात्र लाभ के बारे में अनफ्रीग्रेशन की गारंटी दी जाती है जब आपको इसे विस्तारित करने की आवश्यकता होती है; यदि आपके स्वैप का विस्तार कभी नहीं होगा, तो एक ताजा फाइल सिस्टम पर बनाई गई फ़ाइल को अतिरिक्त विभाजन की आवश्यकता नहीं होती है।


5
यहां जोड़ने के लिए केवल एक चीज यह है कि यदि आप मशीन को "डिस्क को निलंबित" करने के लिए कॉन्फ़िगर किया गया है, तो वास्तव में क्या हो रहा है कि मेमोरी में सामान स्वैप करने के लिए लिखा गया है। यह काम करने के लिए, स्वैप स्वयं के विभाजन पर होना चाहिए क्योंकि स्वैप ऐसा होने के लिए एक सक्रिय फाइल सिस्टम पर नहीं हो सकता है। इसलिए, यदि आपके पास एक सर्वर है, तो आप शायद इस सुविधा का उपयोग नहीं करते हैं और खुशी से स्वैप फ़ाइल का उपयोग कर सकते हैं। यदि आपके पास एक लैपटॉप है, तो आप संभवतः एक स्वैप विभाजन चाहते हैं ताकि आप हाइबरनेशन के लिए "फ़ाइल को निलंबित" करने में सक्षम हों।
नाथन एस। वाटसन-हाई

@ नाथन। व्हाट्सन-हाई, पहले से ही स्वैप में मौजूद डेटा के साथ क्या होता है? इसे फेंका नहीं जा सकता।
XTF

3
@ NathanS.Watson-Haigh क्या आप किसी स्रोत को लिंक कर सकते हैं? Ubuntu 17.04 डिफ़ॉल्ट रूप से एक स्वैप फ़ाइल का उपयोग करता है। यह आश्चर्य की बात होगी अगर यह "डिस्क को निलंबित" नहीं कर सका।
मथायस वीलर

22

वास्तव में जब तक आप विरल फाइलों का उपयोग नहीं करते हैं, तब तक इसमें बहुत अधिक अंतर नहीं होता है ।

Dd के साथ एक "सामान्य" फ़ाइल बनाना एक ही बार में फ़ाइल (यदि संभव हो तो) को आवंटित करेगा, जबकि एक विरल फ़ाइल बनाने से आपको पता चलेगा कि आपके पास एक 10GB फ़ाइल पड़ी है, लेकिन वास्तव में सभी स्थान का उपयोग नहीं कर रही है। मुझे पूरा यकीन नहीं है कि wether mkswap वैसे भी स्थान आवंटित नहीं करेगा, लेकिन आम तौर पर एक स्वैप फ़ाइल समय में बढ़ेगी और इस तरह एक निरंतर क्षेत्र (डिस्क के हिस्से के रूप में) आवंटित नहीं करेगी, बल्कि आवश्यकतानुसार ब्लॉक आवंटित करें, जिससे आगे बढ़ें समय के साथ विखंडन (निश्चित रूप से डिस्क के आपके उपयोग के आधार पर)

आंतरिक रूप से लिनक्स कर्नेल एक स्वैप फ़ाइल के अंतर्निहित ब्लॉकों को अधिक या सीधे सीधे एक्सेस करेगा - मुझे अभी लिंक नहीं मिल सकता है कि हुड के तहत क्या होता है, आपको इस पर मुझे भरोसा करना होगा जब तक कि कोई और अधिक आधिकारिक नहीं मिलेगा। अभी मैं सभी के साथ आ सकता हूं:

यह सब केवल लिनक्स कर्नेल की 2.6 लाइन पर लागू होता है।

यदि आप इष्टतम प्रदर्शन चाहते हैं (और वास्तव में क्या है? ... स्वैपिंग धीमी है, अवधि। RAM बढ़ाएं ताकि आप सर्वश्रेष्ठ प्रदर्शन के लिए स्वैप न करें ), आप एक विभाजन का उपयोग करना चाहते हैं।


18
स्वैप के आधुनिक संस्करण एकमुश्त रूप से विरल फाइलों के साथ काम करने से इंकार कर देंगे, जो कि फ़ाइल में छेद हैं।
टिम पोस्ट

3

यह एक दिलचस्प सवाल है और उसी के बारे में बहुत कुछ पढ़ा जा रहा है। आमतौर पर एक स्वैप विभाजन अंतर्निहित फाइल सिस्टम के कारण एक फ़ाइल से बेहतर होता है। लेकिन अगर आपको हमेशा अपने स्वैप का आकार बढ़ाने की आवश्यकता होती है तो फ़ाइल एक बेहतर विकल्प है। अनटिल कर्नेल 2.4 यह माना जाता था कि एक स्वैप विभाजन एक फ़ाइल से तेज है, लेकिन अब कर्नेल 2.6 के सुधार के साथ, प्रदर्शन लगभग समान हैं।

कुछ मुझे इंटरनेट पर भी मिला।

http://www.go2linux.org/swap-file-vs-swap-partition

तथा

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html


हालांकि उन लिंक में से कोई भी वास्तव में उनके निर्णयों के पीछे के कारणों की व्याख्या नहीं करता है।
बिल ग्रे

तर्क यह है कि फ़ाइल में इसका अंतर्निहित फाइल सिस्टम ओवरलोड होगा। यदि आप एक फ़ाइल बनाते हैं तो इसे सुगंधित किया जा सकता है। और जो फ़ाइल स्वैप पर कैश की जा रही है, उसके आधार पर, रीड्स पूरे विभाजन की तुलना में धीमा हो सकता है जो कि अपने आप में एक स्वैप फाइल सिस्टम है।
विकी

आगे खुदाई करने की कोशिश की और विकि पर सापेक्ष लेख पाया। बस आपकी सहायता के लिए कुछ स्वैप ट्यूनिंग पैरामीटर हैं जिन्हें आप जांच सकते हैं। लिनक्स के लिए कार्यान्वयन के तहत स्पष्टीकरण की भी जांच करें। मदद हो सकती है। en.wikipedia.org/wiki/Paging
विकी

उपरोक्त विकी लिंक पर दिए गए उद्धरणों में से एक का अनुसरण किया और उसी मुद्दे के बारे में एक दिलचस्प सूत्र पाया। हो सकता है कि बाहर की जाँच करना चाहते हैं। lkml.org/lkml/2005/6/28/427
Viky

मैंने अपने प्रश्न में फाइलसिस्टम ओवरलोड का उल्लेख किया है, लेकिन यह एक प्रदर्शन ब्लॉक के रूप में ज्यादा नहीं है क्योंकि आंतरिक डिस्क के पास एक विभाजन है। यह देरी फाइलसिस्टम ओवरहेड की तुलना में बहुत अच्छी होगी।
बिल ग्रे

2

मुझे लगता है कि हम अभी जिस स्तर पर हैं, जब तक कि आप एक ऐसे कॉन्फ़िगरेशन वाले लैपटॉप को नहीं चला रहे हैं जो स्वैप को डेटा लिखता है, जब वह निलंबित / सोता है, तो स्वैप को वास्तव में "अंतिम उपाय" माना जाना चाहिए। आपकी सबसे अच्छी शर्त एक बॉक्स में पर्याप्त रैम लगाना है ताकि यह डिस्क पर कभी भी न आए।

यह कहा जा रहा है, एक विभाजन शायद बेहतर तरीका है, प्रदर्शन बुद्धिमान, हालांकि एक फ़ाइल अधिक लचीला है। बस यह सुनिश्चित करें कि यह 7200+ RPM धुरी पर है।


1
विभाजन बेहतर प्रदर्शन वार क्यों होगा, जब देरी का समय देरी के लिए अधिक कारक हो सकता है?
बिल ग्रे

5
क्योंकि फ़ाइल का उपयोग करने के लिए अधिक हेड मूवमेंट की आवश्यकता हो सकती है, क्योंकि जब डेटा को पढ़ने / लिखने के लिए पेज ढूंढना हो तो फाइल सिस्टम पर कहीं भी हो सकता है इसलिए fs स्ट्रक्चर्स को खोजना पड़ सकता है जबकि स्वैप पार्टीशन के साथ प्रत्येक पेज एक ज्ञात स्थान पर होगा। विभाजन। यह एक्सेस टाइम (जैसा कि बल्क थ्रूपुट पर लागू होता है) एक विभेदक कारक है।
डेविड स्पिललेट

2
"जब तक आपको हाइबरनेट करने की आवश्यकता न हो, स्वैप को कॉन्फ़िगर न करें" एक विवादास्पद दृश्य है। कभी-कभी जब सिस्टम वास्तविक मेमोरी स्वैप पर कम होता है, तो सिस्टम को पुनर्प्राप्त करने की अनुमति दे सकता है। स्वैप न होने से आप ऐसे प्रोग्राम चला सकते हैं, जो बहुत बड़ी मेमोरी एलोकेशन करते हैं, लेकिन वास्तव में अधिकतर इसे नहीं छूते हैं (जैसे कुछ डिबगिंग टूल)। कभी-कभी मेमोरी के कब्जे वाले लेकिन निष्क्रिय क्षेत्र का उपयोग डिस्क कैश के रूप में बेहतर होता है और यह कि यदि केवल स्वैप उपलब्ध है तो ट्रेडऑफ़ किया जा सकता है। चर्चा के लिए unix.stackexchange.com/questions/2658/… देखें ।
आयन

1
@Anon ने क्या कहा। Chrome एक कुख्यात मेमोरी हॉग है, और यहां तक ​​कि <100 टैब के साथ, मेरा 16GB लैपटॉप कई मिनटों के लिए अनुत्तरदायी हो जाता है जब मेमोरी उपयोग 90% के आसपास होता है और कोई स्वैप फ़ाइल नहीं होती है। आश्चर्यजनक रूप से, उबंटू में उपयोगकर्ता को चेतावनी देने के लिए कोई अंतर्निहित तंत्र नहीं है कि ओएस मेमोरी से बाहर चल रहा है
डैन डस्केल्सस्कु

2

हमारे काम में सोच यह है कि चूंकि स्वैप फाइल खंडित हो सकती है, और विखंडन स्वैप एक्सेस को धीमा कर देता है, इसलिए विभाजन एक बेहतर तरीका है। बेशक, एक स्थैतिक आकार स्वैप को परिभाषित करना एक ही बात करता है, लेकिन यह सिर्फ विषयगत रूप से खाने वाला लगता है।

क्या यह दृष्टिकोण एक सही तरीका है? शायद नहीं, क्योंकि अभ्यास 10 साल पहले स्थापित किया गया था। हस्तक्षेप के वर्षों में ड्राइव तकनीक में एकमात्र बड़ा बदलाव हमारे द्वारा उपयोग किए जाने वाले RAID नियंत्रकों की जटिलता है (हम अभी तक एसएसडी के लिए पर्याप्त समृद्ध नहीं हैं)। ड्राइव के आकार में वृद्धि का मतलब है कि हम जो स्वैप विभाजन बनाते हैं वह ड्राइव की शुरुआत के करीब है जब यह 18 जीबी ड्राइव शिपिंग मानक था, इसलिए स्वैप की गति पुराने दिनों की तुलना में भी तेज है।

बेशक, हमारे ईएसएक्स-आधारित विंडोज सिस्टम पर, स्वैप फ़ाइल की स्थिति पूरी तरह से, पूरी तरह से लूट है। स्वैप फ़ाइल और भौतिक डिस्क प्लैटर्स के बीच वर्चुअलाइजेशन की इतनी सारी परतें हैं कि यह कोई फर्क नहीं पड़ता। लेकिन हम इसे एक अलग विभाजन पर रखते हैं क्योंकि यह सिर्फ मानक है।


4
एक स्वैप फ़ाइल खंडित नहीं होती है, क्योंकि कर्नेल एक प्रत्यक्ष mmap दृष्टिकोण का उपयोग करता है और फ़ाइल को कभी भी विकसित या छोटा नहीं करेगा। +1 हालांकि वर्चुअलाइजेशन पर आपकी टिप्पणी के लिए: यह अक्सर कोई फर्क नहीं पड़ता।
परजीव्या

0

स्वैप फ़ाइल का उपयोग करने से फ़ाइल-से-मेमोरी-अनुवाद के लिए थोड़ी अतिरिक्त मेमोरी का उपयोग हो सकता है। हम 1GB मेमोरी प्रति 1MB से कम मेमोरी के बारे में बात कर रहे हैं। फ़ाइल सिस्टम कैश डेटा को स्वैप नहीं करता है, केवल संगठनात्मक डेटा, जो कि अतिरिक्त मेमोरी आवश्यकताओं में से अधिकांश होना चाहिए।

इसके अलावा मुझे संदेह है कि आप 1000 बार एक अतिरिक्त सिर की तलाश में एक बार छोड़कर किसी भी उचित प्रदर्शन को खो देंगे।

मज़ेदार तथ्य, डायनामिक रूप से विस्तारित स्वैप फ़ाइल के साथ zswap का उपयोग करने पर परिणाम के रूप में बहुत कम लागत पर स्वैप संचालन पर एक प्रभावशाली गति उत्पन्न होती है।


1
क्या आप अपने दावों के लिए किसी प्रकार का औचित्य प्रदान कर सकते हैं? यह बल्कि वास्तविक लगता है।
ऑस्टिन जूल 15'15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.