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

 C Discussion :

augmenter Charge CPU


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut augmenter Charge CPU
    Bonjour

    Je souhaite réaliser une fonction me permettant de charger plus ou moins mon processeur, en fonction d'un coefficient.
    Que puis je utiliser comme fonction, ou écrire comme boucle ou pièce de code pour charger plus ou moins l’exécution de mon programme ?
    Je sais récupérer mes coefficients dans un fichier (coefficient de 1 à 100 par exemple, mais ca peut changer), mais je ne sais pas bien quelle fonction ecrire pour charger le traitement.

    Merci d'avance

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Tu souhaiterais par exemple qu'en lisant le coefficient 2 / 20 / 42, tu lances une fonction qui occupe 2% / 20% / 42% de ton CPU ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Tu souhaiterais par exemple qu'en lisant le coefficient 2 / 20 / 42, tu lances une fonction qui occupe 2% / 20% / 42% de ton CPU ?
    Oui, c'est exactement ca... mais je ne vois pas trop comment faire.
    Car bon, l'execution d'une fonction est tres rapide.... je voudrais pouvoir charger par exemple à 20% mon CPU pendant 3secondes...

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par iron_man53 Voir le message
    mais je ne sais pas bien quelle fonction ecrire pour charger le traitement.
    N'importe quelle fonction de calcul pur charge un CPU à 100%. Pour avoir moins de 100%, il suffit d'intercaler des périodes d'attente où la charge sera de 0%. Le rapport entre les deux te permettra de faire varier la charge moyenne entre 1 et 100%.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    N'importe quelle fonction de calcul pur charge un CPU à 100%. Pour avoir moins de 100%, il suffit d'intercaler des périodes d'attente où la charge sera de 0%. Le rapport entre les deux te permettra de faire varier la charge moyenne entre 1 et 100%.
    Je ne pige pas bien.
    Tu me conseilles de faire des boucles qui alternent les temps d'attentes et les temps de calcul ?

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Oui, il n'y pas vraiment d'alternative. A un instant donné, un CPU est soit utilisé à 100%, soit utilisé à 0%. Si tu veux autre chose, c'est une moyenne.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut
    Donc, pas exemple, si je prends un tri par insertion d'un tableau de N élément...
    On va dire que ca fait N*N opérations.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void tri_insertion(int tab[], int taille)
    {
       int i, j;
       for (i = 1; i < taille; ++i) {
           int elem = tab[i];
           for (j = i; j > 0 && tab[j-1] > elem; j--)
               tab[j] = tab[j-1];
           tab[j] = elem;
       }
    }
    Si je lis dans mon fichier un paramètre de taille de tableau... je vais augmenter la durée de mon occupation CPU.
    Et si , à l'endroit ou je met "boucle attente" il y a une tempo plus ou moins longue en fonction d'un autre coef lu (un usleep?)...je fais baisser ma charge moyenne ? C ca ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void tri_insertion(int tab[], int taille)
    {
       int i, j;
       for (i = 1; i < taille; ++i) {
           int elem = tab[i];
           for (j = i; j > 0 && tab[j-1] > elem; j--)
               tab[j] = tab[j-1];
     
           tab[j] = elem;
       }
       /* boucle attente */
       usleep(1000); /* faire varier ici le temps d'attente pour baisser la charge */
    }

  8. #8
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Oui mais autant faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while(...)//tant qu'on ne sort pas
    {
               if(...) //si on temporise
                     //on s'endors
    }
    C'est plus rapide et plus propre si tu veut contrôler la charge moyenne de ton CPU.

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par iron_man53 Voir le message
    Donc, pas exemple, si je prends un tri par insertion d'un tableau de N élément...
    Ca n'apporte rien de prendre un code de calcul particulier. Incrémenter une variable indéfiniment est plus simple et tout aussi efficace.
    Si je lis dans mon fichier un paramètre de taille de tableau... je vais augmenter la durée de mon occupation CPU.
    Oui, mais c'est très empirique. Utilise plutôt des timers pour fixer la durée d'occupation CPU.
    Et si , à l'endroit ou je met "boucle attente" il y a une tempo plus ou moins longue en fonction d'un autre coef lu (un usleep?)...je fais baisser ma charge moyenne ? C ca ?
    C'est çà. L'idéal serait de mesurer régulièrement la charge CPU effective du processus courant et d'ajuster automatiquement la durée de temporisation pour arriver au taux de charge souhaité.

Discussions similaires

  1. Comment augmenter la charge CPU
    Par pymouse dans le forum Administration système
    Réponses: 2
    Dernier message: 02/05/2007, 23h28
  2. [Système]charge CPU
    Par dehbi dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 04/08/2005, 11h58
  3. Monter la charge CPU
    Par Dr_GonZO dans le forum Administration système
    Réponses: 2
    Dernier message: 19/05/2005, 11h08
  4. problème de charge CPU SUR ORACLE
    Par crasho007 dans le forum Administration
    Réponses: 35
    Dernier message: 19/05/2004, 15h35
  5. Charge CPU avec prog opengl + win32
    Par TibobiT dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2004, 19h26

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