Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

usporedba brzine izvodjenja

[es] :: Kernel i OS programiranje :: usporedba brzine izvodjenja

[ Pregleda: 3912 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glupi

Član broj: 836
Poruke: 199
*.cmu.carnet.hr.



Profil

icon usporedba brzine izvodjenja10.01.2005. u 22:05 - pre 183 meseci
Napisao sam (uz pomoc dobrih ljudi) kratak kod koji se boota i radi u real modu te u njega ubacio parce koda koje ne radi nista vec izvodi operacije koje bi trebale trajati neko vrijeme i izracunati koliko se dobije na ubrzanju u odnosu na izvodjenje istog koda na npr linuxu. To parce koda izgleda ovako (hehe nemojte se smijati ;)
Code:

segment .text
        global _start

_start:

        xor edx, edx

repeat:
        inc edx
        xor ebx, ebx
        xor eax, eax
        mov eax, 0xfffff
sss:
        dec eax
        cmp eax, ebx
        jg sss

        cmp edx, 0xfff
        jl repeat

        mov ebx, 0x03
        mov eax, 0x1
        int 0x80

Rezultat je bio zanimljiv, (ocekivao sam da ce raditi brze direktno ali ne ovoliko) ovaj kod se u linuxu izvodi minutu a "direktno" 4 sekunde. Da li je ovaj rezultat vjerodostojan ili sam zaboravio neki korak? Da li bi se na ovaj nacin mogli ubrzati i alati poput johna ili opcenito za crackanje, na taj nacin bi se mogli dobit zanimljivi rezultati, a za takve programe nije potreban standardni operativni sustav koji nam trosi resurse? Da li postoji bolji nacin da testiram brzinu izvodjenja?
 
Odgovor na temu

BaCkSpAcE
vozim kamion (al' djubretarski)

Član broj: 10
Poruke: 518
*.vdial.verat.net.

ICQ: 319660682


Profil

icon Re: usporedba brzine izvodjenja11.01.2005. u 00:23 - pre 183 meseci
Pa bilo je za ocekivati da ce to parce koda raditi brze ako ti samo ono predstavlja tvoj kernel. Sam operativni sistem, kao sto je Linux, ima milion problema o kojima treba da misli u toku rada, a taj tvoj programcic je za linux samo "jedna sitna riba u moru". Ti si uporedio:
- Linux koji moze sve i svasta da pokrene, znaci univerzalan je po tom pitanju
- Tvoj kernel koji je pravljen namenski i koji nista drugo ne moze da radi

Znaci razlika je ogromna u samom principu izrade, to je poredjenje babe i zabe. Usput si verovatno ovaj tvoj programcic pokrenuo pod linuxom kao obican proces, bez ikakvog prioriteta nad ostalima, a ovamo si ga pokrenuo samog sa potpunom kontrolom nad racunarom. Probaj ga uporedi sa nekim operativnim sistem koji radi u real-time modu... Imas i neke patcheve za linux da bi radio u real-time... Verujem da bi tada rezultati bili dosta povoljniji po linux...
Alati poput John-a se mogu ubrzati na ovaj nacin, samo ako imas zivaca sve lepo prepisati... I tu imas dve solucije: ako pravis svoj libc i sve ostalo sto ti treba da bi portovao John laganice, onda opet malo gubis na brzini. A ako bi sve to prepisao u ASM, e to bi vec bila prava stvar ;)
 
Odgovor na temu

glupi

Član broj: 836
Poruke: 199
*.cmu.carnet.hr.



Profil

icon Re: usporedba brzine izvodjenja11.01.2005. u 07:52 - pre 183 meseci
Shvacam ja to da linux ima malo vise stvari za obavljat i zbog toga mislim da bi bilo bolje na ovakav nacin rjesit takve programe jer dok se to radi obicno nema potrebe da se radi nesto drugo na kompu (npr dok spavam). Probat cu skinut i instalirat te patcheve pa vidjet kolka je razlika, ako je zamjetna onda mislim da cu prepisat johna u asm i bootat ga u real modu, jer ipak je brzina vazna.
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
*.zaslon-telecom.si.



Profil

icon Re: usporedba brzine izvodjenja11.01.2005. u 08:07 - pre 183 meseci
Koliko puta si pod linuxom ponovio test? I da li su rezultati bili uvek slicni/identicni? Mozda je linux bas u trenutku izvrsavanja tvog kooda odlucio da uradi nesto zahtevno, npr. defragmentira malo RAM, upise zaostale IO transfere, ili sta god vec linux radi u slobodno vreme.

ss.

ps. ako ti je brzina vazna, real-mode nije najsrecnije resenje. mozda je bolje da se drzis protected moda.

When something is hard to do, then it's not worth doing.
 
Odgovor na temu

BaCkSpAcE
vozim kamion (al' djubretarski)

Član broj: 10
Poruke: 518
*.vdial.verat.net.

ICQ: 319660682


Profil

icon Re: usporedba brzine izvodjenja11.01.2005. u 19:31 - pre 183 meseci
Pa bitan je real-mode, kao i veca brzina odziva sistema... Andrew Morton je uradio patch za linux kernele za smanjenje latency-ja (patch se zove low latency). Cini mi se da je taj patch i ugradjen u nove kernele, tako da nema potrebe za njim. Inace, postoji TimeSys-ov patch za kernel koji radi bas fino... proguglaj malo pa ces naici na to...
 
Odgovor na temu

glupi

Član broj: 836
Poruke: 199
*.cmu.carnet.hr.



Profil

icon Re: usporedba brzine izvodjenja11.01.2005. u 21:50 - pre 183 meseci
Citat:
Koliko puta si pod linuxom ponovio test? I da li su rezultati bili uvek slicni/identicni?

Test sam ponovio jedno 4 puta s tim da sam resetirao komp nakon 2 testa, i rezltati su bili +-1 ili 2 sec.
Citat:
Cini mi se da je taj patch i ugradjen u nove kernele, tako da nema potrebe za njim.

Imam 2.6.3 verziju kernela, pa pretpostavljam da imam taj patch, ali cu probat skinut nesto novo i testirat. Sad mene zanima jel se isplati radit takav projekt (prepisivanje johna) i dali mogu ocekivat dobre rezultate?
 
Odgovor na temu

dezelin32
Aleksandar Dezelin
Informatika
Beograd

Član broj: 33723
Poruke: 60
*.informatika.com.

ICQ: 294745833
Sajt: dezelin.blogspot.com


Profil

icon Re: usporedba brzine izvodjenja18.04.2005. u 13:33 - pre 180 meseci
Moje misljenje je da je problem int 0x80. Sve ostalo je isuvise smesno - na svim procesorima se izvrsava za smesno kratko vreme. Sta uopste predstavlja poziv int 0x80 na linuxu?????

Cheers
Linux is like wigwham, no windows, no gates and apache inside...
 
Odgovor na temu

tweeester
Ivan Arandjelovic
bg yu

Član broj: 724
Poruke: 882
*.kc.vicert.com.

Sajt: www.javasvet.net


Profil

icon Re: usporedba brzine izvodjenja18.04.2005. u 15:05 - pre 180 meseci
cek, cek, int 80 je na linux-u poziv systemskog API-ja ... ?! (fopen i slicne stvari ..)
<< tko leti vrijedi, tko ne leti ne vrijedi >>
 
Odgovor na temu

DownBload

Član broj: 1333
Poruke: 310
*.net.t-com.hr.



Profil

icon Re: usporedba brzine izvodjenja24.04.2005. u 12:08 - pre 180 meseci
Citat:
dezelin32: Moje misljenje je da je problem int 0x80. Sve ostalo je isuvise smesno - na svim procesorima se izvrsava za smesno kratko vreme. Sta uopste predstavlja poziv int 0x80 na linuxu?????

Cheers


U ovom topicu se ne radi o problemu :) int 0x80 ti prebacuje code execution iz user moda (ring 3) u kernel mode (ring 0) i sluzi za pozivanje sistemskih poziva.


.
Citat:
tweeester: cek, cek, int 80 je na linux-u poziv systemskog API-ja ... ?! (fopen i slicne stvari ..)


Da, ali bas si fulao primjer :-) fopen() je implementiran na razini glibca.
Leon Juranic
 
