[Gelistirici] Pisi delta iyileştirmeleri
Gökçen Eraslan
gokcen at pardus.org.tr
3 Şub 2009 Sal 12:36:59 EET
Selamlar,
ati-control-center paketinin kendi boyutunun 5.6M, bir önceki sürümüyle
arasındaki deltanınsa 5.5M olduğunu görünce, Ozan'la biraz delta'da
yapılabilecek iyileştirmeler üzerine düşündük.
Şu anda, iki paket arasında farklı olan tüm dosyalar, aynen delta paketlerine
giriyor. Sadece farklı olanların pakete girmesi tabi ki boyutta küçülmeyi
sağlıyor.
Bu noktada şöyle bir durum var, binary dosyalar, kodlarında bir değişiklik
olmasa dahi her derlendiklerinde farklı SHA1'lere sahip oluyorlar. Yani aynı
kodu tekrar tekrar derlediğinizde (teknik detaylarını tam bilemiyorum,
linklendiği kitaplıkların offset'lerinden ya da dosya içine yazılan bir
timestamp'ten olsa gerek) üretilen her dosyanın SHA1'i farklı oluyor. Bu da
demek oluyor ki, büyük çoğunluğu binary olan paketlerde, ufak bir değişiklik
olsa dahi tüm binary paketler tekrar derlendiği için delta pakete aslında
değişmeyen binary dosyalar da giriyor ve ati-control-conter paketindeki gibi
büyük boyutlu deltalar üretiliyor.
Şimdi gelelim bunu nasıl engelleyebileceğimize:
1- Yeniden derlenen iki binary'nin, kaynak kodunun değiştiği için mi yoksa
sadece yeniden derlendiği için mi farklı olduğunu kestirebilir miyiz?
1a- Eğer, ekstirebilirsek, SHA1'i farklı olan fakat aslında sadece tekrar
derlenmiş olan binary'leri deltaya almayız.
1b- Kestiremezsek, şöyle bir şey düşündük, değişen dosyaların tamamını delta
paketine almak yerine, eskileriyle olan xdelta'larını delta paketine
alabiliriz. Bu şekilde baya bir azalma sağladık delta paketlerinde. Örneğin,
değişen dosyalar yerine sadece eski ve yeniler arasındaki xdeltaların olduğu
ati-control-center paketinin boyutu, 5.5M'tan 1.4M'a düştü.(İlgili yamayı
ekledim) Bu durumda da şöyle bir sıkıntı çıkıyor, delta paketini kurarken,
eğer eski dosyanın aynısını sistemde bulamazsak güncellemeyi hiç yapamıyoruz.
Bunun da üstesinden gelmek içinse, şöyle bir şey yapılabilir, güncelleme
yapılmadan önce paket "pisi check" ile kontrol edilir, "pisi check" o paket
için sorunsuz tamamlanırsa, bu eski paketin aynen sistemde olduğu ve xdeltanın
dosyaya uygulanabileceği anlamına geliyor, dolayısıyla ufak boyutlardaki delta
paketini kurabiliriz. "pisi check"te sorun çıkarsa da, delta yerine depodan
gerçek paket kurulur.
Son çözüm bize baya mantıklı geldi, artık eski paketin install.tar.lzma'sı da
açıldığı için farmda birazcık delta üretim hızı düşüyor fakat boyutların baya
azalacağını tahmin ediyoruz. Olmadı, 1a'da bahsettiğim yöntemle de, değişmeyen
binary dosyaları delta paketlerine almayarak da baya iyileşme sağlayabiliriz.
2009 için deltada baya iyileştirme yapabiliriz gibi geldi.
Saygılar.
--
Gökçen Eraslan
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: xdelta-improvement.diff
Type: text/x-patch
Size: 1695 bytes
Desc: kullanılamıyor
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20090203/cb83d770/attachment-0002.bin>
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi