हार्ड डिस्क बहुत धीमी है जब कई लंबे एक साथ पढ़ता है


2

सारांश

  • एक पारंपरिक (कताई platters) हार्ड डिस्क से
  • एक बड़ी फ़ाइल पढ़ें, अच्छा प्रदर्शन प्राप्त करें
  • एक साथ एक और बड़ी फाइल पढ़ें, कुल थ्रूपुट 5 से 10 से विभाजित करें। एक प्रदर्शन ड्रॉप करें!

इसके अलावा, डिस्क हेड यांत्रिक रूप से प्रति सेकंड कई बार आगे बढ़ता है और हाथ से सुना और महसूस किया जा सकता है। इसके अलावा कुछ घंटों के बाद तापमान अधिक देखा गया।

अगर ऐसा कम ही होता है या कम समय के लिए होता है, तो यह ठीक है। यदि यह अक्सर या विस्तारित अवधि के लिए होता है, तो न केवल प्रदर्शन खराब होता है और यह कम उम्र की घोषणा करता है।

उदाहरण

  • डिस्क: एक 2 टेराबाइट पश्चिमी डिजिटल डिस्क।
  • एक बड़ी फ़ाइल को पढ़ते समय थ्रूपुट 50-100MB / s हो सकता है।
  • बड़ी फ़ाइलों के साथ सबसे चरम पर प्रभाव: वीडियो फ़ाइलें (उदाहरण के लिए आकार में 1GB से 13GB)। कच्ची फोटो (~ 25 एमबी) फ़ाइलों को पढ़ते समय भी होता है।
  • जैसे ही कोई अन्य प्रोग्राम एक और फाइल को एक साथ पढ़ता है, कुल थ्रूपुट 5-10MB / s तक गिर जाता है।

अतिरिक्त जानकारी

यह फ़ाइल विखंडन की बात नहीं है। यदि फ़ाइलें खंडित थीं, तो थ्रूपुट केवल एक फ़ाइल पढ़ने पर भी धीमा (नाममात्र 50-100MB / s से बहुत धीमा) होगा।

सवाल

क्या एक साथ कई बड़ी फ़ाइलों को पढ़ते समय कुल थ्रूपुट को बहुत अधिक प्राप्त करने के लिए कुछ किया जा सकता है ?

जवाबों:


2

शीघ्र जवाब

  • (1) सही ब्लॉक डिवाइस क्या है (उदाहरण के लिए mount)।
  • (२) मूल अनुमति प्राप्त करना।
  • (3) read_ahead_kbडिवाइस के लिए ट्यून करें।

में मेरी मामला है, इस आदेश को जारी करने:

echo 100000 > /sys/block/sdb/queue/read_ahead_kb

कुछ ही सेकंड में प्रदर्शन और यांत्रिक राहत वापस लाया।

इस पैरामीटर परिवर्तन का क्या मतलब है?

टीएल; डीआर: यह कर्नेल को एक बार में बड़ी फ़ाइलों को पढ़ने का कारण बनता है, जिसका अर्थ है कि समस्या के समाधान के बजाय कई के बजाय केवल एक और आगे-पीछे यांत्रिक गति।

अधिक सटीक रूप से, यह पैरामीटर कर्नेल को बताता है कि जब यह एक फ़ाइल खोलता है, तो आप इसे बहुत अधिक डेटा अग्रिम में पढ़ने की अनुमति देते हैं (इस मामले में, 100 एमबी तक, डिफ़ॉल्ट 128kB से) यह जानने से पहले कि क्या प्रक्रिया पढ़ने का अनुरोध कर रही है वास्तव में इतना डेटा चाहिए। नतीजतन, एक प्रक्रिया के एक उदाहरण के साथ एक 30MB फ़ाइल (ठेठ कच्ची फोटो) खोलने के दौरान, जबकि एक अन्य प्रक्रिया पहले से ही संभव है अन्य फ़ाइल (ओं) को पढ़ती है, फिर यांत्रिक हेड को कम से कम आगे पीछे करने के बजाय (30000 /) 128) = 234 बार गारंटीकृत, कर्नेल जानता है कि आप इसे एक ही बार में सभी फाइल को पढ़ने की अनुमति देते हैं, जिससे केवल एक बैक-एंड-आगे मैकेनिकल मोशन बनता है।

