Come posso passare allo scheduler noop?


29

Ho un SSD nel mio laptop e mi è stato detto che è preferibile passare allo scheduler "noop".

Come posso passare allo scheduler noop e dove posso apportare la modifica in modo che sia persistente durante i riavvii?

Risposte:


21

Modifica / etc / default / grub, come gksudo gedit /etc/default/grub , qui è necessario aggiungere elevator = noop.

Cambia GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"inGRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop" .

Quindi eseguire sudo update-grub2e riavviare.


6
La risposta anonima è utile per modificare l'impostazione predefinita su tutti i dischi di un sistema. Al contrario, la risposta di Eliah Kagan imposta il valore predefinito per dischi specifici. Per un laptop con una sola unità, funziona bene. Per i sistemi con più dischi, in particolare dischi con SSD e unità rotanti, la risposta di Eliah Kagan fornisce un controllo più accurato.
Royce Williams,

28

Supponiamo che il tuo disco rigido sia /dev/sda. Quindi è possibile controllare per vedere quale scheduler è attualmente in uso per esso:

cat /sys/block/sda/queue/scheduler

(Lo scheduler attualmente in uso sarà racchiuso tra [ ]parentesi.)

E potresti farlo usare lo scheduler noop:

echo noop > /sys/block/sda/queue/scheduler

Vedi questo articolo per ulteriori informazioni.

Per rendere persistente la modifica, è possibile inserire il comando /etc/rc.local.


1
Ottengo un errore "permesso negato" durante l'esecuzione, anche con sudo
Lucas Bustamante il

@LucasBustamante Corri sudo echo noop > /sys/block/sda/queue/scheduler? Ciò non funziona, poiché la shell, che viene eseguita come utente, imposta il reindirizzamento prima di eseguire il comando il cui output viene reindirizzato. Puoi usare echo noop | sudo tee /sys/block/sda/queue/schedulerinvece. Vedi Impossibile echo "ciao"> x.txt anche con sudo? e come risolvere il "permesso negato" quando si usa sudo con reindirizzamento in Bash? per ulteriori informazioni e altri approcci. (Se non è quello che vuoi dire, per favore fammi sapere.)
Eliah Kagan,

grazie per la risposta, neanche questo ha aiutato. Sto usando un SSD NVMe, penso che non usi affatto lo scheduler, da quello che ho capito serverfault.com/questions/693348/…
Lucas Bustamante

14

Questo riferimento Debian mostra come rilevare dinamicamente gli SSD e modificare lo scheduler di conseguenza:

In sistemi con diversi tipi di unità è possibile regolare le impostazioni con una regola udev (creare /etc/udev/rules.d/60-ssd-scheduler.rules):

# Imposta lo scadenzario per i dischi non rotanti

 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"

Per assicurarsi che il kernel sia in grado di rilevare lo stato di rotazione:

$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
/sys/block/sda/queue/rotational is 1
/sys/block/sdb/queue/rotational is 1
/sys/block/sdc/queue/rotational is 0   <=== Only this is SSD!

Tutto quanto sopra è citato direttamente dal riferimento Debian, che ha molti altri elementi di interesse per gli utenti SSD per la prima volta.


root @ titan: / home / kessaras # per f in / sys / block / sd? / queue / rotational; do printf "$ f is"; gatto $ f; fine / sys / blocco / sda / coda / rotazione è 0 / sys / blocco / sdb / coda / rotazione è 0 / sys / blocco / sdc / coda / rotazione è 1 / sys / blocco / sdd / coda / rotazione è 1 radice @titan: / home / kessaras # cat / sys / block / sd * / queue / scheduler [scadenza-mq] nessuna [scadenza-mq] nessuna [scadenza-mese] nessuna [scadenza-mese] nessuna Qui c'è qualcosa di molto sbagliato. Cambia tutti i dischi rigidi alla scadenza
Pavlos Theodorou il

Il comando non cambia nulla: indica semplicemente se un disco è "rotazionale" (HDD). Rotazionale = 0 significa che è un SSD o altra unità non rotante.
Royce Williams,

cosa vuoi dire non cambia nulla? E la regola udev scritta lì cosa fa? È anche all'interno di una scatola gialla. Vuoi dire che sono cieco o non riesco a leggere?
Pavlos Theodorou,

1
Errore mio. Sembra che nell'ultimo kernel abbiano rimosso gli scheduler ... ??? per f in / sys / block / sd? / queue / scheduler; do printf "$ f is"; gatto $ f; done / sys / block / sda / queue / scheduler è [scadenza-mq] nessuna / sys / block / sdb / coda / scheduler è [scadenza-mq] nessuna / sys / block / sdc / coda / scheduler è [scadenza-mq ] none / sys / block / sdd / queue / scheduler è [mq-deadline] none L'articolo e tutto ciò che hai scritto va bene. È solo che c'è solo una scadenza e nient'altro tra cui scegliere.
Pavlos Theodorou,
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.