Bagaimana cara saya mengubah penjadwal noop?

29

Saya memiliki SSD di laptop saya dan saya telah diberitahu bahwa beralih ke penjadwal "noop" lebih disukai.

Bagaimana cara saya mengubah ke penjadwal noop, dan di mana saya membuat perubahan sehingga tetap di seluruh reboot?

Jorge Castro
sumber

Jawaban:

21

Edit / etc / default / grub, seperti gksudo gedit /etc/default/grub, di sini Anda perlu menambahkan elevator = noop.

Ubah GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"ke GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop".

Kemudian jalankan sudo update-grub2dan mulai kembali.

Anonim
sumber
6
Jawaban Anonim baik untuk mengubah default di semua disk pada suatu sistem. Sebaliknya, jawaban Eliah Kagan menetapkan standar untuk disk tertentu. Untuk laptop dengan drive tunggal, keduanya berfungsi dengan baik. Untuk sistem dengan banyak disk - terutama disk dengan SSD dan drive berputar), jawaban Eliah Kagan memberikan kontrol yang lebih halus.
Royce Williams
28

Misalkan hard disk Anda /dev/sda. Kemudian Anda dapat memeriksa untuk melihat penjadwal apa yang saat ini digunakan untuk itu:

cat /sys/block/sda/queue/scheduler

(Penjadwal yang sedang digunakan akan dikelilingi oleh [ ]tanda kurung.)

Dan Anda bisa membuatnya menggunakan penjadwal noop:

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

Lihat artikel ini untuk informasi lebih lanjut.

Untuk membuat perubahan tetap ada, Anda bisa memasukkan perintah /etc/rc.local.

Eliah Kagan
sumber
1
Saya mendapatkan kesalahan "izin ditolak" menjalankan ini, bahkan dengan sudo
Lucas Bustamante
@LucasBustamante Apakah Anda menjalankan sudo echo noop > /sys/block/sda/queue/scheduler? Itu tidak berfungsi, karena shell, yang berjalan sebagai pengguna Anda, mengatur pengalihan sebelum menjalankan perintah yang outputnya diarahkan. Anda bisa menggunakannya echo noop | sudo tee /sys/block/sda/queue/scheduler. Lihat Can't echo "hello"> x.txt bahkan dengan sudo? dan Bagaimana mengatasi "izin ditolak" saat menggunakan sudo dengan pengalihan di Bash? untuk informasi lebih lanjut dan pendekatan lain. (Jika bukan itu yang Anda maksud, tolong beri tahu saya.)
Eliah Kagan
terima kasih telah menjawab, itu tidak membantu. Saya menggunakan NVMe SSD, saya pikir itu tidak menggunakan penjadwal sama sekali, dari apa yang saya mengerti serverfault.com/questions/693348/...
Lucas Bustamante
14

Referensi Debian ini menunjukkan cara mendeteksi SSD secara dinamis dan mengubah penjadwal sesuai:

Dalam sistem dengan tipe drive yang berbeda, Anda dapat menyesuaikan pengaturan dengan aturan udev (membuat /etc/udev/rules.d/60-ssd-scheduler.rules):

# Setel penjadwal tenggat waktu untuk disk yang tidak berputar

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

Untuk memastikan bahwa kernel Anda dapat mendeteksi status rotasi:

$ 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!

Semua hal di atas dikutip langsung dari referensi Debian, yang memiliki banyak elemen menarik bagi pengguna SSD pertama kali.

Royce Williams
sumber
root @ titan: / home / kessaras # for f in / sys / block / sd? / queue / rotational; jangan printf "$ f is"; cat $ f; selesai / sys / blok / sda / antrian / rotasi adalah 0 / sys / blok / sdb / antrian / rotasi adalah 0 / sys / blok / sdc / antrian / rotasi adalah 1 / sys / blok / sdd / antrian / rotasi adalah 1 root @titan: / home / kessaras # cat / sys / block / sd * / antrian / scheduler [mq-deadline] tidak ada [mq-deadline] tidak ada [mq-deadline] tidak ada [mq-deadline] tidak ada Sesuatu yang sangat salah di sini. Ini mengubah semua hard disk ke tenggat waktu
Pavlos Theodorou
Perintah tidak mengubah apa pun - itu hanya melaporkan apakah disk "rotational" (HDD). Rotasional = 0 berarti ini adalah SSD atau drive lain yang tidak berputar.
Royce Williams
apa maksudmu itu tidak mengubah apa pun? Dan aturan udev tertulis di sana apa fungsinya? Ada di dalam kotak kuning juga. Maksudmu aku buta atau aku tidak bisa membaca?
Pavlos Theodorou
1
Kesalahanku. Tampaknya di kernel terbaru mereka menghapus penjadwal ... ??? untuk f in / sys / block / sd? / queue / scheduler; lakukan printf "$ f is"; cat $ f; selesai / sys / block / sda / queue / scheduler adalah [mq-deadline] tidak ada / sys / block / sdb / queue / scheduler adalah [mq-deadline] tidak ada / sys / block / sdc / antrian / scheduler adalah [mq-deadline ] none / sys / block / sdd / queue / scheduler adalah [mq-deadline] tidak ada Artikel dan semua yang Anda tulis baik-baik saja. Hanya ada tenggat waktu dan tidak ada lagi yang bisa dipilih.
Pavlos Theodorou