Odgovor na temu

tweeester
Ivan Arandjelovic
bg yu

Član broj: 724
Poruke: 882
..net.139.193.62.in-addr.arpa.

Sajt: www.javasvet.net


Profil

icon Re: usporedba brzine izvodjenja24.04.2005. u 14:09 - pre 180 meseci
Omasio sam primer, nije bitno, hteo sam da napomenem da kod koji se samostalno butuje i izmedju ostalog poziva int 80 nije isto sto i slican kod koji pod Linux-om pozove int 80? Sad cu jos da lupam ali kad se samostalno butuje pozivanje int80 ne radi nista - ili pozove neki (pitaj boga koji, najverovatnije prazan) interup handler, dok isto to pod Linux-om prebaci na kernel execution mode, onda verovatno proveri parametre i ukapira da je u pitanju nebuloza i vrati exekuciju user modu - ali u sustini pojede veliko vreme (prelazak rin3 -> ring0 -> ring3) ? Dakle to moze biti razlog drasticne razlike u vremenu izvrsavanja.

Sto se tice fopen() - prilicno sam siguran da mora da ima posla sa kernel-om , mozda nije cela implementirana u kernel-u ali negde u sebi mora da se obrati VFS-u, ili gresim ?
<< tko leti vrijedi, tko ne leti ne vrijedi >>
 
