Salut journal.
Je t'écris parce que j'ai de plus en plus de doutes sur la qualité du code pour le support de l'HyperThreading de mon OS.
Je m'explique: il y a quelques temps, j'utilisais Amarok qui plantait environ 10 fois par jour, à n'importe quelle occasion.
J'étais passé à xmms, puis avais trouvé, quelques mois plus après, ceci:
http://bugs.kde.org/show_bug.cgi?id=99199
Donc je n'étais pas le seul. Ce qui m'a étonné, c'est qu'apparemment amarok fonctionnait bien sur des multi-processeurs, et que le seul moyen de le rendre stable sur un HT, c'était d'utiliser "l'hard affinity", en gros de le faire tourner sur un seul processeur si la machine hôte est un HT. Depuis, il n'a plus planté une seule fois, pourtant il tourne toute la journée.
Là encore, je m'apperçois que j'ai des problèmes avec kaffeine: je reboote sur un noyau sans HT, et là, plus de problèmes.
Donc là encore, le problème vient de mon P4HT.
J'aurais été tenté de croire que les responsables étaient les auteurs de amarok/kaffeine, qui auraient laissé traîner quelques sections critiques non protégées, et donc non multithread-safe. Mais apparemment, ces programmes tournent bien sur des vrais multi-processeurs.
Donc le problème viendrait de plus bas, et donc probablement du noyau.
Alors mon journal, est-ce que je suis le seul à avoir des soucis avec l'HT, est-ce que mes conclusions tiennent la route?
# Strictement aucun probleme pour moi.
Posté par Maxime (site web personnel) . Évalué à 2.
D'ailleur tout continue à très bien marcher, meme si je fais un make -j2 sur un gros projet...
[^] # Re: Strictement aucun probleme pour moi.
Posté par Édouard Geuten (site web personnel) . Évalué à -1.
# cat /proc/cpu
processor : 0 [...]
model name : Intel(R) Pentium(R) 4 CPU 2.60GHz
[...]
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid xtpr
processor : 1 [...]
model name : Intel(R) Pentium(R) 4 CPU 2.60GHz
[...]
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid xtpr
On m'aurais mentit ?
[^] # Re: Strictement aucun probleme pour moi.
Posté par Maxime (site web personnel) . Évalué à 6.
La difference entre les 2 c'est que le P4 'B' a un FSB de 533 et la generation suivante un FSB de 800.
Ensuite intel a viré de la circulation la génération 'B' pour la remplacer par la génération 'C', et n'a pas forcement créé que des processeurs plus rapides.
PS: Je sais ce que je dis quand même...
[^] # Re: Strictement aucun probleme pour moi.
Posté par Maxime (site web personnel) . Évalué à 2.
[^] # Re: Strictement aucun probleme pour moi.
Posté par inico (site web personnel) . Évalué à 1.
[^] # Re: Strictement aucun probleme pour moi.
Posté par Alexandre . Évalué à 1.
[^] # Re: Strictement aucun probleme pour moi.
Posté par inico (site web personnel) . Évalué à 2.
Parce que j'ai une machine qui en aurait bien besoin ...
[^] # Re: Strictement aucun probleme pour moi.
Posté par JaguarWan . Évalué à 2.
http://forum.slackbuilds.net/viewtopic.php?id=119
[^] # Re: Strictement aucun probleme pour moi.
Posté par alphacc . Évalué à 1.
Je l'avais utiliser au boulot.
Par contre c'etait dispo sur le site "intel premier provider" donc pas sur un site public.
Mais avec un peu de chance en demandant au support il te donneront un lien.
mes 2 cents.
[^] # Re: Strictement aucun probleme pour moi.
Posté par inico (site web personnel) . Évalué à 2.
Est-ce qu'utiliser un microcode recent fonctionnerait ?
Le microcode chargé est-il bien volatile et donc rénitialisé au reboot ?
Si oui, je vais m'amuser :)
[^] # Re: Strictement aucun probleme pour moi.
Posté par un_brice (site web personnel) . Évalué à 2.
Sinon, microcode_ctl est acessible sous gentoo par l'ebuild sys-apps/microcode-ctl ; et sous Debian par un paquet au nom similaire. Par contre, j'ai jamais essayé ce que tu va tenter, hésite pas à venir dire ici si ça marche (j'en doute).
Sinon, même pour les gens qui ont un processeur avec l'HT activé au début, un coup de microcode_ctl peut ne pas faire de mal pour corriger les bugs.
Et pour ceux qui se demandent ce que c'est, j'ai cru comprendre que les processeurs x86 actuels étaient en fait des RISC qui fournissaient l'essentiel du jeu d'instructions par émulation. Le microcode codant une partie software de l'émulateur.
[^] # Re: Strictement aucun probleme pour moi.
Posté par inico (site web personnel) . Évalué à 2.
Par contre, j'ai l'impression que le systéme est plus rapide à charger certaines applications.
# humm
Posté par Guillaume D. . Évalué à -2.
Il y a tous les outils disponibles pour savoir de quoi ca vient !
analyse le core et tu auras la reponse !
Tu aurais pu au moins preciser:
la distrib ?
quelle version du noyau ?
la temperature de ton CPU ?
si memetest passe ?
(perso, je chercherai plus du coté pilote audio :
maj kernel et alsa.
maj BIOS de la carte mere)
a+
[^] # Re: humm
Posté par neologix . Évalué à 2.
Comme je l'ai dit, et comme le montre le lien que j'ai montré, l'HT cause des problèmes.
Je me cite:
"Là encore, je m'apperçois que j'ai des problèmes avec kaffeine: je reboote sur un noyau sans HT, et là, plus de problèmes."
En plus, je ne suis pas le seul, comme en témoigne le thread:
http://bugs.kde.org/show_bug.cgi?id=99199
Ce qu'il y a, c'est qu'une appli comme amarok fait un usage intensif de threads, ce qui pourrait expliquer pourquoi il plantait fréquemment.
D'ailleurs, sur un changelog d'amarok:
# Uniquement HT et pas SMP
Posté par Fabien Engels . Évalué à 2.
Ceci dit, tu peux profiter quand même de l'hyperthreading en gardant le support SMP (Gestion de plusieurs CPU). Le code restant instable amarok etant vraiment spécifique qu'a l'hyperthreading.
En plus je crois que ce qu'apportes ce code est minime, en tout cas j'ai jamais fais de difference entre un noyau avec l'option hyperthreading et sans ...
[^] # Re: Uniquement HT et pas SMP
Posté par SF . Évalué à 2.
Moi je n'ai jamais compris l'engouement pour Amarok car à chaque fois que je le test il plante très très rapidement (quelque soit le backend).
J'ai un P4 HT donc c'est peut-être la raison. A l'occasion de je réessayerai en désactivant le HT.
[^] # Re: Uniquement HT et pas SMP
Posté par Fabien Engels . Évalué à 2.
[^] # Re: Uniquement HT et pas SMP
Posté par SF . Évalué à 3.
Ceci dit j'ai exactement le même problème avec kontact... Et comme personne ne se plaint à outrance de la stabilité de kontact et Amarok et que chez moi ça a toujours été inutilisable (un plantage ~ 5mn) j'ai toujours suspecté un problème inhérent à ma config.
[^] # Re: Uniquement HT et pas SMP
Posté par Matthieu Moy (site web personnel) . Évalué à 2.
Enfin, ces jours-ci, je lui ai redonné une chance, il plante presque plus, alors qu'à une époque, c'était 5minutes d'uptime moyen.
[^] # Re: Uniquement HT et pas SMP
Posté par Aldoo . Évalué à 2.
Aujourd'hui, sur mon Core Duo sous Ubuntu, aucun problème.
Cela dit, je n'ai jamais réussi à isoler d'où ça venait, et je n'ai jamais vu une seule allusion à ce problème dans les forums.
[^] # Re: Uniquement HT et pas SMP
Posté par neologix . Évalué à 1.
Je tiens à préciser qu'avant que le patch "hard affinity" ne soit appliqué, Amarok plantait 10 fois par jour, maintenant il ne plante jamais.
En fait, je voudrais savoir si ça vient de l'ordonnanceur HT du noyau, ou bien du code lui-même.
Donc, si quelqu'un avait un multi-processeur, est-ce qu'il pourrait de switcher plusieurs fois de canaux audios lorsqu'il lit un dvd dans kaffeine?
Sinon, la discussion se focalise sur Amarok, mais étant donné que les dernières versions sont patchées, on ne peut plus en apprendre grand chose.
[^] # Re: Uniquement HT et pas SMP
Posté par Fabien Engels . Évalué à 3.
Et je sais toujours pas ce qu'apportes cette option du noyau par rapport au SMP :D
[^] # Re: Uniquement HT et pas SMP
Posté par neologix . Évalué à 2.
Bref, j'ai l'impression que l'HT n'est pas l'invention de siècle - des experts en architecture pour confirmer/infirmer?
P.S: on doit pouvoir le désactiver en passant l'option "noht" au boot.
[^] # Re: Uniquement HT et pas SMP
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Uniquement HT et pas SMP
Posté par farib . Évalué à 2.
[^] # Re: Uniquement HT et pas SMP
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Uniquement HT et pas SMP
Posté par Croconux . Évalué à 4.
Je confirme. Sous windows certains programmes se comportent bizarrement avec l'HT. Le débuggage d'un programme dans Visual Studio 2005 part très facilement en sucette avec l'HT activé. Bilan, beaucoup de développeurs désactivent l'HT pour ne pas être emmerdés.
Bref, j'ai l'impression que l'HT n'est pas l'invention de siècle
C'était surtout un gros hack pour compenser le pipeline démesurément long du P4. Ca n'a aucun intéret sur un AMD et ça n'en n'a plus vraiment non plus sur la nouvelle architecture Intel (qui pourtant a quand même le flag HT, sans doute pour forcer les compilateurs activer certaines optimisations faciles à paralléliser sur un multi coeur). Au final, avec la démocratisation du vrai multi coeur, l'HT devrait vite se faire oublier.
# Autre noyau ?
Posté par lezardbreton . Évalué à 5.
# Real time event ?
Posté par briaeros007 . Évalué à 2.
"Program received signal SIG43, Real-time event 43. "
Si ca se trouve il s'agit simplement que le HT te fait perdre trop de temps.
Le HT c'est de la **** pour tout ce qui est calcul threadé (problème avec l'accés au bus mémoire toussa).
Si amaraok lance deux threads , l'un qui tourne en essayant de changer une variable, et un autre qui essaie de lire une autre variable mais que le bus est pris par le premier threads , tu vas rallonger tes délais toussa.
Et si le délai devient trop grand pour ne plus assurer le temps réel , le noyau ne risque t'il d'envoyer un signal real time event ? (je sais pas quand ce signal est généré).
Bref moi je pense plutot pour un probleme qui vient du HT et non pas du code.
Si le code passe sans aucun probleme sur un quadriproc , il n'y a aucune raison qu'il ne passe pas sur une p4HT
[^] # Re: Real time event ?
Posté par rdg . Évalué à 1.
Real-time Signals
Linux supports real-time signals as originally defined in the POSIX.4 real-time extensions (and now included in POSIX 1003.1-2001). Linux supports
32 real-time signals, numbered from 32 (SIGRTMIN) to 63 (SIGRTMAX). (Programs should always refer to real-time signals using notation SIGRTMIN+n,
since the range of real-time signal numbers varies across Unices.)
Unlike standard signals, real-time signals have no predefined meanings: the entire set of real-time signals can be used for application-defined
purposes. (Note, however, that the LinuxThreads implementation uses the first three real-time signals.)
The default action for an unhandled real-time signal is to terminate the receiving process.
Real-time signals are distinguished by the following:
1. Multiple instances of real-time signals can be queued. By contrast, if multiple instances of a standard signal are delivered while that signal
is currently blocked, then only one instance is queued.
2. If the signal is sent using sigqueue(2), an accompanying value (either an integer or a pointer) can be sent with the signal. If the receiving
process establishes a handler for this signal using the SA_SIGINFO flag to sigaction(2) then it can obtain this data via the si_value field of
the siginfo_t structure passed as the second argument to the handler. Furthermore, the si_pid and si_uid fields of this structure can be used
to obtain the PID and real user ID of the process sending the signal.
3. Real-time signals are delivered in a guaranteed order. Multiple real-time signals of the same type are delivered in the order they were sent.
If different real-time signals are sent to a process, they are delivered starting with the lowest-numbered signal. (I.e., low-numbered signals
have highest priority.)
If both standard and real-time signals are pending for a process, POSIX leaves it unspecified which is delivered first. Linux, like many other
implementations, gives priority to standard signals in this case.
According to POSIX, an implementation should permit at least _POSIX_SIGQUEUE_MAX (32) real-time signals to be queued to a process. However, Linux
does things differently. In kernels up to and including 2.6.7, Linux imposes a system-wide limit on the number of queued real-time signals for all
processes. This limit can be viewed and (with privilege) changed via the /proc/sys/kernel/rtsig-max file. A related file, /proc/sys/kernel/rtsig-
nr, can be used to find out how many real-time signals are currently queued. In Linux 2.6.8, these /proc interfaces were replaced by the
RLIMIT_SIGPENDING resource limit, which specifies a per-user limit for queued signals; see setrlimit(2) for further details.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.