"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > एडब्ल्यूएस स्नैपस्टार्ट - विभिन्न कचरा संग्रहण एल्गोरिदम का उपयोग करके जावा के साथ ठंड और गर्मी को मापने का भाग शुरू होता है

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

2024-11-01 को प्रकाशित
ब्राउज़ करें:561

AWS SnapStart - Part Measuring cold and warm starts with Java using different garbage collection algorithms

परिचय

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

इस लेख में हम जावा 21 रनटाइम के साथ लैम्ब्डा फ़ंक्शन के प्रदर्शन पर जावा कचरा संग्रहण एल्गोरिदम के प्रभाव का पता लगाना चाहेंगे। हम सभी कचरा संग्रहण एल्गोरिदम के लिए उपयोग में आने वाले समान छोटे जावा 21 संस्करण के साथ तुलनीय परिणाम प्राप्त करने के लिए G1 के लिए सब कुछ फिर से मापेंगे।

जावा कचरा संग्रहण एल्गोरिदम

हमारे माप के लिए हम निम्नलिखित जावा संग्रह एल्गोरिदम का उपयोग उनकी डिफ़ॉल्ट सेटिंग के साथ करेंगे (कृपया प्रत्येक एल्गोरिदम के बारे में अधिक विस्तृत जानकारी के लिए लिंक किए गए दस्तावेज़ देखें):

  • कचरा-प्रथम (जी1) कचरा संग्रहकर्ता। यह डिफ़ॉल्ट रूप से उपयोग किया जाने वाला कचरा संग्रहण एल्गोरिदम है। आप इसे JAVA_TOOL_OPTIONS पर्यावरण चर में -XX: UseG1GC जोड़कर AWS SAM टेम्पलेट में स्पष्ट रूप से सेट कर सकते हैं।
  • समानांतर कलेक्टर. आप इसे JAVA_TOOL_OPTIONS पर्यावरण चर में -XX: UseParallelGC जोड़कर AWS SAM टेम्पलेट में स्पष्ट रूप से सेट कर सकते हैं।
  • शेनान्दोआ जीसी. Oracle JDK इसे प्रदान नहीं करता है, लेकिन Amazon Corretto 21 JDK प्रदान करता है। आप इसे JAVA_TOOL_OPTIONS पर्यावरण चर में -XX: UseShenandoahGC जोड़कर AWS SAM टेम्पलेट में स्पष्ट रूप से सेट कर सकते हैं।
  • जेड कचरा संग्रहकर्ता। 2 अलग-अलग ZGC एल्गोरिदम हैं: डिफ़ॉल्ट और नया-पीढ़ीगत। आप इसे JAVA_TOOL_OPTIONS पर्यावरण चर में -XX: यूज़ZGC या -XX: यूज़ZGC -XX: ZGenerational जोड़कर AWS SAM टेम्पलेट में स्पष्ट रूप से सेट कर सकते हैं।

ठंड और गर्मी को मापना विभिन्न कचरा संग्रहण एल्गोरिदम का उपयोग करके जावा 21 से शुरू होता है

हमारे प्रयोग में हम भाग 9 में प्रस्तुत थोड़े से संशोधित एप्लिकेशन का उपयोग करेंगे। आप एप्लिकेशन कोड यहां पा सकते हैं। मूल रूप से 2 लैम्ब्डा फ़ंक्शन हैं जो एपीआई गेटवे अनुरोधों का जवाब देते हैं और डायनेमोडीबी से एपीआई गेटवे से प्राप्त आईडी द्वारा उत्पाद पुनर्प्राप्त करते हैं। एक लैम्ब्डा फ़ंक्शन GetProductByIdWithPureJava21LambdaWithGCAlg का उपयोग SnapStart के साथ और उसके बिना किया जा सकता है और दूसरा GetProductByIdWithPureJava21LambdaAndPrimingWithGCAlg SnapStart और DynamoDB अनुरोध इनवोकेशन प्राइमिंग का उपयोग करता है।

नीचे दिए गए प्रयोग के परिणाम लगभग 1 घंटे तक चलने वाले प्रयोग के साथ 100 से अधिक ठंडी और लगभग 100,000 गर्म शुरुआतों के पुनरुत्पादन पर आधारित थे। इसके लिए (और मेरे पिछले लेख के प्रयोगों से) मैंने लोड टेस्ट टूल का उपयोग किया, लेकिन आप जो भी टूल चाहें, उसका उपयोग कर सकते हैं, जैसे सर्वरलेस-आर्टिलरी या पोस्टमैन। हम लैम्ब्डा फ़ंक्शंस को 1024 एमबी मेमोरी देकर और JAVA_TOOL_OPTIONS का उपयोग करके प्रयोग चलाते हैं: "-XX: TieredCompilation -XX:TieredStopAtLevel=1" (प्रोफाइलिंग के बिना जावा क्लाइंट संकलन) जिसमें ठंडे और गर्म प्रारंभ समय के बीच बहुत अच्छा तालमेल है।