नकारात्मक पक्ष यह है, यदि आपको केवल फ़ाइल का हिस्सा चाहिए (उदाहरण के लिए 30 एमबी फ़ाइल से 100kB थंबनेल), तो कर्नेल बहुत अधिक डेटा पढ़ सकता है (या नहीं करने का निर्णय ले सकता है)। इसके अलावा, पढ़ा जा रहा डेटा कुछ रैम पेजों पर कब्जा कर लेगा जो मेमोरी प्रेशर बढ़ाता है। सामान्य प्रयोजन के लिए लिनक्स बनाया जा रहा है, जिसमें बहुत सी समानांतर गतिविधि और स्मृति दबाव वाले सर्वर शामिल हैं, निश्चित रूप से यह अनुमान लगाने की कई संख्याएं हैं कि क्या करना है। सच्चाई कर्नेल स्रोत कोड में है।

यह मूल्य क्यों?

डिफ़ॉल्ट मान 128 है। मैंने कुछ प्रभाव देखा जो इसे पहले अन्य मूल्यों में बढ़ाता है, जैसे 4096, और 100000 पर संतुष्ट हो गया, लेकिन मुझे लगता है कि (1) अधिकांश प्रभाव प्रारंभिक वृद्धि के साथ प्राप्त किया जाता है, (2) सबसे अधिक दुष्प्रभाव (यदि किसी भी स्थिति के आधार पर, स्मृति दबाव की तरह) मान के आनुपातिक होते हैं और (3) ऊपर कुछ मूल्य हो सकते हैं, जो वास्तव में बढ़ने से कुछ भी नहीं होता है।

लेकिन आपकी स्थिति के बारे में क्या ?

विवरण

या आप स्रोत का उपयोग कर सकते हैं, ल्यूक:


0

Spoiler: पोस्ट के निचले भाग में YES उत्तर होगा

संक्षिप्त उत्तर:
नहीं।

मध्यम आकार का उत्तर:
नहीं, क्योंकि
2 प्रक्रियाएं हैं जो एक ही समय में एक ressource (हार्ड डिस्क) तक पहुंचना चाहती हैं। प्रत्येक प्रक्रिया अलग-अलग डेटा पढ़ेगी, इसलिए सिर को उस स्थान पर कूदना होगा जहां प्रक्रिया को प्लाटर से डेटा की आवश्यकता होती है। इस कूद में बहुत समय लगता है और आपकी हार्ड-डिस्क के कुल प्रवाह में बहुत कमी आती है!

लंबे उत्तर,
क्योंकि आपको हार्ड डिस्क के कार्य सिद्धांत की कुछ (मूल) समझ की कमी लगती है:
नहीं, क्योंकि
आपकी कताई हार्ड ड्राइव एक पुस्तक की तरह व्यवहार करती है।

कल्पना करें कि आपके पास केवल खाली पृष्ठों वाली पुस्तक है। जब आप इसे खरीदते हैं तो यह आपकी हार्ड डिस्क है। इस पर कोई डेटा संग्रहीत नहीं है।
तब आप इसे अपने कंप्यूटर में डालते हैं (चलो एक दूसरी ड्राइव के रूप में कहते हैं, इसलिए हमें यहां ऑपरेटिंग सिस्टम से निपटने की ज़रूरत नहीं है)।
जब आप एक लंबा टेक्स्ट डॉक्यूमेंट (जिसे 'टेक्स्ट ए' कहते हैं) लिखते हैं और इसे डिस्क पर सेव करते हैं, तो यह आपकी किताब में पहले 10 पेज (पेज 1 से 10) लिखने जैसा है। फिर आप डिस्क पर एक jpg चित्र कॉपी करते हैं, यह आपकी किताब (पृष्ठ 11-15) में अगले 5 मुफ्त पन्नों पर अपने घर की एक ड्राइंग बनाने जैसा है।
आपकी पुस्तक की सामग्री की तालिका में अब 2 प्रविष्टियाँ हैं:

  • पाठ ए: पी। 1-10
  • घर का चित्र: पी। 11-15

