2.0 verzus 2.1

Cejka Rudolf cejkar na dcse.fee.vutbr.cz
Pondělí Říjen 12 20:14:32 CEST 1998


Smolik Daniel (smolikdan na email.cz) wrote:
: Smolik Daniel wrote:
: > po precteni clanku v LN jsem se rozhodl vyzkouset ten "rychlostni"
:                cislo srpen-zari
: > zazrak. Zkompiloval jsem si kernel 2.1.122. Vyrobil nalsedujici
: > testovaci script:
: > #!/bin/sh
: > 
: > i=1000
: > 
: > while [ $i -gt 1 ]
: > do
: > i=$[ i - 1 ]
: > cp tel tel.$i
: > done
: > 
: > Vyrobil jsem adresare a v nich vytvoril 3000,4000,7000,8000,9000,10000
: > souboru.
: > Pak jsem udelal cd ./tenadresar ls pockal nez se vypise pak jsete
: > jednou. Potom jsem to pustil 3x, meril cas a spocital prumer. Vysledek
: > posudte sami.
: > 
: > Porovnani rychlosti nacteni adresare mezi kernelem 2.0.35 a 2.1.122
: > 
: > Pocet souboru v adresari: 3000  4000 7000 8000 9000  10000
: > cas 2.0.(s)               3.04  4    6.98 7.93 8.83  9.67
: > cas 2.1.(s)               0.98  1.30 2.17 3.05 11.30 52.8

Musim priznat, ze mi casy udavane u jadra 2.1.122 ponekud vyrazily
dech - vse ukazuje na pouziti algoritmu s exponencialni slozitosti, coz
by vypadalo spise jako krok vzad, nez vpred. Takze mi to nedalo
a zkusil jsem podobny test:
----------------------------------------------------------------------
#!/bin/bash
mkdir /tmp/tst ; cd /tmp/tst
sync ; sync ; sync
(
	echo "Files: $1"
	time (
		time (
			mkdir tst.dir ; cd tst.dir
			i=$1
			touch zzz
			while [ $i -gt 1 ]; do
				i=$[ i - 1 ]
				cp zzz zzz.$i
			done
			echo ; echo "Create:"
		) ; sync
		echo ; echo "Sync-create:"
	)
	for m in 1 2 3 4 5 ; do
		time (
			time (
				ls tst.dir >/dev/null
				echo ; echo "List$m:"
			) ; sync
			echo ; echo "Sync-list$m:"
		)
	done
	for m in 1 2 3 4 5 ; do
		time (
			time (
				ls -l tst.dir >/dev/null
				echo ; echo "List-l$m:"
			) ; sync
			echo ; echo "Sync-list-l$m:"
		)
	done
	time (
		time (
			rm -r tst.dir
			echo ; echo "Remove:"
		) ; sync
		echo ; echo "Sync-remove:"
	)
) 2>&1 | tee tst.log.$1
----------------------------------------------------------------------

Testoval jsem na starem Pentiu/120 s 32 MB RAM a 3 GB IDE diskem:
1) Debian 2.0 s originalne dodavanym jadrem 2.0.34.
2) Debian 2.0 s jadrem 2.1.125. Pri konfiguraci jadra jsem vsude nechal
   puvodni volbu. Nemam tuseni, zda existuje nejaky parametr, ktery by
   byl schopen vyrazne ovlivnit vysledky testu. Napada nekoho neco?
   Jen me napada, zda treba neni problem v tom, ze filesystem vytvarelo
   jadro 2.0.34 a nikoli 2.1.125. Ale jinak mam pocit, ze vetsina
   implicitnich nastaveni (vcetne detekce HW) je zvolena tak, aby
   programy dosahovaly maximalni rychlosti.
3) Ze zajmu jsem si zkusil i FreeBSD 3.0-CURRENT (s vyvojovymi SoftUpdates),
   ktere lezi na shodnem disku, na jakem je Linux Debian 2.0.
   V davce jsem jen zamenil "/bin/bash" na "/usr/local/bin/bash".

Zde jsou vysledky v sekundach (s prumernymi casy jsem se nezdrzoval,
stejne jsou vsechny dost podobne).

Sync-create (vytvoreni N souboru s nulovou delkou v jednom adresari + sync):

N =            1000  2000  3000  4000  5000  6000  7000  8000  9000  10000
Linux 2.0.34    18.7  39.2  62.5  88.0 115.8 145.7 179.4 216.3 253.3 294.9
Linux 2.1.125   17.5  36.2  56.6  79.3 103.4 130.3 149.5 191.0 222.0 257.1
FreeBSD 3.0     13.6  28.7  47.0  66.5  88.3 118.1 141.3 172.9 205.6 239.7

Sync-list5 (ls + sync):

N =            1000  2000  3000  4000  5000  6000  7000  8000  9000  10000
Linux 2.0.34   0.144 0.223 0.312 0.404 0.512 0.618 0.726 0.827 0.949 1.059
Linux 2.1.125  0.114 0.181 0.260 0.339 0.429 0.529 0.621 0.715 0.805 0.903
FreeBSD 3.0    0.084 0.126 0.168 0.216 0.257 0.307 0.343 0.398 0.432 0.488

Sync-list-l5 (ls -l + sync):

N =            1000  2000  3000  4000  5000  6000  7000  8000  9000  10000
Linux 2.0.34    0.60  1.12  1.70  2.22  2.81  3.33  3.94  4.47  5.00  5.51 
Linux 2.1.125   0.36  0.66  0.98  1.35  3.78  7.15 11.46 16.57 21.70 28.27
FreeBSD 3.0     0.45  0.83  1.23  1.63  2.02  2.44  2.83  3.28  3.66  4.08 

Sync-remove (rm -r + sync):

N =            1000  2000  3000  4000  5000  6000  7000  8000  9000  10000
Linux 2.0.34    0.54  1.23  2.44  3.49  4.98  6.51  8.39 10.51 12.51  15.03
Linux 2.1.125   0.47  0.81  1.45  2.11  3.34  4.86  7.81 10.54 12.56  14.47
FreeBSD 3.0     0.87  1.61  2.54  3.48  4.43  5.58  6.52  7.88  8.99  10.44

Zaver si kazdy muze udelat sam. Ale jak je videt, v jadrech 2.1.X
s dostatecne vysokym X je nejspis neco velmi podezreleho - ne-li primo
nejaka hruba chyba ve zdrojovkach jadra (viz "ls -l" a "rm -r" pro pocet
souboru vetsi nez 5000).

(Absolutni vyse casu Linux vs. FreeBSD _neni_ rozumne srovnavat -
je nutne si uvedomit, ze zdrojove texty systemovych utilit a jadra se
znacne lisi a chovani obou systemu v tomto smeru bylo dost odlisne.
Spis je zajimave se zamerit na slozitosti.)

--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
Rudolf Cejka  (cejkar na dcse.fee.vutbr.cz;  http://www.fee.vutbr.cz/~cejkar)
Technical University of Brno, Faculty of El. Engineering and Comp. Science
Bozetechova 2, 612 66  Brno, Czech Republic


Další informace o konferenci Linux