अब तक मैंने आर्म64 आर्किटेक्चर के लिए कुछ उपयोग मामलों (जैसे डायनेमोडीबी अनुरोध करना) के लिए जावा 21 रनटाइम का उपयोग करके लैम्ब्डा फ़ंक्शन के प्रदर्शन (गर्म और ठंडे प्रारंभ समय) को नहीं मापा है क्योंकि यह स्नैपस्टार्ट का समर्थन नहीं करता है। स्नैपस्टार्ट सक्षम के साथ x86_64 आर्किटेक्चर के साथ जावा 21 रनटाइम के साथ लैम्ब्डा आर्म64 आर्किटेक्चर के साथ लैम्ब्डा से बेहतर प्रदर्शन करेगा (अतिरिक्त प्राइमिंग ऑप्टिमाइज़ेशन के साथ और भी अधिक)। लेकिन 18 जुलाई, 2024 को, AWS ने घोषणा की कि AWS लैम्ब्डा अब ARM64 आर्किटेक्चर का उपयोग करने वाले जावा फ़ंक्शंस के लिए स्नैपस्टार्ट का समर्थन करता है। तो अब मेरे लिए लैम्ब्डा फ़ंक्शन की वास्तुकला की पसंद पर विचार करते हुए ठंड और गर्म शुरुआत के समय को मापना शुरू करना समझ में आया। यह ज्ञात है कि वर्तमान AWS लैम्ब्डा मूल्य निर्धारण मेमोरी सेटिंग और निष्पादन अवधि के साथ, Arm64 आर्किटेक्चर के साथ लैम्ब्डा लगभग होगा। x86_64 आर्किटेक्चर के साथ लैम्ब्डा से 25% सस्ता।
मैंने इसके लिए अलग लेख श्रृंखला बनाने का निर्णय लिया और इस विषय को अपनी लगातार बढ़ती AWS लैम्ब्डा स्नैपस्टार्ट श्रृंखला में नहीं जोड़ने का निर्णय लिया।
अपने प्रयोग में हम लेख एडब्ल्यूएस लैम्ब्डा स्नैपस्टार्ट - जावा 21 लैम्ब्डा कोल्ड स्टार्ट को मापने में प्रस्तुत एप्लिकेशन का पुन: उपयोग करेंगे। नमूना आवेदन के लिए कोड यहां दिया गया है। मूल रूप से 2 मुख्य लैम्ब्डा फ़ंक्शन हैं जो दिए गए आईडी के साथ उत्पाद बनाने के लिए एपीआई गेटवे अनुरोधों का जवाब देते हैं (PutProductFunction लैम्ब्डा फ़ंक्शन देखें) और दिए गए आईडी द्वारा उत्पाद को पुनर्प्राप्त करते हैं (GetProductByIdFunction लैम्ब्डा फ़ंक्शन देखें)। आप स्नैपस्टार्ट सक्षम होने के साथ और उसके बिना दोनों लैम्ब्डा फ़ंक्शन का उपयोग कर सकते हैं। एक अतिरिक्त लैम्ब्डा फ़ंक्शन GetProductByIdWithPrimingFunction है जिसे मैंने स्नैपस्टार्ट सक्षम लैम्ब्डा फ़ंक्शन के लिए डायनेमोडीबी अनुरोध प्राइमिंग के प्रभाव को स्वतंत्र रूप से मापने के लिए लिखा था। आप मेरे लेख एडब्ल्यूएस लैम्ब्डा स्नैपस्टार्ट - प्राइमिंग, एंड टू एंड विलंबता और परिनियोजन समय को मापने में प्राइमिंग के प्रभाव के बारे में अधिक पढ़ सकते हैं।
सभी लैम्ब्डा फ़ंक्शंस पर स्नैपस्टार्ट सक्षम करने के लिए कृपया एसएएम टेम्पलेट में निम्नलिखित को अनटिप्पणी करें:
Globals: Function: CodeUri: target/aws-pure-lambda-snap-start-21-1.0.0-SNAPSHOT.jar ... SnapStart: ApplyOn: PublishedVersions ...
यदि मैं स्नैपस्टार्ट का उपयोग केवल व्यक्तिगत के लिए करना चाहता हूं, लेकिन सभी लैम्ब्डा फ़ंक्शन के लिए नहीं, तो आपको इस स्नैपस्टार्ट परिभाषा को वैश्विक फ़ंक्शन स्तर के बजाय लैम्ब्डा फ़ंक्शन स्तर पर लागू करना होगा।
सभी लैम्ब्डा फ़ंक्शन में शुरुआती बिंदु के रूप में निम्नलिखित सेटिंग्स होती हैं:
एसएएम टेम्पलेट में मैंने वैश्विक लैम्ब्डा फ़ंक्शन अनुभाग में लैम्ब्डा आर्किटेक्चर को परिभाषित करने की संभावना जोड़ी है:
Globals: Function: CodeUri: target/aws-pure-lambda-snap-start-21-1.0.0-SNAPSHOT.jar ... Architectures: #- arm64 - x86_64
बस उस आर्किटेक्चर को अनकम्मेंट करें जिसे आप अपने लैम्ब्डा फ़ंक्शंस के लिए उपयोग करना चाहते हैं।
भले ही जावा "एक बार लिखें, हर जगह चलाएं", फिर भी मैंने पहले से इंस्टॉल करके ग्रेविटॉन प्रोसेसर (जो आर्म64/आर्च64 आर्किटेक्चर पर आधारित है) के साथ टी4जी एडब्ल्यूएस ईसी2 इंस्टेंस पर अपने आर्म64 माप के लिए एप्लिकेशन जार फ़ाइल को संकलित और निर्मित किया है। Linux aarch64 के लिए Amazon Corretto 21। आप यह जार यहां पा सकते हैं।
मैंने उसी कोरेटो जावा 21 नवीनतम रनटाइम संस्करण का उपयोग करके तुलनीय परिणाम प्राप्त करने के लिए एक बार फिर से x86_64 आर्किटेक्चर के लिए सब कुछ फिर से मापा है, जो मेरे माप के समय जावा 21.v17 था। &&&]
नीचे दिए गए प्रयोग के परिणाम 100 से अधिक ठंडी और लगभग 100,000 गर्म शुरुआतों के पुनरुत्पादन पर आधारित थे। इसके लिए (और मेरे पिछले लेख के प्रयोगों से) मैंने लोड टेस्ट टूल का उपयोग किया, लेकिन आप जो भी टूल चाहें, उसका उपयोग कर सकते हैं, जैसे सर्वरलेस-आर्टिलरी या पोस्टमैन। यह जानना भी महत्वपूर्ण है कि मैंने एप्लिकेशन के ताज़ा स्रोत कोड (पुनः) परिनियोजन के ठीक बाद माप शुरू किया। कृपया ध्यान दें कि कोल्ड स्टार्ट पर स्नैपशॉट टियर कैश का भी प्रभाव पड़ता है, जहां पहले इनवोकेशन आम तौर पर धीमे होते हैं, और बाद वाले इनवोकेशन की निश्चित संख्या तक पहुंचने तक तेज हो जाते हैं।अब "मौजूदा आईडी द्वारा उत्पाद प्राप्त करें" (स्नैपस्टार्ट सक्षम और प्राइमिंग माप के लिए लैम्ब्डा फ़ंक्शन GetProductByIdFunction और GetProductByIdWithPrimingFunction) मामले के लिए सभी माप एक साथ रखते हैं।
ठंडा (सी) और गर्म (एम) प्रारंभ समय एमएस में:
सी पी50 | सी पी75 | सी पी90 | सी पी99 | c p99.9 | सी अधिकतम | w p50 | w p75 | w p90 | w p99 | w p99.9 | अधिकतम | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
3554.30 | 3615.21 | 3666.15 | 3800.47 | 4108.61 | 4111.78 | 5.42 | 6.01 | 6.88 | 14.09 | 40.98 | 1654.59 | |
3834.81 | 3904.42 | 3983.26 | 4047.47 | 4332.13 | 4335.74 | 5.96 | 6.66 | 7.69 | 16.01 | 43.68 | 1844.54 | |
1794.09 | 1846.86 | 2090.54 | 2204.27 | 2239.80 | 2240.08 | 5.37 | 5.96 | 6.93 | 15.88 | 51.64 | 1578.34 | |
1845.01 | 1953.18 | 2591.70 | 2762.91 | 2793.45 | 2795.8 | 5.91 | 6.56 | 7.63 | 16.75 | 63.52 | 1779.14 | |
803.18 | 870.18 | 1103.78 | 1258.19 | 1439.95 | 1440.67 | 5.55 | 6.25 | 7.45 | 15.50 | 63.52 | 448.85 | |
910.14 | 1001.79 | 1376.62 | 1623.44 | 1684.60 | 1686.19 | 6.05 | 6.72 | 7.81 | 16.66 | 74.68 | 550.59 |
arm64 आर्किटेक्चर लैम्ब्डा मूल्य निर्धारण x86_64 आर्किटेक्चर से 25% सस्ता है, यह बहुत दिलचस्प लागत-प्रदर्शन व्यापार बंद का परिचय देता है।
हमारे माप के लिए, सभी 3 उपयोग मामलों के लिए:
लेख के अगले भाग में हम समान प्रदर्शन माप करेंगे लेकिन लैम्ब्डा मेमोरी को 256 और 2048 एमबी के बीच विभिन्न मानों पर सेट करेंगे और परिणामों की तुलना करेंगे।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3