L'hyperthreading n'augmentera pas la vitesse de ton traitement, qu'il soit actif ou non.
Les processeurs logiques sont cela : logiques. Ils partagent la même unité de traitement, et dans ton cas, les traitements étant identiques, il y a contention sur cette unité lorsque les processeurs virtuels essaient de l'utiliser simultanément (ie un seul des processeurs logiques tourne à un instant donné).
ça dépend : son calcul peut nécessiter plusieurs phases assez différentes, par exemple il peut avoir besoin d'accéder à la mémoire à un certain moment et plus du tout le reste du temps (donc pendant qu'un thread accède à la mémoire l'autre peut faire ses calculs) ; dans ces cas-là on doit pouvoir gagner pas mal...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
C'est assez théorique. Ca ne marche pas sur la majorité des applications. Certains éditeurs de logiciels recommandent même de désactiver l'hyperthreading pour augementer les performances (par exemple Terminal Server et VMware) ^^
Mais sur le papier c'est vrai que y'a des cas où théoriquement ça doit pouvoir améliorer les performances.
RHJPP Le 16/06/2006 à 15:04 L'hyperthreading est activé dans le bios et ton Linux est un SMP ?
Le truc c'est que on ne peut pas se débrouiller. On essaie avec, on essaie sans et on voit ce qui est le plus performant. Il n'existe pas de technique connue pour tirer parti de l'hyperthreading, ou au moins pour limiter la casse (certaines applis ont des chutes de performance de l'ordre de 20 à 30% avec l'hyperthreading actif).
J'ai pris Terminal server et VMware comme exemples, parce que c'est les deux plus récents auxquels j'ai été confronté, mais un rapide google indique que c'est vrai aussi avec : Oracle, SQL Server, Citrix...
Des fois t'as même des applications où selon le processeur, l'hyperthreading fait gagner ou perdre en perfs. C'est notamment le cas de apache : sur des Prescott l'hyperthreading augmente les perfs, tandis que sur des Xeon il les diminue.
ben c'est ce que je dis, c'est pas des softs fait pour... le programme de lionela serait sans doute nettement plus facile à adapter qu'oracle ou SQL server ^^
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
ben si t'es effectivement limité par la bande passante avec la RAM, le dual core n'arrangera rien non plus...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Ca dépend du dual core.
Celui de AMD peut largement améliorer les choses si l'un des threads utilise les données générées par l'autre notamment ^^
Hmmm c'est une bonne question, mais qui pose des problèmes à mettre en oeuvre.
* avec un débit supérieur à la taille du cache / la période du tick, même si l'os schedule les deux processus pour tourner simultanément, il doit forcément y avoir un mécanisme de synchronisation pour l'accès au buffer. Et ce mécanisme passe par l'os.
* si l'un des deux processus a besoin de moins de cpu que l'autre pour réaliser son traitement sur un jeu de données particulier, soit l'os en profite pour lui reprendre la main et ça remplit plus la condition initiale, soit le processeur est inutilisé pendant le reste du temps. (ok tes contraintes éliminent ce cas, mais l'implémentation dans un scheduler peut difficilement ne pas le prévoir)
* une contrainte de ce type signifie aussi que les processus en question ne peuvent pas s'exécuter tant que les deux processeurs ne sont pas dispos, ce qui pose problème pour plusieurs raisons =>
-- si l'os attend que les deux cpus soient dispos en même temps, ça peut délayer pas mal le jeu de processus
-- si l'os attend d'avoir un des cpus, le verrouille et attend d'avoir l'autre, la durée du verrouillage est du temps perdu pour l'un des cpu.
Et pour donner un exemple d'os qui fait ça, VMware le fait. Quand tu as une machine virtuelle biproc, le noyau vmware lui attribue deux cpu physiques simultanément.
En pratique, utiliser cette fonctionnalité te plombe tes performances, essentiellement pour la 3ème raison. Pire, ça plombe aussi les performances de toutes les autres machines virtuelles.
Il y a une run queue par CPU, donc il peut piocher dedans. Par contre il ne me semble pas qu'il rappelle le scheduler (mais j'insiste sur le "il faudrait revérifier").