Tại sao Ubuntu 16.04 thiết lập tất cả các trình lập lịch IO của ổ đĩa thành thời hạn chót của Google?


17

Tôi vừa cài đặt Xubfox 16.04-64bit vào phân vùng thứ hai trên máy tính xách tay của mình. Đôi khi tôi nhận thấy nó có vẻ hơi chậm, vì vậy tôi đã kiểm tra bộ lập lịch IO mà nó đang sử dụng cho ổ đĩa đó, hóa ra là deadlinedành cho tất cả các ổ đĩa. Tôi có một vài ổ SSD và ổ cứng vì vậy tôi biết rằng "hạn chót" là tốt nhất cho SSD và cfqcho ổ cứng.

Tôi đã khởi động vào 14.04 trên một phân vùng khác và nó đang sử dụng cfqcho các ổ đĩa quay và deadlinecho SSD. Tôi cũng nhìn vào /etc/udev/rules.dđể xem liệu 14.04 có đang sử dụng quy tắc để định cấu hình cho loại ổ đĩa không nhưng nó không có ở đó, vì vậy tôi cho rằng kernel đang làm việc đó.

Vì vậy, tôi tự hỏi nếu đây là một lỗi hoặc họ đang sử dụng "thời hạn" cho tất cả mọi thứ bây giờ?

Cập nhật: Nhận xét tôi đã viết về /etc/udev/rules.d là một sai lầm. Trong thực tế, tôi đã sử dụng quy tắc udev để thay đổi lịch trình (giống như câu trả lời bên dưới) theo loại xoay vòng kể từ khi tôi bắt đầu sử dụng SSD, một vài năm trước. Tôi đoán là tôi đã quên ... già đi. Dù sao, một trong những tài liệu tham khảo tôi sử dụng là wiki tối ưu hóa SSD SSD .

Nó sẽ không phải là một ý tưởng tốt nếu nó được bao gồm? Chỉ là một gợi ý!

Câu trả lời:


6

Với việc phát hành 14.04, bộ lập lịch mặc định cho kernel 3.13 đã được thay đổi từ CFQ thành Hạn chót .

Không còn hạt nhân máy chủ riêng biệt và sheduler CFQ không phù hợp với nhiều tình huống sử dụng máy chủ, ví dụ như thời gian chờ ghi KVM . Thậm chí có các hồi quy hiệu suất trên máy tính để bàn với các thiết bị USB .


1
Cảm ơn đã đọc, rất giác ngộ! Sự cố USB tôi thường gặp với thẻ SD và với máy tính bảng Android trong TWRP. Sau đó, nó sẽ treo ngay ở cuối trong vài phút. Vấn đề KVM không bao giờ hiển thị trên các khách VB của tôi vì họ đang ở trên SSD của tôi.
curt54

32

Nhóm hạt nhân Ubuntu thường xuyên thực hiện nhiều phân tích về các khối lượng công việc mô phỏng khác nhau trên các hệ thống tệp khác nhau và các bộ lập lịch I / O để có ý tưởng về lựa chọn bộ lập lịch I / O chung tốt nhất. Câu trả lời chung là không có lựa chọn bộ lập lịch I / O hoàn hảo cho cấu hình chung trên tất cả các loại cài đặt khác nhau cho tất cả các loại phương tiện khác nhau. Những điểm nổi bật cần nhớ là:

  1. Các hệ thống đang chuyển sang SSD, vì vậy noop hoặc thời hạn là tốt nhất cho những điều này; noop có ít chi phí CPU hơn thời hạn.

  2. CFQ vs Hạn chót là một cuộc gọi khó khăn. CFQ không cho phép linh hoạt hơn. Tuy nhiên, chúng tôi thấy rằng đối với phạm vi hoạt động I / O mô phỏng rộng hơn, thời hạn cung cấp độ trễ thấp hơn và thông lượng cao hơn một chút so với CFQ.

  3. Tôi thường xuyên kiểm tra hạt nhân (mỗi lần kiểm tra kernel mất hơn 3 ngày để hoàn thành) cho một loạt các hệ thống tệp và bộ lập lịch I / O. Từ dữ liệu này và các loại dữ liệu khác, chúng tôi cố gắng đưa ra quyết định sáng suốt về sự lựa chọn tốt nhất, xem:

