यह हमारी बेंचमार्क पद्धतिकी तार्किक निरंतरता है, जिसे इस बार एक विशिष्ट मीट्रिक पर लागू किया गया है। हमारे एज फ़ंक्शंस की वास्तुकला के विवरण के लिए, ऑराबेस केरस्ट आर्किटेक्चर पर हमारा स्तंभ लेख देखें, या दो रनटाइम के बीच वास्तुशिल्प अंतर के लिए हमारी तुलना वासटाइम बनाम वासमर।
अनिवार्य है
एक WebAssembly कोल्ड स्टार्ट कई चरण जोड़ता है (लोड, कमिट, कंपाइल या लिंक, इंस्टेंटियेट, फर्स्ट कॉल) और दो आंकड़े जिनमें समान चरण शामिल नहीं हैं, तुलनीय नहीं हैं, भले ही वे एक ही इकाई प्रदर्शित करते हों। वासमर इंस्टाबूट को विषय पर प्रत्यक्ष विपणन प्रतिक्रिया के रूप में विपणन करता है, लेकिन इसके सार्वजनिक आंकड़ों को अलग-अलग कार्यप्रणाली के बिना यहां शामिल नहीं किया गया है। ऑराबेस अपने एज फ़ंक्शंस के लिए उत्पादन निर्भरता के रूप में wasmtime संस्करण 43 चलाता है (aura-functions/Cargo.tomlमें सत्यापित), लेकिन आज तक कोई प्रतिलिपि प्रस्तुत करने योग्य कोल्ड स्टार्ट बेंचमार्क प्रकाशित नहीं किया है। इस आलेख में कोई ऑराबेस आंकड़े नहीं दिए गए हैं: यह वह विधि है जो विषय है।
WebAssembly की ठंडी शुरुआत एक बार फिर से एक विवादित विपणन तर्क क्यों बन गई है
ठंडी शुरुआत एक बार फिर वेबअसेंबली रनटाइम के बीच व्यावसायिक भेदभाव की धुरी बन गई है, न कि केवल अकादमिक शोध का विषय। वासमर इंस्टाबूट नामक सुविधा के साथ इसे एक स्पष्ट विक्रय बिंदु बनाता है, जिसे कोल्ड बूट समस्या के सीधे उत्तर के रूप में प्रस्तुत किया गया है।
यह रिफ्लेक्स बैकएंड बेंचमार्क पद्धतिपर हमारे लेख में पहले से ही प्रलेखित गतिशीलता की बिल्कुल याद दिलाता है: कई प्रतिस्पर्धी विक्रेता अपने स्वयं के उत्पाद पृष्ठ पर प्रदर्शन आंकड़े प्रदर्शित करते हैं, हमेशा उस प्रोटोकॉल को निर्दिष्ट किए बिना जो उन्हें उत्पन्न करता है। किसी विधि के बिना एक कोल्ड स्टार्ट का आंकड़ा बिना किसी विधि के विलंबता के आंकड़े से ज्यादा कुछ साबित नहीं करता है।
विपणन पृष्ठ पर प्रकाशित एक ठंडी शुरुआत का आंकड़ा, बिना सामग्री के, बिना कार्यभार के और माप के शुरुआती बिंदु और अंतिम बिंदु की स्पष्ट परिभाषा के बिना, एक नारे से अप्रभेद्य है। यह इस आलेख में उद्धृत सभी रनटाइम पर लागू होता है, जिसमें आंकड़ा जारी होने के दिन ऑराबेस भी शामिल है।
ठंडी शुरुआत वास्तव में क्या मापती है, और परिभाषा सब कुछ क्यों बदल देती है
कोल्ड स्टार्ट एक एकल ऑपरेशन नहीं है: यह अलग-अलग चरणों का योग है, और जरूरी नहीं कि दो आपूर्तिकर्ता एक ही नाम के तहत समान चरणों को मापें।
| लोड हो रहा है | .wasm मॉड्यूल की पुनर्प्राप्ति: नेटवर्क, डिस्क, या पहले से ही मेमोरी में मौजूद |
|---|---|
| मान्यकरण | निष्पादन से पहले WebAssembly बाइटकोड संरचना की जाँच करना |
| संकलन या लिंक करना | जेआईटी ऑन द फ्लाई (क्रेनलिफ्ट, एलएलवीएम) या पहले से संकलित आर्टिफैक्ट (एओटी) को लिंक करना |
| प्रारंभ | रैखिक मेमोरी, तालिकाओं और ग्लोबल्स का आवंटन, संभावित प्रारंभ फ़ंक्शन का निष्पादन |
| पहला बुलावा | अनुरोध की प्रोसेसिंग को कभी-कभी घोषित आंकड़ों में शामिल किया जाता है, कभी-कभी बाहर रखा जाता है |
एक आंकड़ा जो केवल पहले से लोड किए गए और पहले से ही मेमोरी में संकलित मॉड्यूल की तात्कालिकता को गिनता है, यांत्रिक रूप से उस आंकड़े से बेहतर दिखेगा जिसमें नेटवर्क लोडिंग और संकलन शामिल है। इनमें से कोई भी अपने आप में गलत नहीं है: समस्या तब प्रकट होती है जब हम उनकी तुलना करते हैं, बिना यह निर्दिष्ट किए कि दोनों में से किसको मापा गया था।
अकादमिक साहित्य क्या दर्शाता है, और इसके आंकड़े एक-दूसरे से तुलना क्यों नहीं करते
हाल के वर्षों में arXiv पर प्रीप्रिंट के रूप में प्रकाशित अकादमिक कार्य ने विभिन्न रनटाइम पर WebAssembly मॉड्यूल के इंस्टेंटेशन समय को मापा है। इन कार्यों के बीच सामान्य बिंदु एक अभिसरण आंकड़ा नहीं है: यह परीक्षण किए गए रनटाइम, मॉड्यूल के आकार और उपयोग किए गए हार्डवेयर के आधार पर एक महत्वपूर्ण अंतर है।
हम स्वेच्छा से इस लेख में इन प्रकाशनों से लिए गए कोई सटीक आंकड़े शामिल नहीं करते हैं। लेखन के समय प्रत्येक पेपर की पद्धति की पूरी तरह से दोबारा जांच किए बिना, एक पृथक संख्या को पुनः प्रकाशित करने से यह आलेख प्रस्तुत की गई समस्या बिल्कुल उत्पन्न हो जाएगी: संदर्भ के बिना एक संख्या जो हमें यह जानने की अनुमति देगी कि यह वास्तव में क्या मापती है।
दूसरी ओर, यह भिन्नता जो सीखती है, वह सीधे तौर पर उपयोगी है: एक ठंडी शुरुआत दृढ़ता से माप के संदर्भ पर निर्भर करती है, ठीक उसी तरह जैसा कि हमारे सामान्य कार्यप्रणाली लेख (समान हार्डवेयर, समान क्षेत्र, सभी प्रणालियों की तुलना में समान कैश स्थिति) में वर्णित पर्यावरण समता के अनुशासन द्वारा याद किया जाता है।
वासटाइम, वासमर, वासमएज: विभिन्न संकलन प्राथमिकताएँ
इस बहस में सबसे अधिक उद्धृत तीन स्टैंडअलोन वेबअसेंबली रनटाइम संकलन गति और निष्पादन प्रदर्शन को उसी तरह से संतुलित नहीं करते हैं, जो आंशिक रूप से बताता है कि उनके कोल्ड स्टार्ट आंकड़े शब्द दर शब्द की तुलना क्यों नहीं करते हैं।
| वास्मटाइम | क्रेनलिफ्ट संकलन बैकएंड, तैनाती से पहले ऐतिहासिक रूप से एक संभावित प्रीकंपाइलेशन मार्ग के साथ | एज फ़ंक्शंस के लिए ऑराबेस द्वारा उत्पादन में उपयोग किया जाता है |
|---|---|---|
| वासमेर | लंबे समय से कई विनिमेय बैकएंड का दस्तावेजीकरण किया गया है, जिसमें रनटाइम प्रदर्शन के बजाय संकलन गति के लिए डिज़ाइन किया गया बैकएंड भी शामिल है | मार्केट्स इंस्टाबूट, पहले से आरंभ किए गए उदाहरण के स्नैपशॉट द्वारा रीबूट |
| वास्मएज | सार्वजनिक स्थिति ने अपने स्वयं के प्रतिस्पर्धी तर्क के साथ त्वरित शुरुआत पर ध्यान केंद्रित किया | इस विपणन क्षेत्र में वैकल्पिक रनटाइम भी सक्रिय है |
इन आर्किटेक्चर को स्वयं परियोजनाओं द्वारा सार्वजनिक रूप से प्रलेखित किया गया है। हमने इस लेख के लिए उन्हें संस्करण दर संस्करण दोबारा सत्यापित नहीं किया है, और वे प्रदर्शन रैंकिंग का गठन नहीं करते हैं। वे केवल यह समझाते हैं कि तीन अलग-अलग रनटाइम द्वारा प्रदर्शित तीन कोल्ड स्टार्ट आंकड़े सटीक क्यों हो सकते हैं और फिर भी एक दूसरे के साथ तुलनीय नहीं हैं।
सर्वर रहित चर्चाओं में अक्सर विरोध किए जाने वाले दो रनटाइम के बीच संपूर्ण वास्तुशिल्प विवरण के लिए, हमारी समर्पित तुलना वास्मटाइम बनाम वासमरदेखें।
इंस्टाबूट क्या दिखाता है, और इसका उत्पाद पृष्ठ अकेले क्या साबित नहीं करता है
उत्पाद स्थिति के अनुसार जो वासमर सार्वजनिक रूप से संचार करता है, इंस्टाबूट प्रत्येक अनुरोध के साथ एक पूर्ण स्टार्टअप को पुनरारंभ करने के बजाय, स्नैपशॉट तंत्र द्वारा पहले से ही आरंभ किए गए एक उदाहरण को पुनर्स्थापित करता है। यह एक वास्तविक वास्तुशिल्प विकल्प है जो उस समस्या के अनुरूप है जिसे वह लक्षित करता है।
हालाँकि, यह लेख जो नहीं करता है, वह वासमर उत्पाद पृष्ठ पर प्रदर्शित प्रदर्शन आंकड़े को दोहराना है। यह जाने बिना कि किस हार्डवेयर, किस कार्यभार और किस माप प्रोटोकॉल ने यह आंकड़ा तैयार किया है, इसे पुनः प्रकाशित करने से ऊपर दर्ज की गई गलती होगी: एक मार्केटिंग नंबर को एक स्वतंत्र बेंचमार्क परिणाम के रूप में मानना।
"1 एमएस से कम कोल्ड स्टार्ट" जैसा आंकड़ा पहले ही सार्वजनिक रूप से प्रसारित हो चुका है, जिसमें पिछली ऑराबेस सामग्री भी शामिल है, बिना किसी पुनरुत्पादित बेंचमार्क द्वारा समर्थित किए। इसे अब आंतरिक रूप से असमर्थित माना जाता है। यही नियम प्रतिस्पर्धी रनटाइम, इंस्टाबूट सहित, द्वारा प्रदर्शित किसी भी आंकड़े पर लागू होता है, जब तक कि इसके साथ कोई अलग-अलग कार्यप्रणाली न हो।
ऑराबेस आज अपनी ठंडी शुरुआत के बारे में क्या कह सकता है और क्या नहीं
ऑराबेस अपने एज फ़ंक्शंस को उत्पादन में वास्मटाइम पर चलाता है, पायलट प्रोजेक्ट में नहीं। यहां बताया गया है कि फाइलिंग किस लिए अनुमति देती है और वह दावा कहां समाप्त होता है।
सेवा की उत्पादन निर्भरता में, async और cranelift सक्रिय सुविधाओं के साथ निर्भरता को कठिन घोषित किया गया है, न कि dev-dependency में और न ही किसी टिप्पणी में:
यह फ़ाइल क्या नहीं कहती है: हमारी बेंचमार्क पद्धति में वर्णित प्रोटोकॉल के अनुसार मापा गया कोई कोल्ड स्टार्ट आंकड़े इस रनटाइम के लिए रिपॉजिटरी में आज मौजूद नहीं है। जब तक अलग-अलग प्रतिशत, हार्डवेयर और कार्यभार के साथ एक दिनांकित माप प्रकाशित नहीं किया जाता है, तब तक किसी भी ऑराबेस आंकड़े को उत्पाद की मापी गई विशेषता के रूप में उद्धृत नहीं किया जाना चाहिए। प्लेटफ़ॉर्म के सामान्य आर्किटेक्चर के लिए, हमारा स्तंभ लेख ऑराबेस रस्ट आर्किटेक्चरदेखें। कोल्ड स्टार्ट WASM और कोल्ड स्टार्ट कंटेनर के बीच एक ठोस तुलना के लिए, यहां संबोधित पद्धतिगत प्रश्न से स्वतंत्र, हमारा समर्पित लेख WASM बनामकंटेनर देखें।
किसी कोल्ड स्टार्ट नंबर पर विश्वास करने से पहले उसे कैसे पढ़ें
किसी भी कोल्ड स्टार्ट आंकड़े को पूछने के लिए सात प्रश्न, जिसमें हमारा वह दिन भी शामिल है जिस दिन हम एक जारी करते हैं।
- कौन से चरण शामिल हैं? नेटवर्क लोडिंग, सत्यापन, संकलन, इन्स्टेन्शियेशन, पहली कॉल: एक आंकड़ा जो इसका केवल एक हिस्सा गिनता है, उस आंकड़े से तुलनीय नहीं है जो उन सभी को गिनता है।
- क्या मॉड्यूल वास्तव में "ठंडा" था? पहले से ही मेमोरी या डिस्क कैश में मौजूद मॉड्यूल पहली बार लोड किए गए मॉड्यूल के समान परीक्षण नहीं करता है।
- JIT संकलन या पूर्व संकलित आर्टिफैक्ट (AOT)? दोनों रणनीतियों में संरचनात्मक रूप से अलग-अलग स्टार्ट-अप लागतें हैं।
- एकल अंक या वितरण? दस में सर्वश्रेष्ठ रन का मान एक हजार रन में p95 के समान नहीं होता है।
- उपकरण और क्षेत्र निर्दिष्ट? हार्डवेयर विनिर्देश के बिना किसी चित्र को किसी तीसरे पक्ष द्वारा पुन: प्रस्तुत नहीं किया जा सकता है।
- समान लोड और टोपोलॉजी पर तुलना? रिपोर्ट किए बिना स्वयं-होस्ट किए गए रनटाइम की प्रबंधित सेवा से तुलना करने से रीडिंग विकृत हो जाती है।
- परीक्षण किए गए रनटाइम की तिथि और संस्करण? तेजी से विकसित हो रहे किसी प्रोजेक्ट पर अदिनांकित आंकड़े का कुछ महीनों के बाद कोई मतलब नहीं रह जाता है।
पूछे जाने वाले प्रश्न
बाहरी स्रोतों का हवाला दिया गया: सार्वजनिक उत्पाद दस्तावेज़ीकरण वासमर (इंस्टाबूट), सार्वजनिक परियोजना दस्तावेज़ीकरण वासटाइम (बाइटकोड एलायंस), उनके द्वारा दिखाए गए प्रदर्शन आंकड़ों की स्वतंत्र दोबारा जांच के बिना, इस लेख की तैयारी में परामर्श दिया गया।