[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