http://kernel.ubfox.com/~cking/fs-tests/

Có những ưu / nhược điểm đối với tất cả các bộ lập lịch I / O, vì vậy mọi mặc định đều không hoàn hảo và nhóm nhân Ubuntu luôn sẵn sàng có đầu vào cho lựa chọn mặc định nếu dữ liệu và lý do thuyết phục cho chúng tôi thay đổi.


5
Chúng tôi đã chuyển sang sử dụng CFQ làm mặc định cho kernel Ubuntu Zesty 4.10 và cũng kích hoạt CONFIG_BLK_WBT_MQ (điều chỉnh phản hồi đa văn bản) vì điều này giải quyết vấn đề ghi lại bộ nhớ cache bẩn với các thiết bị chậm như thiết bị flash.
Colin Ian King

1
Có lẽ chúng ta sẽ thấy BFQ như mặc định khi nó ở trong kernel 4.12?
JauntyDoe

Chúng tôi sẽ đánh giá điều này cho 4.12 / 4.13, tôi cũng đã thực hiện một số thử nghiệm sớm với kyber nhưng tôi sẽ xem xét lại những điều này một lần nữa khi 4.12 ra mắt trong tuần này.
Colin Ian King

Về nguyên tắc, câu hỏi này chỉ nói về kernel 16.04, nhưng nó vẫn xuất hiện trong tìm kiếm :-). Vì vậy, đây là một bản cập nhật gần đây hơn: Ubuntu đã chuyển trở lại CFQ, khớp với mặc định ngược dòng, trong Ubuntu 17.04 (zesty) đến 18.10 (vũ trụ) .
sourcejedi

1
Cập nhật thêm: Linux đã vô hiệu hóa WBT khi sử dụng CFQ hoặc BFQ (ít nhất là theo mặc định), vì nó không hoạt động tốt với nhau. 2) Nếu bạn muốn đánh giá vấn đề được WBT giải quyết, tôi nghĩ bạn cần lưu ý vấn đề khác nhau giữa các thiết bị (các phần mềm khác nhau). Trong kết quả điểm chuẩn của bạn, tôi thậm chí không thể tìm thấy loại thiết bị nào đã được sử dụng. 3) Tôi tò mò về mô tả của bạn về những gì WBT giải quyết. Nếu bạn nhìn vào thư xin việc trên v2 của bộ bản vá WBT, WBT được thiết kế để xử lý ghi đệm trên đèn flash nhanh , có thể có hàng đợi rất sâu và tránh bỏ đói người đọc trên cùng một thiết bị.
nguồn

9

Tôi không biết lý do tại sao các nhà phát triển quyết định chọn deadlinelàm lịch trình mặc định, có thể đó là do hầu hết các máy tính mới đều có SSD, trên đó các hệ thống thường được cài đặt. Bạn có thể đặt lịch trình theo cách thủ công theo cách này, trong trường hợp bạn chưa cài đặt nó ... cài đặt gksu:

Mở một thiết bị đầu cuối và thực hiện:

sudo apt install gksu  

Sau đó thực hiện lệnh này:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

Dán văn bản sau vào tệp trống và lưu tệp đã thay đổi.

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

Khởi động lại hệ điều hành và bây giờ bạn đang sử dụng bộ lập lịch tối ưu cho ổ cứng và SSD.


Vâng, đây là những gì tôi đã được sử dụng, theo cập nhật của tôi trong câu hỏi. Nhưng tôi nghĩ rằng vì ngày nay có cả hai loại ổ đĩa nên chúng có quy tắc này trong tất cả các bản phân phối Linux.
curt54
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.