4K पर मेरी गति में क्या गलत है? यह इतना धीमा क्यों है? या ऐसा ही माना जाता है?
क्या वह गति ठीक है? मेरे पास 4K पर इतनी कम गति क्यों है?
4K पर मेरी गति में क्या गलत है? यह इतना धीमा क्यों है? या ऐसा ही माना जाता है?
क्या वह गति ठीक है? मेरे पास 4K पर इतनी कम गति क्यों है?
जवाबों:
क्या आप में चल रहे हैं यांत्रिक HDDs के विशिष्ट है, और SSDs के प्रमुख लाभों में से एक: HDDs में भयानक यादृच्छिक अभिगम प्रदर्शन है।
क्रिस्टलडिस्कमार में, "सेक" का मतलब क्रमिक पहुंच है, जबकि "4K" का अर्थ है यादृच्छिक अभिगम (एक समय में 4kB का हिस्सा, क्योंकि एकल बाइट्स बहुत धीमी और अवास्तविक 1 होंगी )।
मोटे तौर पर, दो अलग-अलग तरीकों से आप किसी फ़ाइल तक पहुंच सकते हैं।
अनुक्रमिक पहुंच का मतलब है कि आप एक के बाद एक या कम से कम एक बाइट फ़ाइल को पढ़ते हैं या लिखते हैं। उदाहरण के लिए, यदि आप एक वीडियो देख रहे हैं, तो आप वीडियो को शुरू से अंत तक लोड करेंगे। यदि आप कोई फ़ाइल डाउनलोड कर रहे हैं, तो यह शुरू से अंत तक डिस्क पर डाउनलोड और लिखी जाती है।
डिस्क के दृष्टिकोण से, यह "रीड ब्लॉक # 1, रीड ब्लॉक # 2, रीड ब्लॉक # 3, रीड बाइट ब्लॉक # 4" 1 जैसी कमांड देख रहा है ।
रैंडम एक्सेस का मतलब है कि रीड या राइट का कोई स्पष्ट पैटर्न नहीं है। यह वास्तव में यादृच्छिक मतलब नहीं है; इसका वास्तव में अर्थ है "अनुक्रमिक नहीं"। उदाहरण के लिए, यदि आप एक साथ बहुत सारे कार्यक्रम शुरू कर रहे हैं, तो उन्हें आपके ड्राइव पर बिखरी हुई बहुत सारी फाइलें पढ़ने की आवश्यकता होगी।
ड्राइव के दृष्टिकोण से, यह "रीड ब्लॉक # 56, रीड ब्लॉक # 5463, ब्लॉक ब्लॉक # 14, रीड # #" जैसे कमांड देख रहा है
मैंने कई बार ब्लॉक का उल्लेख किया है। क्योंकि कंप्यूटर इतने बड़े आकार (1 एमबी ~ = 1000000 बी) के साथ सौदा करते हैं, यहां तक कि अनुक्रमिक पहुंच अक्षम है यदि आपको प्रत्येक व्यक्तिगत बाइट के लिए ड्राइव पूछना है - तो बहुत अधिक बकबक है। व्यवहार में, ऑपरेटिंग सिस्टम एक समय में डिस्क से डेटा के ब्लॉक का अनुरोध करता है।
एक ब्लॉक बाइट्स की एक सीमा है; उदाहरण के लिए, ब्लॉक # 1 बाइट्स # 1- # 512 हो सकता है, ब्लॉक # 2 बाइट्स # 513- # 1024 हो सकता है, आदि ये ब्लॉक ड्राइव के आधार पर या तो 512 बाइट्स या 4096 बाइट्स बड़े हैं। लेकिन व्यक्तिगत बाइट्स के बजाय ब्लॉक से निपटने के बाद भी, अनुक्रमिक ब्लॉक एक्सेस यादृच्छिक ब्लॉक एक्सेस से तेज है।
अनुक्रमिक पहुंच आमतौर पर यादृच्छिक अभिगम की तुलना में तेज होती है। ऐसा इसलिए है क्योंकि अनुक्रमिक पहुंच ऑपरेटिंग सिस्टम और ड्राइव की भविष्यवाणी करती है कि आगे क्या जरूरत होगी, और अग्रिम में एक बड़ा हिस्सा लोड करें। यदि आपने "1, 2, 3, 4" ब्लॉक का अनुरोध किया है, तो ओएस अनुमान लगा सकता है कि आप "5, 6, 7, 8" आगे चाहते हैं, इसलिए यह ड्राइव को "1, 2, 3, 4" पढ़ने के लिए कहता है। , 5, 6, 7, 8 "एक बार में। इसी तरह, ड्राइव एक बार में भौतिक संग्रहण को बंद कर सकती है, बल्कि "1 की तलाश में, 1,2,3,4 पढ़े, 5 की तलाश करें, 5,6,7,8 पढ़ें"।
ओह, मैंने कुछ मांगने का उल्लेख किया है। मैकेनिकल एचडीडी के पास बहुत धीमा समय है क्योंकि वे शारीरिक रूप से कैसे तैयार होते हैं: वे डिस्क को पढ़ने के लिए आगे और पीछे घूमने वाले भौतिक हथियारों के साथ भारी धातुयुक्त डिस्क की संख्या से युक्त होते हैं। यहां एक खुले एचडीडी का एक वीडियो है जहां आप कताई डिस्क और चलती हथियार देख सकते हैं।
Http://www.realtechs.net/data%20recovery/process2.html से छवि
इसका मतलब यह है कि किसी भी समय, हाथ के अंत में सिर के नीचे के डेटा को केवल पढ़ा जा सकता है। ड्राइव को दो चीजों के लिए प्रतीक्षा करने की आवश्यकता है: यह डिस्क के दाहिने रिंग ("ट्रैक") पर जाने के लिए हाथ की प्रतीक्षा करने की आवश्यकता है, और डिस्क को घूमने के लिए भी इंतजार करना होगा ताकि आवश्यक डेटा रीडिंग के तहत हो। सिर। इसे 2 मांगने के रूप में जाना जाता है । कताई और चलती हुई दोनों भुजाओं को स्थानांतरित होने में भौतिक समय लगता है, और क्षति को जोखिम में डाले बिना उन्हें ज्यादा नुकसान नहीं पहुँचाया जा सकता।
यह आम तौर पर वास्तविक पढ़ने की तुलना में बहुत लंबा समय लेता है। हम बात कर रहे हैं> 5ms बस जहां पाने के लिए अनुरोध बाइट रहता है, जबकि बाइट की वास्तविक रीडिंग औसतन लगभग 0.00000625ms प्रति अनुक्रमिक बाइट (या 0.003125ms प्रति 512 बी ब्लॉक) पढ़ती है।
दूसरी ओर, रैंडम एक्सेस, भविष्यवाणी का लाभ नहीं है। इसलिए अगर आप 8 रैंडम बाइट्स पढ़ना चाहते हैं, तो शायद "8,34,76,996,112,644,888,341" ब्लॉक से, ड्राइव को "8 की तलाश, 8 को पढ़ना चाहिए, 34 को पढ़ना चाहिए, 34 को पढ़ना होगा, 76 को पढ़ना होगा, 76 को पढ़ना होगा ..." । ध्यान दें कि हर एक ब्लॉक के लिए इसे फिर से कैसे चाहिए? अनुक्रमिक 512 बी ब्लॉक प्रति 0.003125ms के औसत के बजाय, यह अब औसत है (5ms चाह + 0.003125ms पढ़ा) = 5.003125ms प्रति ब्लॉक। वह कई, कई बार धीमी होती है। हजारों बार धीमा, वास्तव में।
सौभाग्य से, हमारे पास अब एक समाधान है: एसएसडी।
एक SSD, एक ठोस राज्य ड्राइव है, जैसा कि इसके नाम का अर्थ है, ठोस अवस्था । इसका मतलब है कि यह कोई चलती भागों नहीं है । अधिक, जिस तरह से एक एसएसडी रखी गई है, इसका मतलब है कि (प्रभावी रूप से 3 ) बाइट के स्थान को देखने की कोई आवश्यकता नहीं है; यह पहले से ही जानता है । यही कारण है कि एक SSD में अनुक्रमिक और यादृच्छिक अभिगम के बीच प्रदर्शन अंतर बहुत कम होता है।
अभी भी एक अंतर है, लेकिन इसका अनुमान लगाने में सक्षम नहीं होने के लिए बड़े पैमाने पर जिम्मेदार ठहराया जा सकता है और इससे पहले कि उस डेटा को पहले से लोड करने के लिए कहा जाए।
1 अधिक सटीक रूप से, एलबीए ड्राइव को दक्षता कारणों से 512 बाइट्स (512n / 512e) या 4kB (4Kn) के ब्लॉक में संबोधित किया जाता है। इसके अलावा, वास्तविक कार्यक्रमों को लगभग एक बार में केवल एक बाइट की आवश्यकता नहीं होती है।
2 तकनीकी तौर पर, की तलाश केवल हाथ पर्यटन को दर्शाता है। समय के शीर्ष पर सिर के नीचे घूमने के लिए डेटा की प्रतीक्षा घूर्णी विलंबता है ।
3 तकनीकी रूप से, उनके पास लुकअप टेबल है और अन्य कारणों से रीमैप है, जैसे लेवलिंग पहनते हैं, लेकिन ये एचडीडी की तुलना में पूरी तरह से नगण्य हैं ...
Notice how it needs to look for every single byte?
:: के byte
साथ बदलें block
(और तदनुसार छूट बदलें)। ड्राइव 4k भाग की तलाश करता है (जिसे आगे 512bytes chunk में फैलाया जा सकता है, लेकिन इससे कम नहीं है। यह हर बाइट्स के बीच की तलाश नहीं करता है! यह हर ब्लॉक के बीच की तलाश करता है यदि अगला ब्लॉक सही नहीं है (जो बहुत अधिक होता है) खंडित डिस्क)। और मांग करना (थाली के चारों ओर सिर हिलाना, और उसके नीचे से गुजरने के लिए इंतजार करना) जो बहुत लंबा (कुछ मिलीसेकंड) लगता है
जैसा कि पहले से ही अन्य उत्तरों द्वारा बताया गया है, "4K" लगभग निश्चित रूप से आकार 4 केबी के ब्लॉक में यादृच्छिक अभिगम को संदर्भित करता है।
हर बार हार्ड डिस्क (एसएसडी नहीं) को डेटा पढ़ने या लिखने के लिए कहा जाता है, इसमें दो महत्वपूर्ण देरी शामिल हैं:
ये दोनों किसी भी दिए गए ड्राइव के लिए अपेक्षाकृत स्थिर समय के हैं। सीक लेटेंसी इस बात का एक फंक्शन है कि कितनी तेजी से सिर को हिलाया जा सकता है और कितनी दूर ले जाने की जरूरत है, और रोटेशनल लेटेंसी एक फंक्शन है कि प्लाटर कितनी तेजी से घूम रहा है। क्या अधिक है, वे पिछले कुछ दशकों में ज्यादा नहीं बदले हैं। निर्माता वास्तव में विज्ञापनों में औसत चाहने वाले समय का उपयोग करते थे; उन्होंने बहुत कुछ करना बंद कर दिया जब क्षेत्र में बहुत कम या कोई विकास नहीं था। कोई भी निर्माता, विशेष रूप से उच्च प्रतिस्पर्धा वाले वातावरण में, अपने उत्पादों को अपने प्रतियोगियों की तुलना में बेहतर नहीं देखना चाहता है।
एक विशिष्ट डेस्कटॉप हार्ड डिस्क 7200 आरपीएम पर घूमती है, जबकि एक विशिष्ट लैपटॉप ड्राइव लगभग 5000 आरपीएम पर स्पिन कर सकती है। इसका मतलब है कि प्रत्येक सेकंड, यह कुल 120 क्रांतियों (डेस्कटॉप ड्राइव) या लगभग 83 क्रांतियों (लैपटॉप ड्राइव) से गुजरता है। चूंकि औसतन डिस्क को वांछित क्षेत्र में सिर के नीचे से गुजरने से पहले आधी क्रांति को स्पिन करने की आवश्यकता होगी, इसका मतलब है कि हम उम्मीद कर सकते हैं कि डिस्क लगभग दो बार सेवा करने में सक्षम हो सकती है, यह मानते हुए प्रति सेकंड कई I / O अनुरोध।
इसलिए हमें 200 I / O प्रति सेकंड के क्रम पर प्रदर्शन करने में सक्षम होने की उम्मीद करनी चाहिए, यदि इसे एक्सेस करने (पढ़ने या लिखने के लिए) के लिए कहा जा रहा है, तो यह अपेक्षाकृत शारीरिक रूप से स्थानीयकृत है, जिसके परिणामस्वरूप घूर्णी विलंबता सीमित कारक है। सामान्य स्थिति में, हम अपेक्षा करेंगे कि ड्राइव 100 I / O प्रति सेकंड के क्रम पर प्रदर्शन करने में सक्षम हो, यदि डेटा प्लाटर या प्लैटर्स में फैला हुआ है, जिसके लिए काफी खोज की आवश्यकता होती है और इस कारण विलंबता कारक सीमित हो जाता है। । भंडारण के संदर्भ में, यह " IOPS " हैप्रदर्शन "हार्ड डिस्क का; यह, अनुक्रमिक I / O प्रदर्शन नहीं, आम तौर पर वास्तविक दुनिया भंडारण प्रणालियों में सीमित कारक है। (यह एक बड़ा कारण है कि SSDs उपयोग करने के लिए बहुत तेज़ हैं: वे घूर्णी विलंबता को समाप्त करते हैं, और पढ़ने या लिखने के सिर के भौतिक संचलन फ्लैश मैपिंग लेयर टेबल में टेबल लुकअप हो जाता है, जिसे इलेक्ट्रॉनिक रूप से संग्रहीत किया जाता है।
कैश फ्लश शामिल होने पर लेखन आमतौर पर धीमा होता है। आम तौर पर ऑपरेटिंग सिस्टम और हार्ड डिस्क प्रदर्शन को बेहतर बनाने के लिए यादृच्छिक I / O को क्रमिक I / O में बदलने के लिए यादृच्छिक राइट्स को फिर से लिखने का प्रयास करते हैं। यदि कोई स्पष्ट कैश फ़्लश है या अवरोध लिखना है , तो यह सुनिश्चित करने के उद्देश्य से यह अनुकूलन समाप्त हो गया है कि लगातार संग्रहण में डेटा की स्थिति क्या सॉफ़्टवेयर अपेक्षा के अनुरूप है। मूल रूप से पढ़ने के दौरान एक ही तर्क लागू होता है जब कोई डिस्क कैश शामिल नहीं होता है, या तो क्योंकि कोई भी मौजूद नहीं है (डेस्कटॉप शैली सिस्टम पर आज असामान्य) या क्योंकि सॉफ्टवेयर जानबूझकर इसे बायपास करता है (जो कि अक्सर I / O प्रदर्शन को मापते समय किया जाता है)। उन दोनों को अधिक निराशावादी मामले, या 7200 rpm ड्राइव के लिए 120 IOPS के अधिकतम संभावित IOPS प्रदर्शन को कम करता है।
जो कि ऐसा होता है कि आपकी संख्याओं से लगभग बिल्कुल मेल खाता हो। छोटे ब्लॉक आकार के साथ रैंडम I / O घूर्णी हार्ड डिस्क के लिए एक पूर्ण प्रदर्शन हत्यारा है, यही कारण है कि यह एक प्रासंगिक मीट्रिक भी है।
विशुद्ध रूप से अनुक्रमिक I / O के रूप में, 150 एमबी / एस की सीमा में थ्रूपुट आधुनिक घूर्णी हार्ड डिस्क के लिए अनुचित नहीं है। लेकिन बहुत कम वास्तविक दुनिया I / O कड़ाई से अनुक्रमिक है, इसलिए ज्यादातर स्थितियों में, विशुद्ध रूप से अनुक्रमिक I / O प्रदर्शन वास्तविक दुनिया के प्रदर्शन के संकेत की तुलना में अकादमिक अभ्यास के अधिक हो जाता है।
4K का तात्पर्य यादृच्छिक I / O से है । इसका मतलब है कि डिस्क को परीक्षण फ़ाइल के भीतर यादृच्छिक बिंदुओं पर छोटे ब्लॉकों (आकार में 4 KB) तक पहुंचने के लिए कहा जा रहा है। यह हार्ड ड्राइव की कमजोरी है; डिस्क के विभिन्न क्षेत्रों में डेटा तक पहुंचने की क्षमता उस गति से सीमित होती है जिस पर डिस्क घूमती है और कितनी जल्दी पढ़ने-लिखने वाले सिर घूम सकते हैं। अनुक्रमिक I / O , जहां लगातार ब्लॉक पहुंच रहे हैं, बहुत आसान है क्योंकि ड्राइव बस डिस्क को स्पिन कर रहा है के रूप में पढ़ या लिख सकता है।
एक सॉलिड-स्टेट ड्राइव (SSD) में रैंडम I / O के साथ ऐसी कोई समस्या नहीं है, क्योंकि इसे करने की ज़रूरत है जहाँ डेटा अंतर्निहित मेमोरी (आमतौर पर NAND फ़्लैश, 3D XPoint या DRAM हो सकता है) में पढ़ा जाता है और पढ़ें या उपयुक्त स्थान पर डेटा लिखें। एसएसडी पूरी तरह से इलेक्ट्रॉनिक हैं और डेटा तक पहुंचने के लिए एक घूर्णन डिस्क या एक घूमने वाले रीड-राइट हेड पर इंतजार करने की आवश्यकता नहीं है, जो उन्हें इस संबंध में हार्ड ड्राइव की तुलना में बहुत तेज बनाता है। यह इस कारण से है कि एसएसडी में उन्नयन से नाटकीय रूप से सिस्टम प्रदर्शन बढ़ जाता है।
साइड नोट: एक SSD पर क्रमिक I / O का प्रदर्शन अक्सर हार्ड ड्राइव की तुलना में बहुत अधिक होता है। एक विशिष्ट SSD में फ्लैश मेमोरी कंट्रोलर के समानांतर कई NAND चिप्स जुड़े होते हैं, और एक साथ उन्हें एक्सेस कर सकते हैं। इन चिप्स में डेटा फैलाने से, RAID 0 के लिए एक ड्राइव लेआउट प्राप्त होता है, जो प्रदर्शन को बढ़ाता है। (ध्यान दें कि कई नए ड्राइव, विशेष रूप से सस्ते वाले, एक प्रकार के NAND का उपयोग करते हैं, जिसे TLC NAND कहा जाता है, जो डेटा लिखते समय हो जाता है। TLC NAND के साथ ड्राइव अक्सर छोटे लेखन कार्यों के लिए उच्च प्रदर्शन प्रदान करने के लिए तेज़ NAND के एक छोटे बफर का उपयोग करते हैं लेकिन नाटकीय रूप से एक बार धीमा है कि बफर भरा हुआ है।)