Développeur : 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.
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.
Annonce dans la LKML (454 hits)
Patch (373 hits)
Article KernelTrap (329 hits)
MacBook Pro noise complaints (304 hits)
> Lire la dépêche (20 commentaires, moyenne: 3,9).
Vous avez demandé le commentaire #729678.




phénomène récent, ... ou pas
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.
C'est pas un phénomène récent. J'ai un laptop qui à 3 ans avec un AMD qui doit tourner autour de 1.4GHz si mes souvenirs sont bon, et qui produit le même sifflement, vraissemblablement pour les mêmes raisons. Perso ça ne me gène pas mais je conçois que ça peut déranger certains.
[^]Re: phénomène récent, ... ou pas
Donc en résumé il suffirait de recompiler son noyau en modifiant la valeur de HZ pour atténuer le problème ? (à 100 ça doit être moins audible qu'à 1000 j'imagine)
Corollaire : y'a moyen de faire de la musique avec un module noyau ad'hoc ? (OK je sors... :)
[^]Re: phénomène récent, ... ou pas
J'avais fait un programme faisait de la musique grâce au processeur de ma HP49, sans l'aide du buzzer intégré à la calculatrice. Mais comme on ne pouvait pas descendre dans la plage des fréquences audibles, il a fallu faire de la modulation de signal. Du coup, il fallait un poste de radio AM pour écouter le signal électromagnétique émis par le processeur (un Saturn à 4 MHz).
Mais même sans mon petit programme de démo, on peut déjà entendre sur le poste radio le cliquetis à 16 Hz des interruptions du système, et le son aigü des interruptions beaucoup plus rapprochées lorsque la touche ON est appuyée.
[^]Re: phénomène récent, ... ou pas
Ca devait ressembler un peu à ca :
http://www.linuxdevices.com/articles/AT3239582376.html
ou à ca :
http://www.erikyyy.de/tempest/
sauf que le signal n'était pas émis par l'écran ...
[^]Re: phénomène récent, ... ou pas
Dans le même genre, j'ai un collègue qui a une clef USB qui siffle.
Cela a un avantage malgrès que le bruit soit désagréable: on ne risque pas d'oublier la clef USB branchée dans un PC!