PROBLEM: cvs i puchnięcie (znowu)

Bartłomiej Ogryczak 0neg w poczta.gazeta.pl
Nie, 16 Mar 2003, 22:34:04 CET


Tomasz Kłoczko wrote:

>>>Jest kiepsko :>
>>>Otóż cvs puchnie (tak jak to juz bywało niegdyś).
>>>
>>>Mam .5G RAM i ponad 2GB swap. Średnio wszystko się mieści w pamięci i swap 
>>>dotykany jest w pikach do kilkudziesiąt MB. Przy ciągnięciu dużych plików
>>>(zapewne źródła OO) całość puchnie do poziomu przy którym cvs server 
>>>wylatuje z out of memory.
>>
>>CVS wyjątkowo słabo nadaje się do serwowania dużych binarów.
>  
> Z racji kiepskiej gospodatrki pamięcią.

To akurat kwestia wtórna. W CVS-ie obsługa binarek jest zrobiona na
"odwal się". Nie wykorzystuje żadnego xdelta ani nic takiego, tylko
po każdej zmianie serwuje cały plik. O ile mnie pamięć nie myli
CVS nie ma żadnego mechanizmu wznawiania transmisji. Dochodzi jeszcze
problem blokowania. Albo wrzucisz pliki do pamięci na czas transmisji,
albo masz na cały czas transmisji zablokowany cały moduł. Po stronie
klienta też niefajnie. Ściągając duży plik CVS-em nic innego w tym
czasie w CVS-ie nie zrobisz. To nie jest problemem, kiedy owymi
binariami są np. pliki PNG wielkości do 50KB, ale już kiedy są to
pliki rzędu 30MB-150MB, a download osiąga zawrotną prędkość
5KB/s to jest problem. W dodatku nie wiadomo kiedy połączenie się
zerwie i trzeba będzie ciągnąć od początku.
Podsumowując - trzmymanie tar.gz w CVS-ie to totalna porażka.
Pewnym rozwiązaniem byłby zastąpienie CVS-a przez Subversion,
ale nadal byłby to rozwiązanie połowiczne. Najlepiej byłby jednak
serwować źródła przez FTP/HTTP. Niekoniecznie z oryginalnymi nazwami,
mogą mieć np. doklejony timestamp albo numer(y) wersji SPEC-ów.

bart
-- 
"Víte, jaký je rozdíl mezi jablkama a Win98? No jablka padají jenom na podzim."
   bart @bart.w-wa.pl || http://bart.w-wa.pl || http://faq.pl/php/



Więcej informacji o liście dyskusyjnej pld-devel-pl