2011-07-07 22 views
8

मेरा मर्क्यूरियल क्लोन अविश्वसनीय रूप से धीमा हो गया है, संभावित रूप से ऑन-डिस्क विखंडन के कारण। क्या इसे अनुकूलित करने का कोई तरीका है?क्या मैं एक मर्कुरियल क्लोन अनुकूलित कर सकता हूं?

यह एक नया क्लोन बनाने का स्पष्ट तरीका है, फिर मेरे एमक्यू, सहेजे गए बंडल, एचजीआरसी, आदि को नए क्लोन में कॉपी करें और पुराने को हटा दें। लेकिन ऐसा लगता है कि किसी ने पहले इस समस्या में भाग लिया हो और इसे करने के लिए विस्तार किया हो?

+0

मैर्कुरियल के बारे में मुझे जो कुछ पता है, उससे ऐसा कुछ भी नहीं होना चाहिए जो मर्कुरियल करता है जो इसे विखंडन के संबंध में धीमा कर देता है, आदि। क्या आपने अपनी डिस्क पर एक सामान्य डिस्क डिफ्रैगमेंटर चलाने की कोशिश की है? इसके अलावा, किस तरह के संचालन धीमे होते हैं, और कितनी धीमी, इत्यादि? –

+0

एचजी qref वास्तव में धीमी चीज है। 70000ish के साथ रेपो पर शायद 50 सेकंड लेता है। मैं मानता हूं कि यह एक विशिष्ट विशिष्ट समस्या नहीं है (हालांकि मुझे लगता है कि मर्कुरियल एक्सेस पैटर्न इसे बढ़ाते हैं), लेकिन मैक में अंतर्निहित डिफ्रैगमेंटर (AFAICT) नहीं है। –

उत्तर

0

मैंने रिपो को हटा दिया और पुनः दावा किया, और यह बेहतर प्रदर्शन हुआ।

+0

जिसका अर्थ है: आप सभी इतिहास खो देते हैं। यह शायद ही कभी और फायदेमंद समाधान है। – Abel

+0

हाबेल: आप सभी इतिहास क्यों खो देंगे? –

+0

ओह, क्षमा करें, मैंने गलत समझा, सोचा कि आप केवल टिप की एक प्रति का मतलब है। अभी भी सुनिश्चित नहीं है कि आप जो भी हटा चुके हैं उसे पुनः प्राप्त कर सकते हैं। या आप का मतलब है कि सर्वर स्थिति को छोड़कर और सिर्फ एक नया क्लोन ले रहा है? यानी, आप का मतलब केवल अपने स्थानीय क्लोन को हटाना है? क्या वह शुद्ध नहीं है? – Abel

-2

रेपो को क्लोन करने और डिफ्रैग करने वाले फ़ोल्डर की रीयल-टाइम एंटी-वायरस निगरानी बंद करें। आप और कुछ नहीं कर सकते हैं।

7

यदि मैनिफेस्ट विशेष रूप से बड़ा हो जाता है तो इसका परिणाम धीमा प्रदर्शन हो सकता है। Mercurial में एक वैकल्पिक भंडार प्रारूप है - जनरलडेल्टा - जो अक्सर बहुत कम प्रकट होता है।

आप अपने प्रकट के आकार की जाँच कर सकते का उपयोग कर:

ls -lh .hg/store/*manifest*

generaldelta से अधिकतम मूल्य प्राप्त करने के लिए:

  1. स्थापित मर्क्युरियल 2.7.2 या बाद में (2.7.2 एक भी शामिल है सामान्य डील्टा में एक बग को ठीक करें जिसके परिणामस्वरूप बड़े मैनिफेस्ट आकार हो सकते हैं - लेकिन एक अच्छा मौका है कि आप पहले के संस्करण के साथ बग नहीं मारेंगे)।

  2. hg --config format.generaldelta=1 clone --pull orig orig.gd निष्पादित करें।

यह प्रकट आकार में कुछ सुधार दे सकता है, लेकिन पूर्ण लाभ नहीं।

  1. hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd निष्पादित करें।

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

जनरलडेल्टा के संभावित लाभों के उदाहरण के रूप में, मैंने हाल ही में एक रेपो को बदल दिया है जो ~ 55000 एसवीएन काम करता है (hgsubversion का उपयोग करके खींच लिया गया है) प्लस ~ 1000 Mercurial Commits/विलय/grafts, आदि मूल रेपो में प्रकट ~ 1.4GB। पहले क्लोन में मेनिफेस्ट ~ 600 एमबी था। क्लोन के क्लोन में मेनिफेस्ट ~ 30 एमबी था।

सामान्य डेलटा ऑनलाइन के बारे में बहुत सारी जानकारी नहीं है - यह अभी भी डिफ़ॉल्ट प्रारूप बनने से पहले किया जाना बाकी है, लेकिन यह कई परियोजनाओं के लिए अच्छा काम करता है। पहले कुछ Google खोज परिणामों में पहली बार पेश की गई जानकारी से कुछ जानकारी होती है, और Mercurial-dev मेलिंग सूची पर कुछ हालिया चर्चा हुई थी।

+0

+1 ~ 3400 के छोटे रेपो के लिए भी और बहुत छोटा ~ 17 एमबी मूल मेनिफेस्ट आकार के लिए दो क्लोन मूल एचडी ऑपरेशंस को मूल समय के एक तिहाई तक घटाते हैं (अंतिम मैनिफेस्ट 11 एमबी था)। –

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