Làm thế nào để tôi thay đổi để lập lịch noop?


29

Tôi có một ổ SSD trong máy tính xách tay của mình và tôi được cho biết rằng việc chuyển sang lịch trình "noop" được ưu tiên hơn.

Làm cách nào để tôi thay đổi lịch trình noop và tôi thực hiện thay đổi ở đâu để nó được duy trì trong suốt quá trình khởi động lại?

Câu trả lời:


21

Chỉnh sửa / etc / default / grub, chẳng hạn như gksudo gedit /etc/default/grub, ở đây bạn cần thêm thang máy = noop.

Thay đổi GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"thành GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop".

Sau đó chạy sudo update-grub2và khởi động lại.


6
Câu trả lời ẩn danh là tốt để thay đổi mặc định trên tất cả các đĩa trên một hệ thống. Ngược lại, câu trả lời của Eliah Kagan đặt mặc định cho các đĩa cụ thể. Đối với một máy tính xách tay với một ổ đĩa duy nhất, hoạt động tốt. Đối với các hệ thống có nhiều đĩa - đáng chú ý nhất là các đĩa có cả ổ SSD và ổ đĩa quay), câu trả lời của Eliah Kagan cung cấp khả năng kiểm soát chi tiết hơn.
Royce Williams

28

Giả sử đĩa cứng của bạn là /dev/sda. Sau đó, bạn có thể kiểm tra xem trình lập lịch nào hiện đang được sử dụng cho nó:

cat /sys/block/sda/queue/scheduler

(Bộ lập lịch hiện đang sử dụng sẽ được bao quanh bởi [ ]dấu ngoặc.)

Và bạn có thể làm cho nó sử dụng bộ lập lịch noop:

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

Xem bài viết này để biết thêm thông tin.

Để thay đổi liên tục, bạn có thể đặt lệnh vào /etc/rc.local.


1
Tôi nhận được lỗi "cho phép bị từ chối" khi chạy lỗi này, ngay cả với sudo
Lucas Bustamante

@LucasBustamante Bạn đang chạy sudo echo noop > /sys/block/sda/queue/schedulerà? Điều đó không hoạt động, như shell, chạy như người dùng của bạn, thiết lập chuyển hướng trước khi chạy lệnh có đầu ra được chuyển hướng. Bạn có thể sử dụng echo noop | sudo tee /sys/block/sda/queue/schedulerthay thế. Xem Không thể echo echo xin chào> x.txt ngay cả với sudo? Làm thế nào để giải quyết sự cho phép của Viking từ chối việc sử dụng sudo với chuyển hướng trong Bash? để biết thêm thông tin và các phương pháp khác. (Nếu đó không phải là ý bạn, xin vui lòng cho tôi biết.)
Eliah Kagan

cảm ơn vì đã trả lời, điều đó cũng không giúp được gì Tôi đang sử dụng SSD NVMe, tôi nghĩ rằng nó hoàn toàn không sử dụng bộ lập lịch, từ những gì tôi hiểu về serverfault.com/questions/693348/ Kẻ
Lucas Bustamante

14

Tham chiếu Debian này cho thấy cách phát hiện động SSD và thay đổi lịch trình phù hợp:

Trong các hệ thống có các loại ổ đĩa khác nhau, bạn có thể điều chỉnh cài đặt bằng quy tắc udev (tạo /etc/udev/rules.d/60-ssd-scheduler.rules):

# Đặt lịch trình thời hạn cho các đĩa không quay

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

Để đảm bảo rằng hạt nhân của bạn có thể phát hiện trạng thái quay:

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

Tất cả những điều trên được trích dẫn trực tiếp từ tài liệu tham khảo Debian, có nhiều yếu tố đáng quan tâm khác đối với người dùng SSD lần đầu.


root @ titan: / home / kessara # cho f trong / sys / block / sd? / queue / luân phiên; làm printf "$ f là"; mèo $ f; xong / sys / block / sda / queue / rotational là 0 / sys / block / sdb / queue / rotational là 0 / sys / block / sdc / queue / rotational là 1 / sys / block / sdd / queue / rotational là 1 root @titan: / home / kessara # cat / sys / block / sd * / queue / calendaruler [mq-deadline] none [mq-deadline] none [mq-deadline] none [mq-deadline] không có gì đó rất sai ở đây. Nó thay đổi tất cả các đĩa cứng thành hạn chót
Pavlos Theodorou

Lệnh không thay đổi bất cứ điều gì - nó chỉ đơn giản là báo cáo xem một đĩa có "quay" (HDD) hay không. Xoay vòng = 0 có nghĩa là ổ SSD hoặc ổ đĩa không quay khác.
Royce Williams

bạn có nghĩa là nó không thay đổi bất cứ điều gì? Và quy tắc udev được viết ở đó nó làm gì? Nó cũng nằm trong một cái hộp màu vàng. Bạn có nghĩa là tôi mù hoặc tôi không thể đọc?
Pavlos Theodorou

1
Lỗi của tôi. Có vẻ như trong kernel mới nhất họ đã gỡ bỏ bộ lập lịch ... ??? cho f trong / sys / block / sd? / queue / calendaruler; làm printf "$ f là"; mèo $ f; đã hoàn thành ] none / sys / block / sdd / queue / calendaruler là [mq-deadline] none Bài viết và mọi thứ bạn viết đều ổn. Chỉ là chỉ có thời hạn và không có gì khác để lựa chọn.
Pavlos Theodorou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.