Simple curiosité (optimisation multiprocesseurs)

phyl5555

Membre enregistré
7 Février 2006
9
0
Comme indiqué, un post de simple curiosité pour essayer de connaître l'origine d'une bizarrerie de mon mac pro…

Voilà*: quand j'ai essayé de pousser la bête en lançant une encodage MPEG4 avec Handbrake, la charge des processeurs n'a pas dépassé 50%. J'ai failli accuser la latence de la FB-DIMM dont tout le monde parle :siffle: , mais en dupliquant mon application Handbrake et en lançant deux encodages en même temps, les quatre coeurs se sont chargés à fond, sans que mes encodages perdent beaucoup de fps (115 contre 120 pour un encodage unique, donc au final 2 x 115 = 230 fps).

Je pensais donc qu'il s'agissait d'un problème d'optimisation pour multiprocesseurs, mais Handbrake est censé être multi-threadé et dans le moniteur d'activité, avec un seul encodage, je n'avais pas deux coeurs chargés à 100% et les deux autres au repos, mais les 4 à 50% :mouais: Qu'en pensez-vous*?
 
Dernière édition par un modérateur:
tiens je n'avais pas remarqué j'essaierai ce soir également sur mon macpro, par contre je ne suis pas grand connaisseur de handbrake, mais regarde dans les préférences d'hanbrake certains softs en multithreading permettent de régler l'usage des CPU . (j'ai la meme chose avec protools qui permet de regler la puissance que le soft peut puiser dans les CPU (protools permet d'avoir jusqu'à 99 % )
 
Bonjour

Ça me paraît dur de faire des suppositions sur ce qui se passe réellement dans un environnement multiprocesseur sans utiliser d'environnement de monitoring spécifique (espionnage à l'aide des registres de statistiques, notamment). Les CPU ne sont pas les seuls à intervenir dans la danse, loin de là. Les flux entre les différents niveaux de cache (du L1 jusqu'au disque) interviennent beaucoup plus dans les performances que la capacité de traitement des processeurs.

Le fait que le même code soit exécuté sur plusieurs coeurs en même temps doit s'avérer plutôt avantageux, car une partie des caches n'a plus besoin d'être vidée et remplie. Je pense que c'est l'explication de ce qui s'est passé dans ton expérience. Mais je ne crois pas qu'il en serait de même si des applications différentes, avec des codes très longs, devaient tourner en parallèle.

De toute manière, l'optimisation des logiciels passe forcément par un contrôle strict de la charge d'exécution globale de la machine, ce qui n'est finalement vraiment possible que dans le cas des serveurs. Sur une station de travail, il suffit d'une modification même légère de l'environnement (un processus ou une fenêtre de plus), et tout le bénéfice de l'optimisation risque de s'effondrer, dans des proportions souvent catastrophiques, parce que les échanges entre les caches ralentissent le fonctionnement global.