दुर्भाग्य से मैं लैम्ब्डा फ़ंक्शन को ज़ेड गारबेज कलेक्टर (डिफ़ॉल्ट और जेनरेशनल दोनों के साथ) के साथ प्रारंभ नहीं कर सका, त्रुटि आई:

Failed to commit memory (Operation not permitted)
[error][gc] Forced to lower max Java heap size from 872M(100%) to 0M(0%)
[error][gc] Failed to allocate initial Java heap (512M)
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

इसने 1024 जैसे 2048 एमबी और इससे भी अधिक एमबी जैसी बड़ी मेमोरी सेटिंग की कोशिश की, लेकिन वही त्रुटि अभी भी दिखाई दी।

आइए अन्य 3 कचरा संग्रहण एल्गोरिदम के साथ हमारे माप के परिणामों को देखें।

संक्षिप्त नाम c ठंडी शुरुआत के लिए है और w गर्म शुरुआत के लिए है।

स्नैपस्टार्ट सक्षम किए बिना ठंडा (सी) और गर्म (डब्ल्यू) प्रारंभ समय:

जीसी एल्गोरिथम सी पी50 सी पी75 सी पी90 सी पी99 c p99.9 सी अधिकतम w p50 w p75 w p90 w p99 w p99.9 अधिकतम
जी1 3655.17 3725.25 3811.88 4019.25 4027.30 4027.83 5.46 6.10 7.10 16.79 48.06 1929.79
समानांतर कलेक्टर 3714.10 3789.09 3857.87 3959.44 4075.89 4078.25 5.55 6.20 7.10 15.38 130.13 2017.92
शेनान्डाह 3963.40 4019.25 4096.30 4221.00 4388.78 4390.76 5.82 6.45 7.39 17.06 71.02 2159.21

स्नैपस्टार्ट सक्षम होने पर एमएस में प्राइमिंग के बिना ठंडा (सी) और गर्म (डब्ल्यू) प्रारंभ समय:

जीसी एल्गोरिथम सी पी50 सी पी75 सी पी90 सी पी99 c p99.9 सी अधिकतम w p50 w p75 w p90 w p99 w p99.9 अधिकतम
जी1 1867.27 1935.68 2152.02 2416.57 2426.25 2427.35 5.47 6.11 7.05 17.41 51.24 1522.04
समानांतर कलेक्टर 1990.62 2047.12 2202.07 2402.12 2418.99 2419.32 5.68 6.35 7.45 18.04 147.83 1577.21
शेनान्डाह 2195.47 2301.07 2563.37 3004.89 3029.01 3030.36 5.73 6.41 7.51 17.97 75.00 1843.34

स्नैपस्टार्ट सक्षम होने पर और एमएस में डायनेमोडीबी इनवोकेशन प्राइमिंग के साथ ठंडा (सी) और गर्म (डब्ल्यू) प्रारंभ समय:

जीसी एल्गोरिथम सी पी50 सी पी75 सी पी90 सी पी99 c p99.9 सी अधिकतम w p50 w p75 w p90 w p99 w p99.9 अधिकतम
जी1 833.50 875.34 1089.53 1205.26 1269.56 1269.8 5.46 6.10 7.16 16.39 46.19 499.13
समानांतर कलेक्टर 900.18 975.12 1058.41 1141.94 1253.17 1253.99 5.82 6.61 7.75 16.87 49.64 487.73
शेनान्डाह 1065.84 1131.71 1331.96 1473.44 1553.59 1554.95 5.77 6.40 7.39 17.20 65.06 500.48

निष्कर्ष

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

कृपया मिक्स और अधिकतम मेमोरी जैसी सेटिंग्स को ट्यून करने के लिए प्रत्येक कचरा संग्रहण एल्गोरिदम के दस्तावेज़ देखें जो प्रदर्शन में महत्वपूर्ण सुधार प्रदान कर सकता है और अपना माप स्वयं कर सकता है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/aws-builders/aws-snapstart-part-26-measuring-cold-and-warm-starts-with-java-21-using-different-garbage-collection- एल्गोरिदम- 8h3?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3