Quel planificateur de processus mon système Linux utilise-t-il?


10

Je ne sais pas trop si stackoverflow ou serverfault est le forum à utiliser pour cette question, mais essayez mal ici.

Y a-t-il une commande que je peux utiliser ou un fichier que je peux vérifier afin de savoir quel planificateur de processus j'utilise sur mon système Linux? Je ne cherche pas le planificateur d'E / S, mais le planificateur de processus, et s'il vous plaît, ne vous référez pas aux guides ou aux howtos pour ce qu'est un planificateur, ce que je demande simplement, c'est s'il y a une commande ou un fichier que je peux exécuter / vérifier pour voir cela. Je pourrais vérifier le doc pour mon noyau mais encore une fois je me demande s'il y a une commande ou un fichier que je peux vérifier.

J'aurais peut-être été un peu redondant ci-dessus, mais c'est parce que les messages que j'ai vus semblent confondre le planificateur de processus avec le planificateur d'E / S, et ils ne semblent pas répondre à la question réelle, il suffit de fournir des liens vers ce qu'est un planificateur. ce qui n'est pas ce que je recherche ici, donc veuillez m'excuser si les commentaires ci-dessus semblaient grossiers.


2
Vous sous-entendez que Linux doit en quelque sorte avoir différents algorithmes de planificateur parmi lesquels on peut choisir. Qu'est-ce qui vous fait penser que c'est le cas?
Stéphane Chazelas


Je ne le fais pas, et je ne pense pas que vous puissiez changer le planificateur de processus en temps réel. Ce que je demande, c'est s'il existe une commande à vérifier ou un fichier dont le contenu doit être lu pour pouvoir voir lequel est actif. Mais si vous le vouliez, je pense que vous pourriez choisir O (1) ou O (n) si vous le vouliez vraiment.
dépasser le

1
AFAIK dans le noyau Linux 2.6.23, nous changeons le planificateur de processus de O (1) à CFS, et nous n'avons aucun autre planificateur pour les processus qui peuvent être modifiés dynamiquement comme pour le planificateur d'E / S de bloc.
Artur Szymczak

2
@ZanLynx Suggérez plutôt de fermer la question plus ancienne en double de celle-ci, car la question est déjà mieux traitée ici.
goldilocks

Réponses:


7

Y a-t-il une commande que je peux utiliser ou un fichier que je peux vérifier afin de savoir quel ordonnanceur de processus j'utilise sur mon système Linux?

Non, car contrairement à WRT pour le planificateur d'E / S, il n'y a qu'une seule possibilité : le CFS ("Completely Fair Scheduler"), qui inclut des capacités en temps réel. Le CFS est nommé en partie pour le distinguer du planificateur «O (1)» , qui, comme indiqué dans cet article, a été remplacé dans la version 2.6.23.

Donc, si vous avez un noyau dont vous n'êtes pas sûr, vérifiez simplement le numéro de version.


Merci pour votre réponse, alors je suppose qu'il n'y a pas de fichier que je pourrais vérifier non plus sans consulter la documentation, il serait pratique de pouvoir trouver rapidement l'ordonnanceur utilisé pour avoir un meilleur aperçu des détails des paramètres utilisé dans le noyau que le système utilise.
dépasser le

1
Je ne pense pas qu'il y ait une telle chose car elle ne reflète aucune sorte d'option de configuration ou de "paramètre utilisé" etc. Il n'y a qu'un seul ordonnanceur possible, l'ordonnanceur; actuellement, il s'appelle le "planificateur complètement équitable", et c'est un problème de conception abstraite, l'un des nombreux qui contribuent au noyau. Généralement, ils sont documentés dans la source, etc. La question est donc redondante uname -r.
goldilocks

0

Essayer:

cat /proc/config.gz | gunzip > ~/running.config
nano -w ~/running.config
CTRL + W SCHEDULE

Voir ici: Chapitre 14: Tuning


Je n'ai pas le fichier de configuration du noyau, alors je pourrais le vérifier comme ça. J'utilise un système redhat avec un rpm binaire qui installe le noyau.
dépasser le

1
Lors de la recherche, les seules variables liées aux planificateurs de processus semblent être CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y et CONFIG_NET_SCHED = y, ce qui ne me dit pas grand
dépasse le

1
CONFIG_SCHED_SMT = y Le planificateur d'hyperthreading est activé, CONFIG_SCHED_MC = y le support multi-cœur est activé, CONFIG_NET_SCHED = y QoS / FairQueing est activé pour la mise en réseau. Comme Goldilocks fait allusion à sa réponse est correcte.
eyoung100

4
Pourquoi pas juste zgrep SCHEDULE /proc/config.gz?
terdon

1
Je me rends compte, mon point était que vous utilisiez une approche alambiquée inutilement.
terdon

0

cat /proc/config.gz | gunzip | nano -(ou cat /proc/config.gz | gunzip | gedit -, d'ailleurs) est une meilleure alternative à la réponse d' eyoung100 qui ne nécessite pas de "gunzipping" dans un fichier temporaire.
Modifier: encore plus simple - zcat /proc/config.gz | nano -ouzcat /proc/config.gz | gedit -

Ou, comme @terdon l'a suggéré dans les commentaires sous cette réponse, utilisez zgrep. Je recommande simplement une chaîne de recherche différente:

zgrep "CONFIG_SCHED_" /proc/config.gz

Si vous voyez, par exemple CONFIG_SCHED_y:, le noyau est configuré pour utiliser le planificateur MuQSS. Cependant , ce n'est pas garantie qu'il est . Le Wiki Arch suggère :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.