Portál AbcLinuxu, 15. května 2024 17:53

spkg alpha1

13.7.2006 01:19 | Přečteno: 990× | Slackware | poslední úprava: 13.7.2006 01:20

Posledně jsem pomlouval pkgtools a vymejšlel fíčury. No a aby to nebyly jen plané řeči, tak je na čase ukázat výsledky mého snažení. Tady jsou...

Co to je?

Nejdřív jen odstaveček o spkg, pro ty co nečetli mé předchozí příspěvky. Spkg je implementeace pkgtools v C. Jde o nízkoúrovňový nástroj pro instalaci, odstraňování a (v budoucnu) upgrade balíčků pro distribuci Slackware Linux. Spkg má i něco navíc:

Alpha1? Eeeeek!

"Alfa" pro mě znamená že v spkg chybějí zásadní vlastnosti (upgrade). Nikoliv, že je vše sešité horkou jehlou a na bug je možné narazit na každém kroku. Čili není třeba se obávat toho, že by spkg nedělal to co se od něj očekává, či nedejbože padal. Naopak, vlastnosti které jsou naimplementované jsou otestovány. Testování samozřejmě není nikdy dost. Najde se nějaký odvážlivec?

To byla doba

Jo. Byla. Začal jsem pracovat, takže nebyl čas.

Takže?

Takže koho nezajímá co je safe mode, proč má spkg funkci bezpečného návratu (taky to někomu připomíná Apollo 13?) a jak se dosáhlo vysoké rychlosti běžných operací může klidně přeskočit k bechmarkům.

Safe mode zabraňuje tomu, aby se při instalaci balíku přepsali jakékoliv v systému již existující soubory nebo adresáře. V tomto režimu by nemělo být možné si poškodit systém pouhou instalací zákeřného balíku. Režim ještě není zcela dokončen. V budoucnu se v tomto režimu nebude spouštět postinstalační skript. (což nijak nebrání vytvoření symlinků, které se běžně ve Slackware vytváří pomocí postinstalačního skriptu, jak uvidíme dále)

Hlavním důvodem pro implementaci rollbacku je, aby nebylo nutné provádět testování konzistence tgz balíku před jeho rozbalením, tak jak to musí dělat installpkg, aby zabránilo neůplné instalaci/upgradu balíku. Pokud se při rozbalování narazí na chybu (která nemusí být způsobená pouze chybou v tgz archivu), prostě se vrátí zpět všechny doposud provedené operace a naplánované operace (takové, které nelze vzít zpět) se prostě neprovedou. Rollback přináší i další zajímavé možnosti, jako je např. bezpečné přerušení prováděné operace uživatelem.

Některé věci, které dělají spkg tak rychlým:

"Benče"

Tady je obsah souboru BENCHMARKS který lze nalézt ve zdrojácích spkg.
This benchmark compares spkg with pkgtools and plain tar.

Hardware setup used:

CPU: Athlon Thunderbird 1GHz
MEM: 512MB SDRAM 133MHz
HDD1: Seagate Baracuda 7200.9 80GB
HDD2: Samsung SP2002H 20GB 7200 rpm
OS: 'vanilla' linux 2.6.17.2, slackware-current

Benchmarking methods:

Before each 'install' benchmark clean ext2 filesystem will be created on
HDD2 using following command:
  mke2fs /dev/hdb

Before each benchmarks caches will be flushed using:
  echo 2 > /proc/sys/vm/drop_caches

All services that could affect result of benchmarks will be stopped.

Install speed
~~~~~~~~~~~~~
Install/extract all official slackware-current (2006-07-11) packages
from the installation packages on HDD1 to the root directory on HDD2.

1)
  spkg -r /data -i */*.tgz

2)
  installpkg -root /data */*.tgz

