2010-11-11 28 views
8

30k + küçük dosyaları olan bir repo'um var ve sunucuya sadece https:// aracılığıyla internet üzerinden erişebiliyorum. Ödeme çok, çok yavaş. Saat sırasına göre. İnternet bağlantı hızı ~ 20Mbs ve yerel makine 3Ghz çok çekirdekli & 10k RPM HD.SVN çıkışları çok iş parçacıklı olabilir mi?

(svn:// protokol ne yazık ki, bir seçenek değildir.)

Benim soru:

svn Can çalışan bir kopyasının bir çok kanallı paralel ödeme yapmak?

svn checkout dosya-dizin-sıralı bir sırada gidiyor gibi görünüyor. Her dosya arasında küçük bir gecikme var ve sanırım http isteği/yanıtı ve muhtemelen yerel dosya sistemimin gecikmeleri. (Belki biraz sunucu dosya sistemi gecikme de?)

Teşekkür

+0

o ödeme süresi I/O bant genişliği hakim olacaktır. Durumun böyle olmadığını bilmek isterdim. –

+0

Denemeye çalıştığınız gibi açık bir hack, açıkça bir şeylerin çevre ile ilgili yanlış bir şey olduğunun bir göstergesidir. Belki de durumunuzu açıklayan başka bir soru sormaktan daha iyi olursunuz ve işlerin nasıl daha iyi duruma getirilebileceği konusunda öneriler isteyin. Örneğin, neden tek bir SVN repo'da 30.000 dosya var. Belki onları biraz ayırmanın zamanı geldi mi? –

+2

@spencer Repo büyük, ama bu bana bağlı değil. Diğer düzenlerin daha iyi olduğunu biliyorum, ama bu benim kontrolümde olmadığı için, bu soruyu sormadım. – nonot1

cevap

9

Bir komut bilmiyorum ama küçük bir Python (veya seçim aracını) yardım etmek komut dosyası yazabilirsiniz. "svn listesi" her alt dizinin adını verir. Ardından, her alt dizinin arka planda bir çıkış yapmasını sağlayın, böylece paralel olarak gerçekleşir. Bunu, dizin yapınıza bağlı olarak ve tüm küçük dosyaların bulunduğu yere göre 2./3. düzeylerde yapmak gerekebilir.

Aynı dizinde 30K dosyanızın olmadığı varsayılıyor.

+0

Bu kötü bir fikir değil. Muhtemelen bir dizi sığ kontrol de kullanabilirsiniz. Herhangi bir araç bunu zaten yapıyor mu? – nonot1

0

SVN bir seferde birden fazla dosyayı teslim yüzden gelemedi herhangi bir nedenle düşünemiyorum rağmen, herhangi bir SVN istemcisi bilmiyorum bunu yapar.

-1

Sunucuya ping zamanına çok bağlı olmaz mı?

Ping uzunsa, bu konuda bir şey yapamayabilirsiniz.

Ayrıca, güvenlik duvarını ele geçiren yönlendiricinin geride kalması ve durum paketlemesi gibi bir şey kullanmak, yani her bir pakete bakmak gibi bir şansı vardır. yönlendirici svn sunucusundan paket taramasından kaçmak için değiştirilebilir.

+1

Teoride ping zamanı veya "gecikme süresi" sadece ilk paketin ulaşması için gereken süreyi etkiler. SVN birçok ileri geri-ve-ileri isteği yaptığı için, paralellik kullanma fikri çok geçerlidir. Darboğaz saf bant genişliği olsaydı, paralellik hiç yardımcı olmazdı. – Evert

0

Kudreti seyrek kasaların (daha yeni SVN sürümleri> = 1.6 ya da öylesine!) Epeyce yardımcı olur?

Ayrıca
time svn co --depth=empty http://URI 

cd svn_repo_root/ 

time svn up --depth=infinity * 

, belki de (birçok küçük dosyaların çok arama durumunda etrafında kötü bir işletim sistemi veya SVN sunucu/istemci uygulaması performansını çalışması için SSD'ler ile sunucu ve/veya müşteri kaynağı kullanışlı nedeniyle küçük dosyalar halinde dosya sistemi işlemlerini baskın hale getirmek için zaman gecikmesini aramak - arama yapmak SSD'lerle ilgili bir problemdir.

Ve belki de sunucu üzerinde tüm depo ağacında ayrıştırmak için bir senaryo yazarak, şeyler kontrol öncesinde sunucudaki tüm dosyaların önbellek hotness sağlanması değer.

2

Paralel svn ikis GNU Paralel kullanabilirsiniz. örnek-

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

Bu 'bar' dizin altında paralel svn checkouts başlayacaktır. (Kontrol etmedim rağmen) hayal ediyorum

İlgili konular