जैसा कि http://jemalloc.net/ पर कहा गया है:
jemalloc एक सामान्य प्रयोजन malloc(3) कार्यान्वयन है जो खंडन से बचने और स्केलेबल समवर्ती समर्थन पर जोर देता है।
कुछ Sphinx और Manticore Search उपयोगकर्ता jemalloc को malloc पर पसंद करते हैं और कहते हैं कि यह कुछ RAM बचाने की अनुमति देता है। मैंने 3 Manticore क्लस्टरों (se03/03-2, se04/04-2, se05/05-2) पर 2 सप्ताह तक यह परीक्षण किया है कि jemalloc संसाधन खपत और प्रतिक्रिया समय को कैसे प्रभावित करता है, प्रत्येक में:
- समान मात्रा में ट्रैफ़िक प्राप्त कर रहा था
- लगभग समान मात्रा का डेटा होस्ट कर रहा था
- हार्डवेयर, सॉफ़्टवेयर के मामले में पूरी तरह से समान 2 Manticore सर्वर थे, और 100% समान अनुक्रमांक और यहां तक कि सर्वरों के बीच लोड संतुलन भी था
se03 और se03-2 पर मैंने jemalloc सक्षम किया और THP (पारदर्शी विशाल पृष्ठ) को अक्षम किया और se03-2 पर Manticore को पुनः आरंभ किया
se04-2 पर मैंने केवल Manticore को पुनः आरंभ किया, मैंने se04 को छुआ नहीं। se04/04-2 एक नियंत्रण समूह है।
se05-2 पर मैंने jemalloc सक्षम किया, लेकिन THP को अक्षम नहीं किया
यहां 2 सप्ताह में जो मिला है:
RSS RAM खपत:
लेटेंसी गतिशीलता (मैंने चालित औसत (प्रतिक्रिया समय) का उपयोग किया):
संकीर्ण लेटेंसी सांख्यिकी:
निष्कर्ष:
- RSS RAM: THP को अक्षम किए बिना या उसके साथ jemalloc सक्षम करने से searchd द्वारा RSS RAM खपत में 5-6% की कमी आती है2)
- THP को अक्षम किए बिना jemalloc को सक्षम करना (se05-2) लेटेंसी को बुरा बनाता है: avg(प्रतिक्रिया समय) - 23% से, 95/99p पर कोई प्रभाव नहीं हो सकता है क्योंकि भिन्नताएँ त्रुटि के मार्जिन के भीतर हैं (se04/04-2 के नियंत्रण समूह को देखें जहां कुछ नहीं बदला गया)
- THP को अक्षम करने के साथ jemalloc को सक्षम करना (se03-2) बनाता है:
- औसत लेटेंसी 10% बेहतर**
- 95% लेटेंसी 8% खराब
- 99% लेटेंसी 3.6% बेहतर है, लेकिन यह त्रुटि के मार्जिन के भीतर है, इसलिए हम इसे नहीं गिन सकते
तो इस मामले में हमें यह तय करने की आवश्यकता है कि हम क्या पसंद करते हैं:
- 5% RAM बचाना और 10% बेहतर औसत लेटेंसी रखना, लेकिन 5% भारी अनुरोधों के लिए उच्च लेटेंसी स्पाइक्स
- या सभी को वैसे ही छोड़ दें: कोई RAM बचत नहीं, बुरी औसत लेटेंसी, लेकिन भारी क्वेरी के लिए बेहतर लेटेंसी
परिणाम कई चीजों पर निर्भर कर सकते हैं: हार्डवेयर, कार्यभार (डेटा की मात्रा, OPS आदि), लेकिन यह दिखता है कि jemalloc एक दिलचस्प चीज है जिसके साथ प्रयास करना और बड़े इंस्टॉलेशन में कुछ RAM/पैसा बचाने के लिए कोशिश करना शामिल है जहां 5% बचत करना कुछ नए सर्वर खरीदने का मतलब हो सकता है।
यदि आपको इसे आपके इंस्टॉलेशन पर लागू करने में हमारी सहायता की आवश्यकता हो तो हमें बताएं। हम आपको अन्य प्रदर्शन और संसाधन अनुकूलन के साथ भी मदद कर सकते हैं।
P.S. jemalloc को आजमाने के विचार के लिए https://www.sphinxconnector.net/ का धन्यवाद।