2013-04-29 5 views
8

से पहले अग्रिम चेतावनी प्राप्त करना एक नरम वास्तविक समय प्रणाली के संदर्भ के लिए जो 200ms से अधिक के लिए रुकना नहीं चाहिए, हम पूर्ण जीसी आने से पहले अग्रिम चेतावनी पाने का एक तरीका ढूंढ रहे हैं। हमें एहसास है कि हम इससे बचने में सक्षम नहीं हो सकते हैं, लेकिन हम सिस्टम स्टालों से पहले किसी अन्य नोड में विफल होना चाहते हैं।पूर्ण जीसी

हम एक ऐसी योजना के साथ आने में सक्षम हुए हैं जो हमें पूर्ण जीसी से पहले अग्रिम चेतावनी प्रदान करेगा जो सिस्टम को कई सेकंड (जिसे हमें टालना चाहिए) के लिए रोक सकता है।

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

लॉग में उत्पादन तो दिखाई देता है:

Statistics for BinaryTreeDictionary: 
------------------------------------ 
Total Free Space: 382153298 
Max Chunk Size: 382064598 
Number of Blocks: 28 
Av. Block Size: 13648332 
Tree  Height: 8 

विशेष रूप से, अधिक से अधिक मुक्त हिस्सा आकार 382,064,598 शब्द है। 64-बिट शब्दों के साथ यह 2 9 15 एमबी से कम होना चाहिए। यह संख्या लगभग 1 एमबी प्रति घंटे की दर से बहुत धीरे-धीरे घट रही है।

यह हमारी समझ है कि जब तक अधिकतम मुक्त खंड आकार युवा पीढ़ी (किसी भी humungous वस्तु आवंटन ग्रहण) से बड़ा है, हर वस्तु पदोन्नति सफल होना चाहिए।

हाल ही में, हमने कई दिनों के तनाव परीक्षण चलाए हैं, और देख रहे हैं कि सीएमएस कुल पुराने क्षेत्र अंतरिक्ष के 94% के ऊपर अधिकतम चंक आकार बनाए रखने में सक्षम था। अधिकतम मुक्त हिस्सा आकार 1 एमबी/घंटा से कम की दर से घट रहा है, जो ठीक होना चाहिए - इसके अनुसार हम जल्द ही किसी भी समय पूर्ण जीसी नहीं मारेंगे, और सर्वर शायद रखरखाव के लिए नीचे आ जाएंगे अक्सर पूर्ण जीसी से हो सकता है।

पिछले परीक्षण में, एक समय जब सिस्टम कम स्मृति कुशल था, हम सिस्टम को 10 घंटे के लिए चलाने में सक्षम हैं। पहले घंटे के दौरान, अधिकतम मुफ्त खंड आकार 100 एमबी तक घट गया है, जहां यह 8 घंटे से अधिक समय तक रहा। रन के आखिरी 40 मिनट के दौरान, अधिकतम जीबीसी होने पर अधिकतम फ्री चंक आकार 0 की स्थिर दर से कम हो गया है - यह बहुत उत्साहजनक था, क्योंकि उस वर्कलोड के लिए हमें 40 मिनट का अग्रिम प्राप्त करने में सक्षम होना प्रतीत होता था चेतावनी (जब खंड आकार 0 की ओर लगातार गिरावट शुरू हुई)।

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

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

+0

क्या आपके लिए जेआरॉकिट निर्धारक जीसी का परीक्षण करना संभव है? http://docs.oracle.com/cd/E15289_01/doc.40/e15071/intro.htm#i1010645 – fglez

+0

हम इसके बारे में जानते हैं, साथ ही साथ आईबीएम और ओरेकल के अन्य वास्तविक समय की पेशकश भी जानते हैं। हमारे लिए कुछ कमजोर गारंटी (या यहां तक ​​कि केवल ह्युरिस्टिक्स) होना महत्वपूर्ण है जो हमें हॉटस्पॉट पर भी तैनात करने में सक्षम बनाता है। – nadavwr

+2

क्या आपने वैकल्पिक नोड्स पर आवधिक पूर्ण जीसी को मजबूर करने पर विचार किया है? यह अधिक अनुमानित व्यवहार की अनुमति देगा। विखंडन बढ़ने के साथ ही लंबी अवधि में सीएमएस अनुमानित नहीं है। – fglez

उत्तर

2

मैं यहां ओरेकल से जॉन मसामित्सु द्वारा एक बहुत ही प्रबुद्ध और उत्साहजनक उत्तर से प्रासंगिक अंश पोस्ट करता हूं, जो मुझे हॉटस्पॉट जीसी मेलिंग सूची (हॉटस्पॉट[email protected]) से मिला है - वह हॉटस्पॉट पर काम करता है , तो यह वास्तव में बहुत अच्छी खबर है।

किसी भी दर पर, प्रश्न अब के लिए खुला रहता है (मैं ईमेल को उद्धृत करने के लिए खुद को क्रेडिट नहीं कर सकता :-)), इसलिए कृपया अपने सुझाव जोड़ें!

स्वरूपण: मूल पोस्ट से उद्धरण जॉन की प्रतिक्रिया से अधिक भारी इंडेंट हैं।

यह हमारी समझ है कि इतने लंबे समय के अधिकतम मुक्त हिस्सा आकार के रूप में युवा पीढ़ी (कोई humungous वस्तु आवंटन कल्पना करते हुए) से भी बड़ा है है, हर वस्तु पदोन्नति सफल होने चाहिए।

एक बहुत बड़ी डिग्री करने के लिए यह सही है। के तहत परिस्थितियां हैं जो युवा पीढ़ी से सीएमएस पीढ़ी में प्रचारित एक वस्तु को युवा पीढ़ी में सीएमएस उत्पादन में अधिक जगह की आवश्यकता होगी। मैं नहीं सोचता कि यह एक महत्वपूर्ण हद तक होता है।

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

< --snip ->

आप के लिए मेरा प्रश्न: यह सोचते हैं कि यह सब दर्शाता है उत्पादन में एक लंबे समय तक शिखर काम का बोझ (समय में किसी भी बिंदु पर काम का बोझ होगा केवल कम हो), क्या यह ध्वनि एक वैध दृष्टिकोण की तरह है? विश्वसनीयता की डिग्री के लिए आपको लगता है कि हम जीसी लॉग से अधिकतम मुफ्त खंड आकार आंकड़े पर भरोसा करने में सक्षम होना चाहिए?

अधिकतम मुक्त हिस्सा आकार समय जीसी यह प्रिंट में सटीक है, लेकिन यह बार जब आप इसे पढ़ सकते हैं और अपने निर्णय लेने से बासी हो सकता है।

हमारे वर्कलोड के लिए, इस मीट्रिक एक बहुत धीमी गति से नीचे सर्पिल पर है, इसलिए एक छोटे से बासांपन हमें चोट नहीं होगा।

< --snip ->

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

मुझे लगता है कि अपने मीट्रिक के रूप में अधिक से अधिक मुक्त हिस्सा आकार के उपयोग के लिए एक अच्छा विकल्प है। यह बहुत रूढ़िवादी है (जो आप चाहते हैं की तरह लगता है) और ऑब्जेक्ट आकार के अजीब मिश्रणों के अधीन नहीं है।

जी 1 के लिए मुझे लगता है कि आप पूरी तरह से मुक्त क्षेत्रों की संख्या का उपयोग कर सकते हैं। मुझे नहीं पता कि यह वर्तमान में किसी भी लॉग में मुद्रित है या नहीं, लेकिन यह शायद एक मीट्रिक है जिसे हम बनाए रखते हैं (या आसानी से कर सकते हैं)। यदि पूरी तरह से क्षेत्रों की संख्या समय के साथ घट जाती है, तो यह संकेत दे सकता है कि एक पूर्ण जीसी आ रहा है।

जॉन

आप जॉन धन्यवाद!

0

विभाजन और जीत!

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

इसके लिए जावा प्रक्रिया बनाने के लिए महत्वपूर्ण वास्तविक समय कार्य और उनके व्यावसायिक नियमों की पहचान करें।और इस पर किसी भी पारंपरिक कार्यक्रम अभ्यास का उपयोग नहीं किया गया है, विचार स्मृति को साफ रखने के लिए जीसी पर निर्भर नहीं है। इसके बारे में सोचो, और रचनात्मक बनें।

अब अन्य परतों और प्रक्रियाओं को बनाएं, बाकी को संभालने के लिए, और सब कुछ जोड़ने के लिए पाइप कोड बनाएं।

और यहां तक ​​कि आप वास्तविक समय की प्रक्रिया का जीवन निर्धारित कर सकते हैं, या इसे मारने और एक नया ताजा बनाने के लिए अपने प्रतिक्रिया समय की जांच कर सकते हैं। लेकिन मैं उम्मीद कर सकता हूं कि इसे उच्च प्रतिक्रिया रखने के लिए आपको इसे मारने की आवश्यकता नहीं होगी।

शुभकामनाएं!

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