2012-05-14 28 views
10

हम निम्नलिखित गुणों के साथ एक एसएसडी समर्थित कुंजी-मान समाधान पर काम कर रहे हैं के लिए कुंजी-मान स्टोर:कम विलंबता एसएसडी

  • प्रवाह क्षमता: 10000 टीपीएस; 50/50 रखता है/हो जाता है;
  • लेटेंसी: 1 एमएमएस औसत, 99.9 वें प्रतिशत 10ms
  • डेटा वॉल्यूम: ~ 1 बिलियन मूल्य, ~ 150 बाइट प्रत्येक; 64-बिट कुंजी; रैंडम एक्सेस, डेटा के 20% रैम फिट बैठता है

हम वस्तु SSDs पर KyotoCabinet, LevelDB, और RethinkDB की कोशिश की, विभिन्न लिनक्स आईओ शेड्यूलर, ext3/XFS फ़ाइल सिस्टम के साथ; Rebench का उपयोग करके कई परीक्षण किए; और पाया कि सभी मामलों में:

  • केवल पढ़ने के प्रवाह/विलंबता बहुत अच्छे हैं
  • लिखें/अद्यतन-केवल भर मध्यम है, लेकिन वहाँ कई उच्च विलंबता बाहरी कारकों के कारण कर रहे हैं
  • मिश्रित पढ़ने/लिखने के काम का बोझ प्रवाह में आपत्तिजनक दोलन का कारण बनता है/(फाइल सिस्टम को छोड़कर) विलंबता भी ब्लॉक युक्ति के लिए सीधी पहुँच के मामले में

नीचे चित्र KyotoCabinet के लिए इस तरह के व्यवहार को दिखाता है (क्षैतिज अक्ष समय, तीन की अवधि है एस स्पष्ट रूप से दिखाई दे रहे हैं - केवल पढ़ने के लिए, मिश्रित, केवल अद्यतन)।

सवाल यह है: क्या एसएसडी का उपयोग करके वर्णित एसएलए के लिए कम विलंबता प्राप्त करना संभव है और किस कुंजी-मूल्य स्टोर की सिफारिश की जाती है?

enter image description here

+2

यह एक अच्छा सवाल है, लेकिन जैसा कि यह वास्तव में एक चर्चा धागा (जो एसओ के लिए क्षेत्र से बाहर है) है, इसलिए के लिए विषय से हटकर है। यह सीधे प्रोग्रामिंग से संबंधित नहीं है, और मुझे यकीन नहीं है कि यह कहां उचित है। –

+0

मैं इसे समझता हूं, लेकिन मूल प्रश्न बहुत सरल है: क्या कुंजी-मूल्य स्टोर है जो कमोडिटी एसएसडी पर <1ms पढ़ने/लिखने की विलम्ब प्राप्त करता है। – user1128016

+2

जैसा कि मैंने कहा, अच्छा सवाल है लेकिन प्रोग्रामिंग से सीधे संबंधित नहीं है। आपको [एसएफ] या संभवतः [dba.se] –

उत्तर

0

यह एक चंचल विचार तरह-की है, लेकिन यह काम हो सकता है। आइए मान लें कि आपका एसएसडी 128 जीबी है।

  1. एसएसडी
  2. पर एक 128GB स्मृति सीमा एक 128GB स्वैप विभाजन बनाएं उपयोग करने के लिए है कि स्वैप के रूप में
  3. सेटअप मशीन पर memcached अपने मशीन को कॉन्फ़िगर करें और सेट
  4. बेंचमार्क

विल कर्नेल पर्याप्त तेज़ी से अंदर और बाहर सामान को सक्षम करने में सक्षम हो सकता है? जानने का कोई तरीका नहीं है। यह कर्नेल की तुलना में आपके हार्डवेयर पर अधिक निर्भर करता है।

पुल-हेनिंग कैम्प वार्निश में ऐसा करने के बजाय वर्निश के लिए वर्निश के लिए चीजों (वर्चुअल बनाम भौतिक स्मृति) का ट्रैक रखने के द्वारा वर्निश में कुछ ऐसा ही करता है। https://www.varnish-cache.org/trac/wiki/ArchitectNotes

3

अत्यधिक भिन्नता लेखन विलंबता एसएसडी (विशेष रूप से उपभोक्ता मॉडल) की एक आम विशेषता है। इस AnandTech review में क्यों एक बहुत अच्छा स्पष्टीकरण है।

सारांश यह है कि एसएसडी लिखने का प्रदर्शन ओवरटाइम खराब हो जाता है क्योंकि पहनने के स्तर ऊपर की ओर बढ़ता है। चूंकि ड्राइव पर मुक्त पृष्ठों की संख्या कम हो जाती है, एनएएनडी नियंत्रक को डीफ्रैगमेंटिंग पेज शुरू करना होगा, जो विलंबता में योगदान देता है। एनएएनडी को विभिन्न एनएएनडी ब्लॉक में डेटा के यादृच्छिक वितरण को ट्रैक करने के लिए मानचित्र को ब्लॉक करने के लिए एलबीए भी बनाना होगा। चूंकि यह नक्शा बढ़ता है, मानचित्र पर संचालन (आवेषण, हटाना) धीमा हो जाएगा।

आप एक दप दृष्टिकोण के साथ एक निम्न स्तर HW इस मुद्दे को हल करने में सक्षम हो नहीं जा रहे हैं, आप या तो एक उद्यम स्तर एसएसडी के लिए ऊपर ले जाएँ या अपने विलंबता आवश्यकताओं को आराम करने की जरूरत है जा रहे हैं।

1

Aerospike एक नई कुंजी/मान (पंक्ति) स्टोर है जो < 1ms विलंबता के साथ पूरी तरह से एसएसडी से बाहर चला सकता है पढ़ने/लिखने और बहुत अधिक टीपीएस (लाखों तक पहुंचने) के लिए।

SSDs के महान यादृच्छिक पढ़ने की एक्सेस लेकिन लेखन पर विचरण को कम करने का उपयोग कर रहा अनुक्रमिक आईओ (यह नियमित रूप से हार्ड डिस्क के समान है) के लिए महत्वपूर्ण है। यह पहनने के स्तर और फीका को भी बहुत कम करता है जो एसएसडी पर बहुत से लिखने के साथ हो सकता है।

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

संबंधित मुद्दे