[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