[Teknik] pisi index işlemi için iyileştirme

Taner Güven tanerguven at gmail.com
16 Ağu 2011 Sal 13:14:31 EEST


Merhabalar,

Staj projemsi olarak Pisi'de iyileştirmeler üzerine çalışıyorum.
"pisi index" için bir patch hazırladım.

Öncelikle problemi kısaca tanımlıyayım:
"pisi index" komutunu çalıştırdığımızda "pisi-index.xml"i oluşturmak için,
dizin altındaki tüm paketlerin son versiyonları taranıyor ve sha1sum'ları
hesaplanıyor.
Yani GB'larca veri diskten okunup sha1sum'ı hesaplanıyor.

Burada  çalıştığım iyileştirme, değişmeyen paketlerin sha1sum ve metadata
bilgilerinin eski pisi-index.xml'den alınması.

2 farklı patch oluşturdum(ekte).

*pisi_index_use_old_index.patch*
normal index ile aynı çıktıyı üretiyor.

eski indexte olan paketleri, orjinal kodda var olan pool'u kullanarak aynı
sırayla ekliyor.

indexte var olan paketler için pool'da çok kısa bir fonksiyon
çalıştırıldığından dolayı python multiprocessing modülündeki keyboard
interrupt bug'ı gerçekleşebiliyor.

*hatali_pisi_use_old_index_2.patch*
normal index'den farklı çıktı üretiyor. (xml içerisindeki paket sırası
farklı, dolayısıyla sha1sum farklı)

kendi içinde,
güncelleme geldikten sonra çalıştırıldığında oluşturulan ilk çıktı ile 2.
kez çalıştırıldığında oluşturulan çıktı farklı. (xml sırası olarak)
2.kez ve sonraki çalıştırmalarda paketlerde değişiklik olmadıysa aynı
çıktıyı üretiyor. Bu hata düzeltilebilirse işe yarayabilir.

Keyboard interrupt hatasının gerçekleşme ihtimali çok düşük. Çünkü eski
indexte var olan bilgiyi doğrudan ekliyor, pool kullanmıyor. Eski index'te
olmayan paketleri pool kullanarak orjinal pisi'deki yöntem ile ekliyor.


*Orjinal pisi ve patch'ler ile yaptığım testler*:

(testleri yapmadan önce her seferinde # echo 1 > /proc/sys/vm/drop_caches
ile cache'ler temizlendi)

------------ Pisi 2.4 orjinal -----------------------

$ time pisi index  . --skip-signing
. altındaki PiSi dosyalarının kataloğu oluşturuluyor

Paket kataloğa ekleniyor: imlib2-1.4.4-16-c2-x86_64.pisi
Katalog dosyası oluşturuldu

real    2m33.484s
user    1m13.247s
sys     0m3.915s

------------ pisi_index_use_old_index.patch  ----------------------

$ time pisi index --skip-signing --use-old-index
. altındaki PiSi dosyalarının kataloğu oluşturuluyor

Parsing old index: ./pisi-index.xml
Paket kataloğa ekleniyor: imlib2-1.4.4-16-c2-x86_64.pisi
Katalog dosyası oluşturuldu

real    0m36.427s
user    0m39.257s
sys     0m1.036s

---------- hatali_pisi_use_old_index_2.patch -----------------------

$ time pisi index  . --skip-signing --use-old-index
. altındaki PiSi dosyalarının kataloğu oluşturuluyor

Parsing old index: ./pisi-index.xml
Paket kataloğa ekleniyor: libreoffice-langpack-fr-3.4.2.3-14-c2-x86_64.pisi
Katalog dosyası oluşturuldu

real    0m30.750s
user    0m29.168s
sys     0m0.618s

-----------------------------------
-------------- sonraki bölüm --------------
Bir HTML eklentisi temizlendi...
URL: <http://liste.pardus.org.tr/teknik/attachments/20110816/e68d5fa2/attachment-0001.htm>
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: pisi_index_use_old_index.patch
Type: application/octet-stream
Size: 6215 bytes
Desc: kullanılamıyor
URL: <http://liste.pardus.org.tr/teknik/attachments/20110816/e68d5fa2/attachment-0002.obj>
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: hatali_pisi_use_old_index_2.patch
Type: application/octet-stream
Size: 5803 bytes
Desc: kullanılamıyor
URL: <http://liste.pardus.org.tr/teknik/attachments/20110816/e68d5fa2/attachment-0003.obj>


Teknik mesaj listesiyle ilgili daha fazla bilgi