IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

signification du mot "overhead"


Sujet :

Langages de programmation

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut signification du mot "overhead"
    Bonjour à tous.

    Je rencontre souvant le mot "overhead" dans des docs sur le language .NET, j'imagine que ce mot a une signification "générale" dans le domaine de la programmation.

    L'excelentissime site wordreference ne m'a pas apporté d'explication.

    Voici quelques extraits, que veut dire ce mot svp?

    The thread pool cuts these overheads by sharing and recycling threads.
    You can run several application domains in a single process with the same level of isolation that would exist in separate processes, but without incurring the additional overhead of making cross-process calls or switching between processes.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    overhead signifie "en plus"..

    C'est une notion en informatique désignant ce qui est nécessaire en plus de ce qui est évident..

    Cela peut être pour de la mémoire, de la vitesse, ce qu'on veut..

    Par exemple, dans ton deuxième exemple, il dit que :

    si on crée plusieurs processus, on va demander plus de ressources (et en mémoire et en temps) car on va devoir changer de contexte (donc par exemple utiliser le loader pour charger un autre processus), et faire des appels de fonctions entre différents processus..

    Cela peut être juste du temps, juste de la mémoire, ou les deux..

    Si par exemple on fait un tri, on va (en général) avoir besoin d'une copie du buffer initial, ou d'une table de pointeurs sur les éléments. On va donc créer de 'l'overhead", puisque au lieu d'avoir une table de N, on en aura 2.. Dans ce cas-là ce sera de "l'overhead" mémoire.

    D'un autre côté, si par exemple on fait une boucle compliquée, et qu'on veut sauvegarder des paramètres à la fin de chaque tour de boucle, si on les sauvegarde sur disque on va créer de "'l'overhead" par rapport à les stocker en mémoire, car l'écriture sur disque sera plus lente que l'écriture en mémoire..
    Dans ce cas, ce sera de "l'overhead" temps.


    En général on a une combinaison des deux phénomènes.

    Il est extrêmement rare que l'on puisse programmer un algorithme en utilisant exactement le montant de ressources égal au nombre d'éléments à traiter.

    La comparaison de 2 algorithmes pour le meme problème tiendra donc compte de l'overhead, le meilleur étant celui donnant l'overhead minimum.. (bien que cela ne soit pas le seul facteur, voire le plus déterminant suivant les critères)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Merci pour cette explication détaillée !

    Donc pour résumer ce mot fort interressant, on pourrait le traduire par "consommation implicite".

    Voici le premier exemple remis dans son contexte, et qui maintenant m'apparait bien plus clair :
    Few hundred microseconds are spent organizing things as a fresh private local variable stack. Each thread also consumes around 1MB of Memory.The thread pool cuts these overheads by sharing and recycling threads
    J'en retiens :
    Que la creation d'un thread ne necessite plus forcement 1MB de RAM. Egalement que sa creation peut etre plus rapide, du fait que certains mecanismes/informations necessaires à son fonctionnement, sont déjà disponibles, car partagés entre tous les threads du thread pool.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    Donc pour résumer ce mot fort interressant, on pourrait le traduire par "consommation implicite".
    Plutôt "surcoût"..

    Il y a le coût normal, et des surcoûts peuvent apparaîtrent à divers endroits pour diverses raisons...



    Citation Envoyé par giova_fr Voir le message
    Que la creation d'un thread ne necessite plus forcement 1MB de RAM.
    Non. Elle nécessite toujours 1MB de RAM..

    C'est juste que, d'éprès ce que je comprend, un certain nombre de ressources sont partagées (pool) et donc par exemple soit sont attribuées au démarrage, soit sont réellement partagées, faisant que le résultat final apparaît comme si la création d'un thread prenait moins de 1MB.


    Citation Envoyé par giova_fr Voir le message
    Egalement que sa creation peut etre plus rapide, du fait que certains mecanismes/informations necessaires à son fonctionnement, sont déjà disponibles, car partagés entre tous les threads du thread pool.
    oui..


    Si on reprend un exemple d'implantation de ce que tu mentionnes :

    utiliser N threads devrait prendre au minimum N*1 MB + N*S micro-secondes..

    L'utilisation d'un pool change le facteur 1 MB par x MB, x < 1, et S' micro-secondes, S' < S..



    Quand tu regardes de manière "extérieure" le problème :

    admettons qu'un thread soit défini par une structure de 10 entiers. (peu importe, mais c'est pour l'exemple).

    Pour le créer, il faudrait donc allouer un espace de 10 entiers et faire 10 assingations pour initialiser.

    Dans ce cas, la mémoire utilisée devrait être (10 * 32 bits) par exemple, et le temps devrait être le temps de 11 instructions (allocation + 10 assignations).

    Si ce qui est réellement utilisé est 1 MB et 3 micro-secondes , cela signifie un overhead en mémoire de (1 MB - 10*32 bits), et en vitesse de (3 micro-secondes/nb de cycles CPU/seconde - 11*cycles CPU/seconde)

    Plus donc on réduit l'overhead, plus on est efficace pour arriver au même résultat..

    Alors l'exemple est simpliste (et certainement faux), mais il me semble parlant...


    Enfin, il y a en général deux parties : un overhead incompressible, et un overhead qui peut s'améliorer...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    C'est tres clair, merci encore pour vos explications.

    Je comprendrai bien désormais les docs traitant cette notion. On est vraiment dans un domaine passionnant !

    A en lire votre signature, je devinne que c'est une notion que vous devez garder en permanence à l'esprit, notamment lorsqu'il s'agit de traiter un tres grand nombre d'éléments... ou que les ressources sont trés limitées (systeme embarqué).

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    c'est une notion que vous devez garder en permanence à l'esprit, notamment lorsqu'il s'agit de traiter un tres grand nombre d'éléments... ou que les ressources sont trés limitées (systeme embarqué).
    Euh.. Oui et non...

    C'est une notion que TOUT programmeur devrait garder à l'esprit QUEL QUE SOIT le nombre d'éléments ou les ressources...

    Ce qui est considéré comme "beaucoup de ressources" à un moment donné sera considéré comme "limité" plus tard.. Ce qui est considéré comme "peu d'éléments" à un moment donné sera vraisemblablement (très) fortement augmenté dans le futur... (par exemple on passera d'une image 640*480 à une HD..)

    Ce n'est pas parce que la mémoire RAM ou les Disques durs ne coûtent pas cher, ou que la vitesse des CPU augmente, qu'il ne faut pas penser à réduire au maximum l'utilisation de ces ressources, justement à cause du futur...

    C'est (malheureusement) une tendance prononcée aujourd"hui de ne pas trop se pencher sur ce type de choses, qui est pourtant essentiel...

    Word nécessite 5k pour sauvegarder 1 lettre. Ce n'est pas franchement efficace.. Par contre, la version de Photoshop que j'ai date de 1999, et tourne avec 4 MB de mémoire... Donc a fortiori avec 2 Gig...

    Donc, plus on pense à utiliser au mieux les ressources qu'on a, plus on va durer dans le temps, et moins on va imposer à l'utilisateur de contraintes (de renouvellement ou d'upgrade de machine)

    Et cela force un peu à vérifier qu'on ne fait pas tout un tas de trucs inutiles....

    C'est donc au contraire une bonne pratique pour TOUS les programmes de se soucier de l'utilisation des ressources, et de tenter de les minimiser (sans aller forcément vers de l'optimisation extrême, qui là sera effectivement réservée aux cas techniquement limites).
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 918
    Points
    2 918
    Par défaut
    On pourrait aussi traduire par "coût préalable", "coût préliminaire".

    Tant dans sa définition économique qu'informatique, un overhead peut désigner une charge, un coût fixe et incompressible inhérent à une opération ou un processus et qui ne va pas changer en fonction de la taille de l'opération ou de ce qui est fait dedans.

    Ex : l'overhead de connexion à une base de données est un coût incompressible induit par le fait de se connecter : handshake, authentification etc. Ce coût fait qu'il peut être préférable de conserver la connexion à la base pendant un certain temps : ainsi on peut faire N requêtes sans que l'overhead de connexion intervienne à chaque fois.

    1. Resources (in computing usually processing time or storage space) consumed for purposes which are incidental to, but necessary to, the main one. Overheads are usually quantifiable "costs" of some kind.
    Examples: The overheads in running a business include the cost of heating the building. Keeping a program running all the time eliminates the overhead of loading and initialising it for each transaction. Turning a subroutine into inline code eliminates the call and return time overhead for each execution but introduces space overheads.
    2. information, such as control, routing, and error checking characters, that is transmitted along with the user data. It also includes information such as network status or operational instructions, network routing information, and retransmissions of user data received in error.
    http://dictionary.reference.com/browse/overhead

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Luckyluke34 Voir le message
    Tant dans sa définition économique qu'informatique, un overhead peut désigner une charge, un coût fixe et incompressible inhérent à une opération ou un processus et qui ne va pas changer en fonction de la taille de l'opération ou de ce qui est fait dedans.
    Et non

    Justement comme je l'ai mentionné plus haut il y a overhead incompressible et overhead réductible, sinon on ne parlerait jamais de "devoir réduire l'overhead"...

    Lorsque je fais par exemple une fonction récursive, il y a au minimum une adresse en paramètre..

    ça c'est l'overhead incompressible (et encore , on pourrait mettre les varaibles en global)

    Si par contre je m'amuse à passer 10 paramètres, là j'ai 9 paramètres d'overhead inutile...


    Et comme son nom l'indique, c'est "over"..

    La traduction la plus proche est donc "surcoût" par rapport à la "normalité"..


    Si par exemple je dois faire un tableau de N éléments, si je choisis de le déclarer en tableau, j'ai un overhead de 0. Si je choisis une liste doublement chaînée, j'ai un overhead minimum de 2N pointeurs..

    ça c'est pour la mémoire...

    Si maintenant je veux chercher les 2 valeurs minimums de ce tableau, soit je parcours 2 fois le tableau, en sautant l'indice du miniimum trouvé la première fois lors de la seconde passe, soit je fonctionne sur un tableau de 2 valeurs en parcourant le tableau une seule fois.

    Dans le premier cas, j'ai un overhead en vitesse de N..
    Dans le second cas, de x, x<<N.. (on a un léger surcoût, dû au fait de vouloir comparer avec le minimum déjà trouvé). Par contre j'ai un surcoût en mémoire de 1 valeur..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 918
    Points
    2 918
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Et non

    Justement comme je l'ai mentionné plus haut il y a overhead incompressible et overhead réductible, sinon on ne parlerait jamais de "devoir réduire l'overhead"...
    Relis ce que j'ai écrit :

    un overhead peut désigner une charge, un coût fixe et incompressible
    Je n'ai jamais dit qu'il était toujours incompressible. Dans un des emplois possibles du terme, il est incompressible. On peut juste le limiter en effectuant moins de fois l'opération.

    Citation Envoyé par souviron34 Voir le message
    Et comme son nom l'indique, c'est "over"..
    C'est loin d'être aussi simple que ça. Une des acceptions du mot remonte au début du 20è siècle et désigne en gestion un type de frais qui n'augmente pas directement en fonction de la production, un "frais général" :

    regular costs that you have when you are running a business or an organization, such as rent, electricity, wages, etc.
    http://www.oxfordadvancedlearnersdic...nary/overheads

    C'est cette idée qui est reprise dans un certain nombre d'emplois du terme overhead en informatique.

    Citation Envoyé par souviron34 Voir le message
    La traduction la plus proche est donc "surcoût" par rapport à la "normalité"..
    Non. La traduction la plus proche dépend du contexte.

    Il ne faut pas bloquer sur un seul exemple précis. Regarde sur le net, tu trouveras bien d'autres emplois du mot : overhead de création d'un objet, de connexion/envoi de requête à une base de données, overhead d'accès au réseau... Evidemment qu'on peut traduire par "surcoût" dans le sens où c'est un coût qu'on aimerait enlever, donc en trop. Mais on peut aussi chercher des traductions plus fines selon le cas.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Je ne comprend pas ton intervention..

    C'est bien ce que j'avais dit :


    Citation Envoyé par souviron34 Voir le message
    overhead signifie "en plus"..

    C'est une notion en informatique désignant ce qui est nécessaire en plus de ce qui est évident..
    ...
    En général on a une combinaison des deux phénomènes.

    Il est extrêmement rare que l'on puisse programmer un algorithme en utilisant exactement le montant de ressources égal au nombre d'éléments à traiter.

    La comparaison de 2 algorithmes pour le meme problème tiendra donc compte de l'overhead, le meilleur étant celui donnant l'overhead minimum.. (bien que cela ne soit pas le seul facteur, voire le plus déterminant suivant les critères)
    Citation Envoyé par souviron34 Voir le message
    Plutôt "surcoût"..

    Il y a le coût normal, et des surcoûts peuvent apparaîtrent à divers endroits pour diverses raisons...
    ..
    Enfin, il y a en général deux parties : un overhead incompressible, et un overhead qui peut s'améliorer...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Invité
    Invité(e)
    Par défaut Overhead ?
    Merci, Souviron34 pour ces excellentes précisions. Cela fait un moment que je bute sur ce mot assez flou et, du coup, beaucoup de choses s'éclairent !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. signification du mot "overhead"
    Par giova_fr dans le forum Programmation système
    Réponses: 0
    Dernier message: 22/07/2011, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo