NVMe ssd: 4k पढ़ने की तुलना में तेजी से क्यों लिख रहा है?


51

मेरे पास PCIe Gen.3x4 के साथ NVMe पर सैमसंग 960 प्रो 512 जीबी एसएसडी है। मैं सैमसंग NVMe ड्राइवर 2.0.0.1607 का उपयोग करता हूं। एसएसडी ठीक चल रहा है। हालाँकि, मुझे समझ में नहीं आता है कि 4k का लेखन 4k के पढ़ने की तुलना में अधिक तेज़ क्यों है। मैं बेंचमार्क का उपयोग कर रहा हूं:

यहाँ छवि विवरण दर्ज करें

यह 3 का कारक है! क्या कुछ गड़बड़ है (मेरे सिस्टम या एएस बेंचमार्क के साथ) या यह सामान्य है?


और अभी भी एक घूर्णन हार्ड ड्राइव की तुलना में बहुत तेज है!
ज़ैन लिंक्स

जवाबों:


76

4k रीड्स सबसे कठिन काम है जो ड्राइव कर सकता है। वे सबसे छोटे ब्लॉक आकारों में से हैं, जो ड्राइव को संभालने में सक्षम होने जा रहा है, और ड्राइव के लिए बड़ी मात्रा में डेटा प्रीलोड करने का कोई तरीका नहीं है, वास्तव में वे संभवतः काफी अक्षम हैं अगर ड्राइव लोड-फॉरवर्ड लॉजिक कुछ भी पढ़ने का इरादा रखता है 4kb से बड़ा है।

"नॉर्मल" ड्राइव रीड 4kb से बड़े होने की संभावना है क्योंकि बहुत कम फाइलें हैं जो कि छोटी हैं, और यहां तक ​​कि पेज फाइल को बड़ी मात्रा में पढ़ने की संभावना है क्योंकि यह प्रोग्राम के लिए "केवल" होने के लिए अजीब होगा स्मृति के 4KB बाहर पृष्ठांकित। इसका मतलब यह है कि कोई भी प्रीलोडिंग जो ड्राइव करने की कोशिश करता है, वास्तव में ड्राइव थ्रूपुट को दंडित करेगा।

4K रीड ड्राइव बफर से गुजर सकते हैं, लेकिन परीक्षण का "यादृच्छिक" भाग उन्हें पूरी तरह से अप्रत्याशित बनाता है। नियंत्रक को पता नहीं चलेगा कि कब ड्राइव को और अधिक सामान्य "बड़े" की आवश्यकता हो सकती है।

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

वास्तव में मुझे संदेह है कि यह "4K-64Thrd" में हो रहा है, लिखते हैं, "64-थ्रेड" जाहिर तौर पर एक बड़ी कतार गहराई का उपयोग कर रहा है , इस प्रकार ड्राइव को संकेत देता है कि इसमें पढ़ने या लिखने के लिए बड़ी मात्रा में डेटा है। । यह बहुत कुछ लिखने की गति को ट्रिगर करता है और इसलिए ड्राइव की अनुक्रमिक लिखने की गति तक पहुंचता है। अभी भी एक 4K प्रदर्शन करने के लिए एक उपरि है, लेकिन अब आप पूरी तरह से बफर की क्षमता को उजागर कर रहे हैं। परीक्षण के रीड संस्करण में ड्राइव कंट्रोलर, अब यह पहचान रहा है कि यह बहुत भारी भार के अधीन है, डेटा को लोड करना बंद कर देता है, संभवतः बफर से बचता है और इसके बजाय एक "कच्चे" रीड मोड में स्विच करता है, फिर से अनुक्रमिक रीड स्पीड आ रहा है।

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


5
स्वयं उत्तर का हिस्सा नहीं है, लेकिन मुझे संदेह है कि "4K रीड" (नॉन 64 ट्रेड संस्करण) वास्तव में ड्राइव डिफ़ॉल्ट रीड ब्लॉक आकार को 32K या 64K के रूप में उजागर कर रहा है। यह या तो 2600/50 = 52 (कुछ ओवरहेड + मूल 4K रीड के साथ 64K) या 1200/50 = 24 (कुछ ओवरहेड + 4K रीडिंग कम करने के साथ 32K) होगा।
Mokubai

16
कुल मिलाकर अच्छा जवाब है, लेकिन मेरा मानना ​​है कि "बहुत कम फाइलें हैं जो बिल्कुल छोटी हैं"। वास्तव में मुझे संदेह है कि अधिकांश प्रणालियों पर अधिकांश फाइलें 4k या उससे छोटी हैं। वे अधिकांश जगह नहीं लेते हैं , लेकिन यह एक और मामला है।
hobbs

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

