[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-team] resultats bizarre pour context switch process/thread
Ben j'ai des doutes sur le test:
Je veux bien admettre que les mutex et signaux ne soient pas tres efficaces mais le test ne mesure pas bien la vitesse de l'echange de contexte... il n'y a qu'un seul thread.
Perso, je crois qu'il vaudrait mieux generer plein de threads qui ne se parlent pas entre eux. CA, ca mesurerait la vitesse d'echange de contexte.
Le changement de contexte sur un 386 (et +) se fait avec une instruction specialisee qui fait (si je me souviens bien) 32 temps de cycle. Ce qui est +/- le temps necessaire a faire un push de tous les registres sur le stack et uploader les nouveaux (moins le temps de decodage des instructions separees).
A part ca, c'est la meme instruction qui doit s'occuper du changement de contexte entre les processus et les threads.
Le mieux est de faire les mesures au niveau kernel a l'entree et a la sortie du scheduler.
Fred.
Frederic Dumont wrote:
>
> On Thu, Aug 05, 1999 at 11:41:37AM +0200, Frédéric Detienne wrote:
> > Je ne suis pas bien sur de comprendre... tu as utilise quelle librairie pour
> > les threads ? Quelle version du kernel ? Comment mesures-tu ?
>
> Desole. J'etais tellement traumatise :) par les resultats que j'en ai oublie de
> parler un peu de ma facon de proceder:
> kernel 2.2.10, glibc 2.1.2pre??
> La synchro entre processus se fait par IPC, avec deux semaphores, et une zone
> de memoire partagee pour entrer les resultats.
> La synchro entre threads utilise un mutex et une condition.
>
> Pour mesurer, j'utilise une instruction asm qui renvoie le nombre de cycles
> depuis le demarrage de la machine. En faisant la difference et en divisant par
> la vitesse du processeur, on obtient le temps entre les deux mesures. En
> supposant que les autres operations ne sont pas trop couteuses (quelques cycles
> a peine), ce temps est celui du changement de contexte.
>
> Il est peut-etre bon de signaler que je ne connais pas l'assembleur, j'ai
> recopie la fonction en question et pour le reste j'ai fait des suppositions.
>
> > Je veux bien voir le code.
>
> Bon, comme il n'est vraiment pas gros, je l'inclus ici. Deux fichiers, un pour
> les threads, un pour les processus.
>
> Un petit appel a strace montre que la synchro entre threads genere beaucoup
> d'appels systemes et utilise apparement des signaux. J'en deduis que c'est la
> que le temps est perdu.
>
> --
> Frederic Dumont / / (_)__ __ ____ __
> frederic.dumont@gate71.be / /__/ / _ \/ // /\ \/ /
> PGP key 0711F125 /____/_/_//_/____/ /_/\_\ forever!!!!!!!
> Linux? It's an OS, Jim, but not as we know it.
>
> --------------------------------------------------------------------------------------------
>
> switch.cName: switch.c
> Type: text/x-csrc
>
> process_switch.cName: process_switch.c
> Type: text/x-csrc
--
------------------------- * oOo * -------------------------
CiscoSystems
Frederic Detienne, CSE II
Security & Network Services
Tel 32 2 705 55 55
---------
Visit the Linux Supertore Online: http://www.redcorp.com !
If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.