Quale programmatore di processo sta usando il mio sistema Linux?


10

Non sono sicuro se stackoverflow o serverfault sia il forum da utilizzare per questa domanda, ma provo qui.

C'è qualche comando che posso usare o un file che posso controllare per scoprire quale schedulatore di processo sto usando sul mio sistema Linux? Non sto cercando lo scheduler I / O, ma lo scheduler di processo e, per favore, non fare riferimento a guide o howtos per cosa sia uno scheduler, ciò che sto semplicemente chiedendo è se c'è un comando o un file che posso eseguire / controlla per vedere questo. Potrei controllare il documento per il mio kernel, ma mi chiedo ancora se c'è un comando o un file che posso controllare.

Potrei essere stato un po 'ridondante sopra, ma è perché i post che ho visto le persone sembrano confondere lo scheduler di processo con lo scheduler di I / O e non sembrano rispondere alla vera domanda, basta fornire collegamenti a ciò che è uno scheduler che non è quello che sto cercando qui, quindi mi scuso se i commenti sopra sembravano maleducati.


2
Stai insinuando che Linux deve in qualche modo avere algoritmi di scheduler diversi tra cui scegliere. Cosa ti fa pensare che sia così?
Stéphane Chazelas,


Non lo so, e non penso che tu possa cambiare lo schedulatore del processo in tempo reale. Ciò che sto chiedendo è se c'è un comando da controllare o un file per leggere il contenuto per poter vedere quale è attivo. Ma se volessi, penso che potresti scegliere O (1) o O (n) se lo desideri davvero.
supera il

1
AFAIK nel kernel Linux 2.6.23 cambiamo lo scheduler dei processi da O (1) a CFS e non abbiamo nessun altro scheduler per i processi che possono essere modificati dinamicamente come per lo scheduler di I / O a blocchi.
Artur Szymczak,

2
@ZanLynx Suggerisci invece di chiudere la domanda precedente come duplicata di questa, perché la domanda sta già ricevendo un trattamento migliore qui.
Riccioli d'oro,

Risposte:


7

C'è qualche comando che posso usare o un file che posso controllare per scoprire quale schedulatore di processo sto usando sul mio sistema Linux?

No, perché a differenza di WRT per lo scheduler I / O, esiste solo una possibilità : il CFS ("Completely Fair Scheduler"), che include funzionalità in tempo reale. Il CFS è chiamato in parte per distinguerlo dallo scheduler "O (1)" , che come notato in quell'articolo è stato sostituito nella versione 2.6.23.

Quindi se hai un kernel di cui non sei sicuro, controlla semplicemente il numero di versione.


Grazie per la tua risposta, quindi suppongo che non ci sia alcun file che potrei controllare sia per scoprirlo senza consultare la documentazione, sarebbe utile poter scoprire rapidamente lo scheduler utilizzato per avere una migliore panoramica dei dettagli dei parametri utilizzato nel kernel utilizzato dal sistema.
supera il

1
Non credo che esista una cosa del genere perché non riflette alcun tipo di opzione di configurazione o "parametro utilizzato" ecc. C'è solo un possibile scheduler, lo scheduler; attualmente, si chiama "scheduler completamente corretto", e questo è un problema di progettazione astratta, uno dei tanti che contribuiscono al kernel. Generalmente sono documentati nella fonte, ecc. Quindi la domanda è ridondante uname -r.
Riccioli d'oro,

0

Provare:

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

Vedi qui: Capitolo 14: Tuning


Non ho il file di configurazione del kernel, quindi ho potuto verificarlo in quel modo. Sto usando un sistema redhat con un rpm binario che installa il kernel.
supera il

1
Durante la ricerca, le uniche variabili correlate agli scheduler del processo sembrano essere CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y e CONFIG_NET_SCHED = y che non mi dicono molto
superare il

1
CONFIG_SCHED_SMT = y L'utilità di pianificazione hyperthreading è ON, CONFIG_SCHED_MC = y Il supporto MultiCore è ON, CONFIG_NET_SCHED = y QoS / FairQueing è ON per Networking. Come Goldilocks Alluso alla sua risposta è corretta.
eyoung100,

4
Perché non solo zgrep SCHEDULE /proc/config.gz?
terdon

1
Capisco, il mio punto era che stavi usando un approccio inutilmente contorto.
terdon

0

cat /proc/config.gz | gunzip | nano -(o cat /proc/config.gz | gunzip | gedit -, del resto ) è una migliore alternativa alla risposta di eyoung100 che non richiede "gunzipping" in un file temporaneo.
Modifica: ancora più semplice - zcat /proc/config.gz | nano -ozcat /proc/config.gz | gedit -

Oppure, come suggerito da @terdon nei commenti sotto quella risposta, usa zgrep. Consiglio solo una stringa di ricerca diversa:

zgrep "CONFIG_SCHED_" /proc/config.gz

Se vedi, ad esempio: CONFIG_SCHED_yil kernel è configurato per usare lo scheduler MuQSS. Tuttavia , non è una garanzia che lo sia . Arch Wiki suggerisce :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.