Forum Programmation.c++ Multi-Thread

Posté par (page perso) .
Tags : aucun
2
18
fév.
2011
Bonjour,

J'ai une application multi-threadé (une partie GUI qui lance des thread en tâche de fond pour que l'utilisateur puisse continuer à bosser) que j'ai développé et qui tourne bien sur les machines que j'utilise.

Ces machines sont toutes des dual/quadru-core et donc cela marche très bien (la GUI n'est jamais bloqué).

J'aimerai pouvoir tester mon programme sur une machine ne possédant qu'un seul CPU, pour voir comme le programme réagit (voir si l'interface reste réactif, ...)

Est-il possible au lancement d'un programme de restreindre l'utilisation de ce dernier à un seul CPU ?
  • # man taskset

    Posté par . Évalué à 5.

    Tout est dans le titre.
    • [^] # Re: man taskset

      Posté par (page perso) . Évalué à 2.

      C'est exactement ce que je cherchais, je test ce soir.
      • [^] # Re: man taskset

        Posté par . Évalué à 6.

        Le problème avec taskset c'est que tu vas bien restreindre ton application à une seul cpu mais le reste de ton système (Xorg, le noyau, les autres applis) va utiliser tout les cœurs disponibles.

        Si je devais faire un test comme celui que tu cherches à faire, je démarrerais ma machine en mettant maxcpus=1 dans la ligne de commande du noyau pour avoir une vraie machine uni-processeur.
  • # kvm

    Posté par . Évalué à 3.

    une vm à 1 cpu avec qemu-kvm ?

    kvm -enable-kvm \
    -k fr \
    -cpu core2duo \ <= tu peux mettre choisir ton type de cpu un kvm -cpu ? te donne la liste


    c'est un peux bourrin, je le concède, mais qu'y puis-je si c'est vendredi ??
    • [^] # Re: kvm

      Posté par (page perso) . Évalué à 1.

      J'avais pensé à la solution de virtualisation, mais je cherchais une solution moins bourrin (installer un OS juste pour 1 cpu, de plus mon matériel ne gère pas KVM).
  • # kernel parameters

    Posté par (page perso) . Évalué à 3.

    Et pourquoi ne pas rebooter avec 1 seul cpu ?

    Voire option maxcpus :

    http://www.mjmwired.net/kernel/Documentation/kernel-paramete(...)

    ou par l'exemple :

    http://www.cyberciti.biz/tips/linux-limiting-or-restricting-(...)

    Nicolas
  • # /sys/device/system/cpu

    Posté par . Évalué à 3.

    Il est aussi possible de désactiver des cpu sans redémarrer la machine :

    echo "0" > /sys/devices/system/cpu/cpu1/online
    echo "0" > /sys/devices/system/cpu/cpu2/online
    echo "0" > /sys/devices/system/cpu/cpu3/online
    

    Pour les réactiver il suffit de réécrire "1" dans les fichiers online.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.