• [^] # Re: A voir Re: Exemple de gain avec la mémoire transactionnelle ?

    Posté par . En réponse à la dépêche Sortie de la version 4.7 du compilateur GCC. Évalué à 6. Dernière modification le 23 mars 2012 à 15:05.

    Quand une ressource est partagée, 99,9% du temps, il n'y a pas de contention sur cette ressource

    1/ je souhaiterai savoir d'où tu tire cette information

    La probabilité est liée à plusieurs facteurs (je ne connais pas l'équation, cependant) :

    • la taille de la ressource critique, et donc le nombre d'instructions pour la lier et la modifier, et donc le temps CPU passé en section critique --> t_crit
    • le nombre d'instructions exécutés par chaque processus en dehors de la section critique, et donc le temps CPU plus le temps d'éviction (processus qui n'est pas élu pour tourner sur le CPU) passé en dehors de la section critique --> t_triv
    • le nombre de processus qui veulent accéder à la ressource critique --> nb_procs
    • le nombre de CPU utilisables --> nb_cpu

    La probabilité évolue ainsi (à mon avis) :

    • augmente avec t_crit
    • augmente avec nb_procs
    • augmente avec nb_cpu
    • diminue avec t_triv

    Dans la plupart des cas, le critère le plus important est t_triv, donc la probabilité de contention est faible, très faible. Par exemple pour deux processus qui exécutent l'un 100k et l'autre 50k instructions hors section critique, et partagent une section critique de 20 instructions, et qui tournent en permanence (toujours élus, sur deux processeurs) :

    Pcrit(x) : probabilité que le processus x ne soit pas dans sa section critique.
    Pcritsys : probabilité qu'aucun processus du système ne soit dans leur section critique.

    Pcrit(0) = 1 - (20/100000) = 0.9998 = 99.98%
    Pcrit(1) = 1 - (20/50000) = 0.9996 = 99.96%
    Pcritsys = Pcrit(0) * Pcrit(1) ~= 0.9994 = 99.94% (arrondi par défaut)

    50k instructions, ce n'est déjà pas beaucoup, quand tu vois le nombre d'instructions exécutées pour afficher une fenêtre à l'écran, par exemple.

    Et les systèmes dans lesquels un très grand nombre de processus (>10) se battent pour la même ressource critique, est assez faible.

    Alors oui, 99.9% est un nombre tiré de mon chapeau. C'est peut-être plus, peut-être moins ; mais assez proche de la réalité. Dans la plupart des cas, ça ne doit pas descendre beaucoup en dessous de 99%.

    Hop,
    Moi.