2009-10-26 7 views
38

फ़ायरफ़ॉक्स 3 एक नए आवंटक के साथ आया: jemallocजेमलोक कैसे काम करता है? क्या लाभ हैं?

मैंने कई स्थानों पर सुना है कि यह नया आवंटन बेहतर है। शीर्ष Google परिणामों ने कोई और जानकारी नहीं दी है और मुझे दिलचस्पी है कि यह वास्तव में कैसे काम करता है।

उत्तर

71

jemalloc पहले "जेसन इवांस" के मस्तिष्क का बच्चा फ्रीबीएसडी के लिए दिखाई दिया, इसलिए "जे"। मैं उसे अहंकारी होने के लिए उपहास करता था, मैंने कभी एक ऑपरेटिंग सिस्टम नहीं लिखा था जिसे paxos :-)

पूर्ण विवरण के लिए this PDF देखें। यह एक श्वेत पत्र है जो विस्तार से वर्णन करता है कि एल्गोरिदम कैसे काम करते हैं।

मुख्य लाभ बहु-प्रोसेसर और बहु-थ्रेडेड सिस्टमों में स्केलेबिलिटी है, कुछ हिस्सों में, कच्चे मेमोरी के टुकड़े जो आवंटन किए जाते हैं) का उपयोग करके हासिल किया जाता है।

सिंगल-थ्रेडेड स्थितियों में, एकाधिक क्षेत्रों में कोई वास्तविक लाभ नहीं है, इसलिए एक ही क्षेत्र का उपयोग किया जाता है।

हालांकि, बहु थ्रेडेड परिस्थितियों में, कई क्षेत्रों को बनाया जाता है (प्रोसेसर के रूप में कई बार चारों ओर होते हैं), और राउंड-रॉबिन फैशन में इन क्षेत्रों को धागे आवंटित किए जाते हैं।

इसका मतलब है कि लॉक विवाद को तब से कम किया जा सकता है, जबकि एकाधिक थ्रेड malloc या free पर कॉल कर सकते हैं, वे केवल तभी विरोध करेंगे जब वे एक ही क्षेत्र साझा करते हैं। विभिन्न क्षेत्रों के साथ दो धागे एक-दूसरे को प्रभावित नहीं करेंगे।

इसके अलावा, jemalloc कैश इलाके के लिए अनुकूलित करने का प्रयास करता है क्योंकि राम से डेटा लाने के कार्य को पहले से ही सीपीयू कैश में डेटा का उपयोग करने से बहुत धीमा है (रैम बनाम धीमी गति से लाने के बीच अंतर को अवधारणा में अलग नहीं डिस्क)। इसके अंत में, यह पहले स्मृति उपयोग को कम करने की कोशिश करता है क्योंकि यह सुनिश्चित करने की अधिक संभावना है कि एप्लिकेशन का पूरा कार्य सेट कैश में है।

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

श्वेत पत्र से, ये रणनीतियों एकल थ्रेडेड उपयोग के लिए सुधार प्रदान करते हुए सिंगल थ्रेडेड उपयोग के लिए वर्तमान सर्वोत्तम एल्गोरिदम के समान प्रदर्शन देने लगते हैं।

[...] निष्कर्ष निकाला है कि jemalloc हमारे लिए चलाने के बाद विखंडन की छोटी राशि दे दी है:

+0

लगता है कि मैंने वास्तव में पहले परिणाम की निगरानी की है। : पी लेकिन संकेत के लिए बहुत बहुत धन्यवाद। – Albert

9

वहाँ एक intersting स्रोत है: सी-स्रोत ही: http://mxr.mozilla.org/mozilla-central/source/memory/mozjemalloc/jemalloc.c

शुरुआत में, एक संक्षिप्त सारांश का वर्णन करता है कि यह कैसे मोटे तौर पर काम करता है। हालांकि, एक और गहराई एल्गोरिदम विश्लेषण गुम है।

4

क्या लाभ jemalloc, मोज़िला के लिए लाया http://blog.pavlov.net/2008/03/11/firefox-3-memory-usage/ प्रति के रूप में (यह भी पहली mozilla + jemalloc के लिए परिणाम गूगल) एक लंबी अवधि। [...] विंडोज विस्टा पर हमारे स्वचालित परीक्षणों ने मेमोरी उपयोग में 22% ड्रॉप दिखाया जब हमने जेमलोक चालू किया।

1

एयरोस्पेइक ने 2013 में एक निजी शाखा में जेमलोक को वापस लागू किया। 2014 में, इसे एयरोस्पेइक 3.3 में शामिल किया गया था।Psi Mankoski ने केवल High Scalability के लिए, एरोस्पेक के कार्यान्वयन के बारे में लिखा था, साथ ही साथ और प्रभावी रूप से जेमलोक का उपयोग कैसे किया जाए।

जेमलोक ने वास्तव में एरोस्पाइक को आधुनिक मल्टीथ्रेडेड, बहु-सीपीयू, बहु-कोर कंप्यूटर आर्किटेक्चर का लाभ लेने में मदद की। Arena प्रबंधित करने के लिए jemalloc में निर्मित कुछ बहुत ही महत्वपूर्ण डीबगिंग क्षमताओं भी हैं। डिबगिंग ने Psi को बताने में सक्षम होने की अनुमति दी, उदाहरण के लिए, एक वास्तविक स्मृति रिसाव क्या था, बनाम स्मृति विखंडन का परिणाम क्या था। Psi यह भी चर्चा करता है कि कैसे थ्रेड कैश और प्रति थ्रेड आवंटन ने समग्र प्रदर्शन (गति) सुधार प्रदान किया।

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