> [mode mauvaise langue]Même pour MS ça leur fait un scheduler de moins à repomper...)[/mode]
À ce sujet, et parce que j'ai lu plus haut des remarque laissant entendre que le noyau (ou seulement l'ordonanceur ?) de Windows était meilleur que celui de Linux, une petite info pour relativiser.
Il est tout à fait clair que les développeurs du noyau Linux essaient de trouver un ordonanceur CPU (mais aussi un ordonanceur pour les E/S, ce qui est encore plus important) qui marche le mieux possible pour tout le monde, y compris les desktops et les serveurs, de façon propre, maintenable et globale. Donc pas de hacks/cochonneries, bien que ce soit facile et tentant d'en introduire à ce niveau.
Voici comment Windows (et Solaris) s'y prend, selon la description du développeur de l'ordonanceur « ULE » de FreeBSD, Jeff Robberson :
« Solaris and windows actually both hook into the window manager. The window manager tells the scheduler which x task or windows application is in the foreground. The scheduler then uses this to give an extra boost to those tasks. » (source : http://jeffr-tech.livejournal.com/6602.html ).
Ou, si vous préferez une source plus officielle ( http://www.microsoft.com/mspress/books/sampchap/4354c.aspx ) : « The foreground process is the process that owns the thread that owns the window that's in focus. When the foreground window changes to one owned by a thread in a process higher than the Idle priority class, the Win32 subsystem changes the quantum values for all the threads in that process [...] » (etc., lire le reste de la page).
En bref et en français: le noyau Windows ne « devine » pas vraiment quelles sont les taches interactives à privilégier. L'environnement graphique de Windows indique au noyau le processus dont la fenêtre graphique a le focus, pour que le noyau lui donne une plus grande priorité.
C'est pour le moins inélégant, et c'est une solution à courte vue pour améliorer l'interactivité en environnement graphique fenêtré (windows...), qui n'améliorera en rien le fonctionnement sur des serveurs, par exemple (à l'inverse d'une solution totalement algorithmique pour trouver quel processus mérite du temps CPU sans sale hack, comme Linux essaie de faire) ! Et ce n'est certainement pas adapté à un environment souple et non-monolhitique comme Linux, où l'environement/interface utilisateur n'est pas un « builtin » indélogeable, mais peut être de natures très différentes, nativement réseau et multiutilisateur (X11, protocole X en réseau, console, framebuffer, qtpe, tinyx, ...: il faudrait implémenter ce sale hack partout, et en pondérant l'usage simultané de plusieurs d'entre eux ou par plusieurs utilisateurs, et faire transiter une telle information sur le réseau,...).
[^] # Les « mérites » de l'ordonanceur de MS Windows [was Re: BSD ]
Posté par herodiade . En réponse au journal L'interview vérité de Con Kolivas. Évalué à 7.
À ce sujet, et parce que j'ai lu plus haut des remarque laissant entendre que le noyau (ou seulement l'ordonanceur ?) de Windows était meilleur que celui de Linux, une petite info pour relativiser.
Il est tout à fait clair que les développeurs du noyau Linux essaient de trouver un ordonanceur CPU (mais aussi un ordonanceur pour les E/S, ce qui est encore plus important) qui marche le mieux possible pour tout le monde, y compris les desktops et les serveurs, de façon propre, maintenable et globale. Donc pas de hacks/cochonneries, bien que ce soit facile et tentant d'en introduire à ce niveau.
Voici comment Windows (et Solaris) s'y prend, selon la description du développeur de l'ordonanceur « ULE » de FreeBSD, Jeff Robberson :
« Solaris and windows actually both hook into the window manager. The window manager tells the scheduler which x task or windows application is in the foreground. The scheduler then uses this to give an extra boost to those tasks. » (source : http://jeffr-tech.livejournal.com/6602.html ).
Ou, si vous préferez une source plus officielle ( http://www.microsoft.com/mspress/books/sampchap/4354c.aspx ) : « The foreground process is the process that owns the thread that owns the window that's in focus. When the foreground window changes to one owned by a thread in a process higher than the Idle priority class, the Win32 subsystem changes the quantum values for all the threads in that process [...] » (etc., lire le reste de la page).
En bref et en français: le noyau Windows ne « devine » pas vraiment quelles sont les taches interactives à privilégier. L'environnement graphique de Windows indique au noyau le processus dont la fenêtre graphique a le focus, pour que le noyau lui donne une plus grande priorité.
C'est pour le moins inélégant, et c'est une solution à courte vue pour améliorer l'interactivité en environnement graphique fenêtré (windows...), qui n'améliorera en rien le fonctionnement sur des serveurs, par exemple (à l'inverse d'une solution totalement algorithmique pour trouver quel processus mérite du temps CPU sans sale hack, comme Linux essaie de faire) ! Et ce n'est certainement pas adapté à un environment souple et non-monolhitique comme Linux, où l'environement/interface utilisateur n'est pas un « builtin » indélogeable, mais peut être de natures très différentes, nativement réseau et multiutilisateur (X11, protocole X en réseau, console, framebuffer, qtpe, tinyx, ...: il faudrait implémenter ce sale hack partout, et en pondérant l'usage simultané de plusieurs d'entre eux ou par plusieurs utilisateurs, et faire transiter une telle information sur le réseau,...).
Remarquez que l'idée n'est pas neuve : https://db.usenix.org/publications/library/proceedings/cinci(...)