Oula, j'ai fait plein de test d'hyper threading et avec des machines a 4 voies. Et la question est complique; mais globalement ca depend de ce que tu fais. Globalement:
-si tu utilises des processus -> n'utilises pas l'hyperthread
-si tu utilises des threads. Si ton application est gourmand en calcul (lire, le nombre d'instructions qui passe par l'ALU ou par le FPU est proche du pic theorique), n'utilise pas d'hyperthreads. Si ton application est limite par la bande passante memoire <-> core, essaye l'hyperthreading.
Si tu n'as aucune idee, n'utilises pas l'hyperthreading.
Si pour des raisons obscure, tu as besoin de threads auxiliare a ton application (pour gerer des communications avec un disque dur ou des machines exterieur), l'hyperthreading peut aider egalement.
Dans les choses qui aident beaucoup, il y a le thread pinning et le memory pinning. Si tu fais des calculs, avoir un vrai compilateur (genre pas gcc), ca aide pas mal souvent...