आपकी हार्ड डिस्क का सारा डेटा फिर से मिटाया जा सकता है, इसीलिए आपने पेंसिल से सब कुछ लिखा है और खींचा है, न कि बॉल-पेन से।
अब आप अपनी पुस्तक में खरीदारी की सूची लिखते हैं: पी। 16-17।
अगला, आपको यह पसंद नहीं है या इसकी आवश्यकता नहीं है कि आप इसे और अधिक आकर्षित कर सकते हैं और इसे मिटाना चाहते हैं, इसलिए आप इसे रबड़ के साथ हटा दें। पृष्ठ 11-15 रिक्त हैं।
आपका TOC ऐसा दिखता है:

  • पाठ ए: पी। 1-10
  • खरीदारी की सूची: पी। 16-17

अब आप स्थानीय सुपरमार्केट की एक छवि बनाना चाहते हैं, जो आपके घर से बड़ी है। तो आपको 12 पेज चाहिए। आप पृष्ठ 11 पर शुरू कर सकते हैं, जिसका अर्थ है कि आपके पास लगातार पर्याप्त पृष्ठ नहीं होंगे और आपको 18 पर जारी रखने की आवश्यकता होगी, या आप 18 से शुरू कर सकते हैं और एक बार में इसे खींचने के लिए पर्याप्त स्थान हो सकता है।
अधिकांश या सभी ऑपरेटिंग सिस्टम फ्री स्पेस का एक हिस्सा चुनने के लिए पर्याप्त स्मार्ट हैं जो पूरे डेटा के लिए पर्याप्त है, लेकिन यदि पर्याप्त रूप से बड़ी खाली जगह नहीं है, तो यह फ़ाइल को छोटे टुकड़ों में विभाजित करना होगा जो मौजूदा फ्री में फिट होते हैं क्षेत्रों। इसे फ्रैग्मेंटेशन कहा जाता है ।
आइए कल्पना करें कि आपको भी ऐसा करने की आवश्यकता है। आपका TOC ऐसा दिखता है:

  • पाठ ए: पी। 1-10
  • सुपरमार्केट का चित्र, टुकड़ा 2 का 1: पी। 11-15
  • खरीदारी की सूची: पी। 16-17
  • सुपरमार्केट का चित्र, टुकड़ा 2 का 2: पी। 18-24

अब हम पुस्तक को पढ़ाना शुरू करते हैं।
आप अपनी खरीदारी सूची पर आइटम जानना चाहते हैं। टीओसी आपको पेज 16 पर जाने के लिए कहता है। आप पी .17 के नीचे पहुंचने तक पढ़ना शुरू कर देते हैं। किया हुआ।
अगला: आप यह देखना चाहते हैं कि सुपरमार्केट कैसा दिखता है जहां आप खरीदारी करना चाहते हैं। TOC आपको p.11 पर जाने के लिए कहता है (आप p.18 (= p.17 का अंत) पर हैं और 7 पेजों को वापस ब्राउज़ करना है। हार्ड डिस्क पर रीड-राइट हेड को जंप करने की आवश्यकता है। जब तक आप p.15 के अंत तक नहीं पहुंच जाते, तब तक पढ़ना शुरू करें, फिर आप p.18 (फिर से कूदता है) को ब्राउज़ करें और जारी रखें।

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

और अब, हम 2 लोगों के साथ काम करते हैं :
आप सुपरमार्केट छवि देखना चाहते हैं और मैं आपका पाठ पढ़ना चाहता हूं।
आप पेज 11 पर ब्राउज़ करते हैं और पढ़ना शुरू करते हैं।
जब आपने p.11 पढ़ा है, तो मैं p.1 पर ब्राउज़ करता हूं और पढ़ना शुरू करता हूं।
जब मैंने पढ़ा है। p.1, आप p.12 को ब्राउज़ करते हैं और पढ़ना जारी रखते हैं।
जब आप पढ़ चुके हैं p.12, मैं p.2 पर ब्राउज़ करता हूं और पढ़ना जारी रखता हूं।
...
आप अंदाजा लगा सकते हैं कि पेजों को पढ़ने में सिर्फ इसलिए ज्यादा समय लगता है क्योंकि कई ब्राउजिंग में इतना लंबा समय लगता है।
आपकी हार्ड-डिस्क के साथ भी। आप इसके बारे में कुछ नहीं कर सकते हैं, लेकिन साथ-साथ पहुंच से परहेज करते हैं क्योंकि यह हमेशा इसे धीमा बनाता है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.