Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

: Timers haute résolution et horloge dynamique.

Posté par Sébastien Koechlin (). Modéré le 30 juin 2006.
Thomas Gleixner et Ingo Molnar ont produit un patch pour le noyau Linux 2.6.17 qui apporte deux améliorations concernant l'horloge et les interruptions associés sur architecture x86 (y compris SMP) et prochainement sur x86_64, PPC et ARM.

La première amélioration concerne la précision de l'horloge, cette modification permet aux timers POSIX et à la fonction nanosleep() d'atteindre la précision offerte par le matériel, typiquement 1µs sur un PC classique, et ceci de manière totalement transparente. L'implémentation classique du noyau s'appuie sur la valeur de HZ, ce qui offre une précision médiocre de 1ms à 10 ms (1ms pour les noyaux compilés avec HZ=1000Hz)

La seconde amélioration appelée "tickless kernel" pourrait être traduite par "Noyau sans tic d'horloge" ou "sans métronome". Il est possible de choisir à la compilation un mode dans lequel il n'y a plus de signal d'horloge périodique, l'horloge est alors programmée à chaque fois en fonction de la prochaine interruption d'horloge nécessaire. S'il n'y a aucun besoin pendant 1,5 secondes, le processeur restera réellement en état IDLE pendant 1,5 secondes. D'après les développeurs, les interruptions d'horloge sont réduites à 1 ou 2 par seconde. L'implémentation actuelle du noyau fait qu'une interruption d'horloge arrive avec la périodicité définie à la compilation (100Hz, 250Hz ou 1000Hz) même lorsque cela n'est pas nécessaire.

Cette amélioration permet de réduire la consommation du processeur et de ce fait, réduire la chaleur dégagée et augmenter l'autonomie de la batterie dans le cas d'ordinateurs portables. En prime c'est une solution à un problème récent: certains utilisateurs des Core-Duo d'Intel, en particulier sur les MacBook d'Apple, se plaignent d'entendre les interruptions de l'horloge lorsque leur processeur est au repos (probablement à cause des pics de courant générés avec une fréquence audible et d'un couplage inductif), l'absence de ces interruptions devrait leur permettre de retrouver le silence.

> Lire la dépêche (20 commentaires, moyenne: 3,9).  

Vous avez demandé le commentaire #729524.

supaire...

Posté par Francois Revol (page perso, ) le 30/06/2006 à 15:33. (lien). Évalué à 1.

c'est une très bonne idée... mais pas si nouvelle que ça :)

  • [^]Re: supaire...

    Posté par baud123 (Jabber id, page perso, ) le 30/06/2006 à 17:36. (lien). Évalué à 5.

    un argumentaire ? des liens ? cela avait été implémenté auparavant ?

    • [^]Re: supaire...

      Posté par Francois Revol (page perso, ) le 01/07/2006 à 09:13. (lien). Évalué à 8.

      N'en déplaise à ceux qui m'on mis -2, et pour avoir vu le code en question, BeOS a toujours fait ça.
      D'ailleurs c'est ce qui faisait qu'il ne bootait pas sur mon portable, à cause du chipset ATI IXP buggué qui ne supportait pas le mode du PIT qu'il utilisait, tous les autres OS utilisant le mode 0 (de mémoire) qui est l'interruption périodique.
      BeOS reprogrammait le PIT à chaque fois suivant les besoins.
      Et Haiku fait la même chose, il suffit d'aller voir dans le SVN !

      • [^]Re: supaire...

        Posté par Olivier Serve (Jabber id, page perso, ) le 03/07/2006 à 15:37. (lien). Évalué à 4.

        Tu vois, c'est tout de suite mieux quand tu expliques...