Odgovor na temu

glupi

Član broj: 836
Poruke: 199
*.cmu.carnet.hr.



Profil

icon Re: usporedba brzine izvodjenja25.04.2005. u 22:15 - pre 180 meseci
Citat:
Sad cu jos da lupam ali kad se samostalno butuje pozivanje int80 ne radi nista - ili pozove neki (pitaj boga koji, najverovatnije prazan) interup handler, dok isto to pod Linux-om prebaci na kernel execution mode, onda verovatno proveri parametre i ukapira da je u pitanju nebuloza i vrati exekuciju user modu - ali u sustini pojede veliko vreme (prelazak rin3 -> ring0 -> ring3) ? Dakle to moze biti razlog drasticne razlike u vremenu izvrsavanja.

Mozda sam ja kriv jer nisam bio dovoljno preciza, ono je kod koji se vrti u linuxu i poziva exit syscall (koji pozovem preko int 0x80) da izadje van, dok u kodu koji se boota ne poziva int 80 jer nepostoji vec na drugi nacin izlazi iz koda.

Citat:

Sto se tice fopen() - prilicno sam siguran da mora da ima posla sa kernel-om , mozda nije cela implementirana u kernel-u ali negde u sebi mora da se obrati VFS-u, ili gresim ?

Pa ona ima "posla" sa kernelom preko open sistemskog poziva.
 
Odgovor na temu

tweeester
Ivan Arandjelovic
bg yu

Član broj: 724
Poruke: 882
..net.139.193.62.in-addr.arpa.

Sajt: www.javasvet.net


Profil

icon Re: usporedba brzine izvodjenja25.04.2005. u 22:44 - pre 180 meseci
Ma da, pre nego sto smo poceli da filozofiramo o int 80 trebalo je da pogledamo kod, ocigledno je kolko smo pazljivo pogledali onaj asembler gore :)
<< tko leti vrijedi, tko ne leti ne vrijedi >>
 
Odgovor na temu

[es] :: Kernel i OS programiranje :: usporedba brzine izvodjenja

[ Pregleda: 3912 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.