सीएसआर टेल # 5: कंकड़बाग की कहानी

मुझे लगा कि यह समय था जब मैंने अपनी कहानी के साथ पिच की थी। यह इस बात की कहानी है कि कैसे हमारे पेब्लेस्बीडी की-वैल्यू स्टोर को SOSP 17 में बनाया और प्रकाशित किया गया। इस कहानी में VMware रिसर्च में मेरा पोस्ट-डॉक अनुभव भी शामिल है।

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

दिलचस्प बात यह है कि जिस समय मैं नौकरी के बाजार में था, उस समय माइक्रोसॉफ्ट रिसर्च सिलिकॉन वैली के कुछ लोगों ने VMware में एक नई शोध प्रयोगशाला शुरू की थी। मेरे इंटर्नशिप मेंटर्स महेश बालाकृष्णन और मार्कोस एगुइलेरा इस नई लैब में थे, इसलिए उन्होंने मुझे आवेदन करने के लिए प्रोत्साहित किया। मैंने लैब में साक्षात्कार किया और एक अच्छा अनुभव था। उन्होंने मुझे एक शोधकर्ता के रूप में शामिल होने का प्रस्ताव दिया।

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

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

शुरुआती दिन थोड़े खुरदुरे थे, जिनमें से ज्यादातर इट्टाई मेरे सिर के ठीक ऊपर जा रहे थे। सिस्टम के लोग और सिद्धांत के लोग वास्तव में अलग-अलग भाषाएं बोलते हैं, इसलिए इससे पहले कि हम सिंक में थे कुछ समय हो गया। परियोजना के पीछे के अंतर्ज्ञान को बेहतर ढंग से समझने के लिए, मैंने एक त्वरित अजगर प्रोटोटाइप का निर्माण शुरू किया, जो नई डेटा संरचना के बारे में बताता है, जो इत्ताई के बारे में सोच रहा था। हमारे प्रोटोटाइप ने दिखाया कि नई डेटा संरचना काफी हद तक लिखने के प्रवर्धन को कम कर सकती है, हालांकि हमारी विलंबता सी ++ की-वैल्यू स्टोर की तुलना में काफी अधिक थी, जिनकी हम तुलना कर रहे थे। मैंने VMware रेडियो सम्मेलन में PebblesDB का प्रारंभिक रूप प्रस्तुत किया, VMware में एक आंतरिक आर एंड डी सम्मेलन। Btw, अकादमिक सम्मेलनों में RADIO पर कुछ भी नहीं है: RADIO का उत्पादन मूल्य एक अकादमिक सम्मेलन की तुलना में TED के करीब है। आपके पास उस स्तर पर एक छोटा सा संगीत कार्यक्रम हो सकता है, और यह जगह से बाहर नहीं देखा होगा।

RADIO में सकारात्मक और उपयोगी प्रतिक्रिया प्राप्त करने के बाद, इट्टाई और मैंने अपने नए डेटा संरचना का उपयोग करने के लिए एक मौजूदा कुंजी-मूल्य स्टोर को संशोधित करने के लिए सेट किया। हमने LevelDB को चुना, क्योंकि यह RocksDB की तुलना में काफी सरल और आसान था, और इसे संशोधित करना शुरू कर दिया। विशेष रूप से, हमने हाइपरडेलेक के एक बंदरगाह हाइपरलेवेलडीबी को कॉर्डेल (एमिन गन सीर के समूह) में हाइपरडेक्स लोगों द्वारा संशोधित करना शुरू कर दिया।

हमारे पास कई क्षण थे जब हमने जो मान लिया था कि LevelDB वास्तव में क्या कर रहा था: उदाहरण के लिए, हमने सोचा कि संपूर्ण sstable बनाने वाले खोज O (logn) में एक द्विआधारी खोज होगी; केवल ओ (1) खोज बनाने वाले अनुक्रमों को बदल देता है।

यह परियोजना का मज़ेदार हिस्सा था, क्योंकि एक सैद्धांतिक डेटा संरचना से वास्तविक की-वैल्यू स्टोर बनाने में बहुत कुछ शामिल है, जो शानदार प्रदर्शन प्रदान करता है। हमें PebblesDB बनाने के लिए कई प्रसिद्ध इंजीनियरिंग ट्रिक्स का उपयोग करना था।

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

हमें यूरोसिस पर अस्वीकार कर दिया गया था, मुख्यतः दो कारणों से: हमने रॉक्सबीडी के खिलाफ मूल्यांकन नहीं किया था, और हमने डिजाइन को बहुत अच्छी तरह से नहीं समझाया था। यह एक नए डेटा संरचना की तुलना में LevelDB में हैक्स के एक समूह के रूप में अधिक प्रतीत होता है। इसलिए हमें काम करने के लिए मिला, RocksDB के खिलाफ मूल्यांकन और PebblesDB के शीर्ष पर HyperDex और MongoDb जैसे अनुप्रयोगों के प्रदर्शन का मूल्यांकन। यह तब है जब रोहन कडकोडी इस परियोजना में शामिल हुए थे। रोहन एक और अद्भुत सिस्टम बिल्डर है, और एक महीने के अंतरिक्ष में, वह MongoDB के बारे में कुछ भी नहीं जानने से इसे संशोधित करने के लिए चला गया ताकि यह PebblesDB के शीर्ष पर चले।

यह तब था जब हम आवेदन प्रदर्शन को बेंचमार्क कर रहे थे कि हमें अन्य आश्चर्य हुआ। उदाहरण के लिए, दोनों HyperDex और MongoDB में, कई पुट () अनुरोधों को पहले से जांचने के लिए कि क्या पहले से ही है, एक गो () + पुट () अनुरोध में तब्दील हो जाएगा। यह PebblesDB प्रदर्शन को काफी प्रभावित करता है, क्योंकि PebblesDB बहुत अधिक पुट () अनुरोधों को संभाल सकता है, जबकि अनुप्रयोग इसे फेंक रहा था। यह दिलचस्प था हालांकि इन आवेदन quirks बाहर!

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

अगस्त में समाचार आया: हमें बड़ी समीक्षाओं के साथ स्वीकार किया गया! यह जानकर अच्छा लगा कि आखिरकार उस काम को पूरा करना पड़ा। समीक्षक टिप्पणियों को संबोधित करने के लिए, हमने अपने चरवाहे, अद्भुत फ्रैन्स काशोक के साथ काम किया। हमने जीथब पर खुले स्रोत के रूप में कोड को जारी करने के लिए भी कड़ी मेहनत की (जहाँ इस पर उचित ध्यान दिया गया है: अब तक 98)! हमने MongoDB में किए गए परिवर्तनों को जारी करने के लिए भी काम किया, ताकि इसे PebblesDB के शीर्ष पर चलाया जा सके।

PebblesDB पर काम करने से मुझे स्टोरेज स्टैक में लिखने के प्रवर्धन की समस्या के बारे में सोचने का मौका मिला, इसलिए मैंने UT Austin में इस पर काम करना शुरू किया। इस जगह में प्रारंभिक कार्य ApSys में एक सर्वश्रेष्ठ पोस्टर और एक NSF कैरियर अनुदान के लिए नेतृत्व किया! तो कुल मिलाकर, एक सफल पोस्ट-डॉक्टर अनुभव :)

PebblesDB अनुभव से मेरे सबक:

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