Tôi đọc rằng có thể thay đổi bộ lập lịch I/O cho một thiết bị cụ thể trên hạt nhân đang chạy bằng cách ghi vào/sys/block/[disk]/queue/scheduler. Ví dụ: tôi có thể thấy trên hệ thống của mình:Chọn một Bộ lập lịch I/O Linux
[email protected]:~$ cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
rằng mặc định là trình lập lịch xếp hàng hoàn toàn công bằng. Những gì tôi tự hỏi là nếu có bất kỳ sử dụng trong bao gồm tất cả bốn schedulers trong hạt nhân tùy chỉnh của tôi. Có vẻ như không có nhiều hơn một bộ lập lịch được biên dịch trừ khi hạt nhân đủ thông minh để chọn bộ lập lịch chính xác cho phần cứng chính xác, cụ thể là bộ lập lịch 'noop' cho các ổ đĩa flash và một trong những bộ khác cho truyền thống ổ cứng.
Đây có phải là trường hợp không?
Thông tin tuyệt vời, cảm ơn! Nhưng câu hỏi cơ bản của tôi vẫn chưa được trả lời, nếu tôi cắm một ổ đĩa flash hoặc netbook của tôi chạy ra khỏi ổ đĩa flash vì ổ đĩa chính của nó là hạt nhân đủ thông minh để chọn noop thay vì cfq mặc định? Hoặc là hoàn toàn tùy thuộc vào tôi để làm điều đó theo cách thủ công? –
Bạn có thể định cấu hình hạt nhân để sử dụng một bộ lập lịch khác theo mặc định. Sẽ rất thông minh khi tự động sử dụng 'noop' trên phương tiện không quay, nhưng hạt nhân không có chức năng đó. Nó không có phát hiện phương tiện truyền thông không quay, nhưng nó không đáng tin cậy như một số đĩa misreport mình, và nó chưa được nối lên đến mã lập lịch I/O dù sao đi nữa. – ephemient
Bạn có thể thêm các quy tắc udev để xác định lịch trình dựa trên các đặc tính của thiết bị, như trong wiki debian (https://wiki.debian.org/SSDOptimization#Low-Latency_IO-Scheduler) # đặt thời hạn biểu cho các đĩa không xoay ACTION == "thêm | thay đổi", KERNEL == "sd [az]", ATTR {hàng đợi/quay} == "0", ATTR {hàng đợi/lịch biểu} = "thời hạn" –