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.