3) 
  for f in */*.tgz ; do
    tar xf $f -C /data
  done

Remove speed
~~~~~~~~~~~~
Remove all 'kde*' packages from the system. ;-)

1)
  spkg -r /data -d `spkg -r /data -l 'kde*'`

2)
  ROOT=/data removepkg `spkg -r /data -l 'kde*'`

Results
~~~~~~~

Install speed:
  1) real 12m 36s, user 2m 3s, sys 51s
  2) real 23m 41s, user 15m 31s, 5m 28s
  3) real 13m 17s, user 1m 46s, sys 56s

Remove speed:
  1) real 1m 29s, user 3.4s, sys 3.9s
  2) real 27m 49s, user 19m 46s, sys 6m 30s

Interpretace výsledků

Srovnáním reálných časů, které zahrnují čekání systému na dokončení hardwarových operací, jako je zápis na disk lze získat obrázek o tom jak bude uživatel vnímat zlepšení prezentovaných operací při přechodu na spkg.

Je vidět, že instalace celého systému se zrychlí dvojnásobně. A odstraňování balíčků bude zhruba 18x rychleší.

O kvalitě implementace však vypovídají spíše časy které se tráví mařením cyklů procesoru a ne čekáním na to než se nastavějí hlavičky na harddisku a plotna se dootočí do správné pozice. :-) Čili časy trávené v kernel space (sys) a v user space (user). Sečtením sys a user časů lze zhruba získat obrázek o tom, jak rychle by operace proběhla, kdyby data byly na ramdisku. Případně by se vešly do cache.

Instalace je při tomto srovnání 20x rychlejší a odstranění balíčku pak 210x rychlejší než pomocí pkgtools.

Tato zrychlení se dají pozorovat při instalaci velkého množství malých balíčků jejichž nainstalované soubory se vejdou do cache. Např. výsledky porovnání časů installpkg a spkg -i pro instalaci všech balíčků jedné malé komerční distribuce, která spkg využívá pro instalaci:

Distribuce má 64 balíčků o celkové velikosti 25MB.
spkg: real 4.666s, user 3.086s, sys 1.100s
installpkg: real 1m34s, user 1m10s, sys 24s

Tady už je vidět i vylepšený uživatelský zážitek, a to hned 20x. Důvod je v tom, že se nemusí čekat na páně harddisk, než se uráčí vykonat potřebné pohyby.

Příště

Příště (doufejme dříve než zase za rok :-) udělám nějaké benchmarky té nejčastěji používané operace: upgradepkg. Protože ve verzi alpha2 již bude naimplementovaná.

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

vogo avatar 13.7.2006 08:51 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Thunderbird :))
Odpovědět | Sbalit | Link | Blokovat | Admin
Málem mi vypadly obě oči, když nevíte jak se píše název jádra, tak ho tam prosím nepište. Správně to má být Thoroughbred (v překladu Plnokrevník), Thunderbird (v překladu Hromový pták - ten co nese bouřku???), což je pojmenování emailového klienta. Více o jádrech Athlonů XP ve Wikipedii.
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
vogo avatar 13.7.2006 08:54 vogo | skóre: 34 | blog: "Skládat papír"
Rozbalit Rozbalit vše Re: Thunderbird :))
Pardon to mi ujelo, moc brzo na mě :), ještě že mám patičku jakou mám. Tohle jsem zeslonil :) sem myslel ze je to XPcko
Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
13.7.2006 09:34 ajikdpoe | skóre: 23 | blog: dvh
Rozbalit Rozbalit vše Re: Thunderbird :))
Ale kde si to mozem stiahnut?
13.7.2006 09:43 megi | skóre: 11 | blog:
Rozbalit Rozbalit vše Re: Thunderbird :))
Link je v menu v oblíbených stránkách: http://spkg.megous.com/.
13.7.2006 10:14 ajikdpoe | skóre: 23 | blog: dvh
Rozbalit Rozbalit vše Re: Thunderbird :))
Ok, skusim doma na 10.2-ke ale jak mi to nieco oddrbe tak sa vratim a natrhnem ti pr...

Btw, co to robi s tym postinstalacnym skriptom (/install/doinst.sh ci co)?
13.7.2006 10:37 megi | skóre: 11 | blog:
Rozbalit Rozbalit vše Re: Thunderbird :))
Projede to skript řádek po řádku a odstraní to řádky typu:
( cd usr/lib ; rm -rf libformw.so.5 )
( cd usr/lib ; ln -sf libformw.so.5.5 libformw.so.5 )
A pak to tu operaci provede ručně (voláním funkcí C knihovny) bez forkování shellu a programů ln a rm. (pokud je --safe na příkazový řádce, tak nedělá to rm -rf) Čili v tomhle případě:
rm -rf usr/lib/libformw.so.5
ln -s libformw.so.5.5 usr/lib/libformw.so.5
Btw, pokud chceš vidět co to udělá a nechceš aby to cokoliv zapisovalo na disk, tak můžeš použít něco jako:

spkg --install --dry-run -vvv pkg-x-x-x.tgz

Jináč je určitě lepší, pokud tomu nevěříš to zkoušet v chrootu, nebo laespoň s parametrem --root /safe/dir. Ale to jistě víš i beze mě.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.