2
@hobbs यदि आप उदाहरण के लिए NTFS लेते हैं तो डिफ़ॉल्ट क्लस्टर-साइज़ 4K (या एक से अधिक) है जिसका अर्थ है कि NTFS फाइलसिस्टम स्वयं 4K ब्लॉक में काम करता है, भले ही फाइलें और / या मेटा-डेटा स्वयं छोटे हों। इतनी छोटी फ़ाइलों को कोई फर्क नहीं पड़ता। सभी उद्देश्यों और उद्देश्यों के लिए एक विंडोज सिस्टम 4K ब्लॉक या उस के गुणकों को पढ़ता / लिखता है।
Tonny

1
@hobbs: NTFS के साथ, आपको मुफ्त में (!) ऐसी छोटी फ़ाइलों के पढ़ने की संभावना है। छोटी फ़ाइलों को निर्देशिका प्रविष्टि में ही संग्रहीत किया जाता है, फ़ाइल नाम के निकट। आपको डिस्क पर एक वास्तविक 4KB फ़ाइल रखने के लिए 4KB के करीब एक विशेष फ़ाइल आकार को हिट करना होगा।
16

16

अन्य उत्तर पहले ही बता चुके हैं कि ऐसा क्यों हो सकता है कि लेखन पढ़ने की तुलना में तेज़ हो; मैं जोड़ना चाहूंगा कि इस ड्राइव के लिए यह बिल्कुल सामान्य है, क्योंकि यह बेंचमार्क द्वारा पुष्टि की जाती है कि आप समीक्षाओं में पा सकते हैं।

ArsTecnica की समीक्षा

ArsTechnica ने ड्राइव की समीक्षा की है, आपके दोनों संस्करण (512 जीबी) और 2 टीबी एक:

ArsTechnica (यह ग्राफ समीक्षा में तुरंत दिखाई नहीं देता है, यह पहली गैलरी में 5 वां है, आपको इस पर क्लिक करना होगा)

इन 2 मॉडलों का प्रदर्शन बहुत समान है, और उनकी संख्या आपकी तरह दिखती है: ड्राइव 37 एमबी / एस पर पढ़ सकता है और 151 एमबी / एस पर लिख सकता है।

आनंदटेक की समीक्षा

आनंदटेक ने ड्राइव की समीक्षा भी की है: उन्होंने 2TB मॉडल का उपयोग किया है, परीक्षण के परिणामों की औसत 1, 2 और 4 की कतार गहराई के साथ है। ये ग्राफ हैं:

आनंदटेक 4K पढ़ा आनंदटेक 4K लिखना

ड्राइव 137 एमबी / एस पर पढ़ता है और 437 एमबी / एस पर लिखता है। संख्या आपकी तुलना में बहुत अधिक है, लेकिन यह संभवतः उच्च कतार की गहराई के कारण है। वैसे भी लिखने की गति रीड स्पीड से 3 गुना है, जैसा कि आपके मामले में है।

पीसी वर्ल्ड की समीक्षा

पीसी वर्ल्ड द्वारा एक और समीक्षा : उन्होंने 1 टीबी संस्करण का परीक्षण किया है, और 4K के परिणाम पढ़ने के लिए 30 एमबी / एस और लिखने के लिए 155 एमबी / एस हैं: पीसी वर्ल्ड ग्राफ लिखने की गति आपके अनुरूप है, लेकिन यहां ड्राइव है पढ़ने में भी धीमा। नतीजा यह है कि अनुपात एक से पांच है, तीन से एक नहीं है।

निष्कर्ष

समीक्षा की पुष्टि करें कि इस ड्राइव के लिए यह सामान्य है कि यादृच्छिक 4K के लिए लिखने की गति पढ़ने की गति की तुलना में बहुत तेज है: परीक्षण के आधार पर, यह 5 गुना तेज भी हो सकता है।

आपकी ड्राइव ठीक है। यह मानने का कोई कारण नहीं है कि यह दोषपूर्ण है, या आपके सिस्टम में कोई समस्या है।


8

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


1

एंड्री के जवाब पर विस्तार करते हुए, आपको एसएसडी को कंप्यूटर को संकेत देने से पहले शामिल ओवरहेड को देखने की आवश्यकता है जो ऑपरेशन पूरा हो गया है।

एक लिखने के लिए, डेटा को केवल एक आंतरिक रैम कैश में लिखा जाना चाहिए। बाद में इसे फ्लैश मेमोरी में लिखा जाएगा, साथ ही अन्य 4k ब्लॉक और मेटाडेटा को जांचने, त्रुटि सुधारने और इसे खोजने की आवश्यकता होगी।

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

हालांकि, एक लिखित ऑपरेशन द्वारा लिया गया कुल समय एक सामान्य रीड ऑपरेशन से अधिक हो सकता है, SSD को रिपोर्ट करने के लिए लिया गया समय कि यह ऑपरेशन उस हद तक पूरा हो गया है कि वह आगे के कमांड को प्रोसेस कर सकता है, कम है। बड़े ब्लॉकों के साथ ओवरहेड सीमित कारक नहीं है, लेकिन कई छोटे ब्लॉकों के साथ यह पढ़ने / लिखने की गति को सीमित करना शुरू कर देता है।

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