2010-11-11 18 views
8

मेरे पास 30k + छोटी फ़ाइलों के साथ एक रेपो है, और मैं केवल https:// के माध्यम से इंटरनेट पर सर्वर तक पहुंच सकता हूं। चेकआउट बहुत धीमी है। घंटों के आदेश पर। इंटरनेट कनेक्शन की गति ~ 20 एमबीएस है और स्थानीय मशीन 3 जीएचजेड मल्टी-कोर & 10 के आरपीएम एचडी है।क्या एक एसवीएन चेकआउट बहु-थ्रेडेड हो सकता है?

(svn:// प्रोटोकॉल एक विकल्प, दुर्भाग्य से नहीं है।)

तो मेरे सवाल:

svn कर सकते हैं एक काम की नकल की एक मल्टी-थ्रेडेड समानांतर चेकआउट करते हैं?

ऐसा लगता है कि svn चेकआउट अनुक्रमिक क्रम में फ़ाइल-दर-फ़ाइल जा रहा है। प्रत्येक फ़ाइल के बीच एक मामूली देरी होती है और मुझे लगता है कि यह http अनुरोध/उत्तर है और संभवतः मेरे स्थानीय फाइल सिस्टम की देरी है। (शायद एक छोटे से सर्वर फाइल सिस्टम विलंबता के साथ-साथ?)

धन्यवाद

+0

मुझे कल्पना होगी (हालांकि मैंने जांच नहीं की है) कि चेकआउट समय I/O बैंडविड्थ का प्रभुत्व होगा। मुझे यह जानने में दिलचस्पी होगी कि क्या यह मामला नहीं है। –

+0

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

+2

@ स्पेंसर रेपो बड़ा है, लेकिन यह मेरे ऊपर नहीं है। मुझे पता है कि अन्य लेआउट बेहतर हैं, लेकिन चूंकि यह मेरे नियंत्रण में नहीं है, इसलिए मैंने उस सवाल से नहीं पूछा। – nonot1

उत्तर

9

मुझे कमांड की जानकारी नहीं है, लेकिन आप मदद के लिए एक छोटा पायथन (या अपनी पसंद का टूल) स्क्रिप्ट लिख सकते हैं। "svn list" आपको प्रत्येक उपनिर्देशिका का नाम देता है। फिर आप पृष्ठभूमि में प्रत्येक उपनिर्देशिका का चेकआउट कर सकते हैं ताकि वे समानांतर में हों। आपको अपनी निर्देशिका संरचना के आधार पर दूसरे/तीसरे/जो भी स्तर गहराई में ऐसा करने की आवश्यकता हो सकती है और जहां सभी छोटी फाइलें रहती हैं।

मुझे लगता है कि आपके पास निश्चित निर्देशिका में 30K फ़ाइलें नहीं हैं।

+0

यह एक बुरा विचार नहीं है। आप शायद उथले चेकआउट की एक श्रृंखला का भी उपयोग कर सकते हैं। क्या कोई उपकरण पहले से ही ऐसा करता है? – nonot1

0

हालांकि मैं किसी भी कारण है कि SVN एक समय में एक से अधिक फ़ाइल चेकआउट नहीं कर सकता है के बारे में सोच नहीं कर सकते, मैं किसी भी SVN ग्राहक पता नहीं है ऐसा करता है।

-1

क्या यह सर्वर पर पिंग समय पर बहुत निर्भर नहीं होगा?

यदि पिंग लंबा है, तो आप इसके बारे में कुछ भी करने में सक्षम नहीं हो सकते हैं।

एक मौका भी है कि फ़ायरवॉल को संभालने वाला राउटर पीछे गिर रहा है और राज्य के पैकेट निरीक्षण जैसे कुछ का उपयोग कर रहा है, यानी प्रत्येक पैकेट को देख रहा है। एसवीएन सर्वर से बचने वाले पैकेट स्कैनिंग से सामान देने के लिए राउटर को बदला जा सकता है।

+1

सिद्धांत में पिंग-टाइम या 'विलंबता' केवल पहले पैकेट के आने के समय को प्रभावित करता है। चूंकि एसवीएन बहुत अनुक्रमिक बैक-एंड-फॉरवर्ड अनुरोध करता है, समानांतरता का उपयोग करने का विचार बहुत मान्य है। अगर बाधा शुद्ध बैंडविड्थ थी, समानांतरता बिल्कुल मदद नहीं करेगी। – Evert

0

मई स्पैस चेकआउट (नए एसवीएन संस्करण,> = 1.6 या तो!) प्रदर्शन के अनुसार मदद करने के लिए होता है?

time svn co --depth=empty http://URI 

cd svn_repo_root/ 

time svn up --depth=infinity * 

इसके अलावा, शायद यह उपयोगी SSDs के साथ सर्वर और/या ग्राहक की आपूर्ति करने (क्रम में कई छोटे फ़ाइलों की बहु देखने के मामले में चारों ओर बुरा ऑपरेटिंग सिस्टम या SVN सर्वर/ग्राहक कार्यान्वयन प्रदर्शन काम करने के लिए है की वजह से छोटी फाइलों के मामले में समय विलंबता पूरी तरह से फाइल सिस्टम ऑपरेशंस पर हावी है - मांग एसएसडी के साथ एक समस्या से बहुत कम है)।

और शायद सर्वर पर सभी रिपोजिटरी पेड़ के माध्यम से पार्स करने के लिए स्क्रिप्ट लिखकर, चीजों को जांचने से पहले सर्वर पर सभी फ़ाइलों की कैश-हॉटनेस सुनिश्चित करने के लायक है।

2

आप समानांतर svn चेकआउट के लिए जीएनयू समानांतर का उपयोग कर सकते हैं। उदाहरण

svn ls 'https://foo/bar' | parallel svn export 'https://foo/bar/'{} 

यह 'बार' निर्देशिका के अंतर्गत समानांतर SVN checkouts शुरू कर देंगे।

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