Tôi đang biên dịch lại hạt nhân của mình và tôi muốn chọn một bộ lập lịch I/O. Sự khác biệt giữa những điều này là gì?Sự khác biệt giữa CFQ, Thời hạn và NOOP là gì?
Trả lời
Nếu bạn biên dịch tất cả, bạn có thể chọn lúc khởi động hoặc trên mỗi thiết bị mà trình lên lịch sử dụng. Không cần phải chọn thời gian biên dịch, trừ khi bạn đang nhắm mục tiêu một thiết bị nhúng nơi mỗi byte đếm. Xem Documentation/block/switching-sched.txt
để biết chi tiết về cách chuyển đổi trên mỗi thiết bị hoặc toàn hệ thống khi khởi động.
Trình lập lịch biểu CFQ cho phép bạn đặt mức độ ưu tiên thông qua công cụ ionice(1)
hoặc cuộc gọi hệ thống ioprio_set(2)
. Điều này cho phép ưu tiên cho một số quy trình hoặc buộc người khác chỉ thực hiện IO của họ khi các thiết bị khối của hệ thống tương đối nhàn rỗi. Các hàng đợi được thực hiện bởi segregating the IO requests from processes into queues và xử lý các yêu cầu từ mỗi hàng đợi tương tự như lập lịch CPU. Thông tin chi tiết về cấu hình nó có thể được tìm thấy trong Documentation/block/cfq-iosched.txt
.
Trình lập lịch biểu thời hạn theo độ tương phản sẽ xem xét tất cả các lần ghi từ tất cả các quy trình cùng một lúc; nó sắp xếp theo số ngành, và viết chúng tất cả trong thời trang tuyến tính. Thời hạn có nghĩa là nó cố gắng viết mỗi khối trước khi thời hạn của nó hết hạn, nhưng trong thời hạn đó, là miễn phí để sắp xếp lại các khối khi nó thấy phù hợp. Thông tin chi tiết về cấu hình nó có thể được tìm thấy trong Documentation/block/deadline-iosched.txt
.
Có lẽ rất ít trong thực tế.
Trong thử nghiệm của mình, tôi thấy rằng nói chung NOOP tốt hơn một chút nếu bạn có bộ điều khiển RAID thông minh. Những người khác đã báo cáo kết quả tương tự, nhưng khối lượng công việc của bạn có thể khác.
Tuy nhiên, bạn có thể chọn chúng khi chạy (không khởi động lại), do đó, đừng lo lắng về thời gian biên dịch.
Sự hiểu biết của tôi là lịch trình "thông minh" (CFQ và thời hạn) chỉ thực sự hữu ích trên các thiết bị "quay đĩa" truyền thống không có bộ điều khiển RAID.
- 1. Sự khác biệt giữa móc và gọi lại là gì?
- 2. Sự khác biệt giữa GetHostEntry và GetHostByName là gì?
- 3. Sự khác biệt giữa khẳng định và static_assert là gì?
- 4. Sự khác biệt giữa '&' và ',' trong Generics Java là gì?
- 5. Sự khác biệt giữa engine.io và socket.io là gì?
- 6. Sự khác biệt giữa thời gian chờ và thời gian chờ mở là gì?
- 7. là gì sự khác biệt giữa SQL_Latin1_General_CP1_CI_AS và SQL_Latin1_General_CP1_CI_AI
- 8. Sự khác biệt giữa "1.0f" và "1.f" là gì?
- 9. Sự khác biệt giữa JavaBean và POJO là gì?
- 10. Sự khác biệt giữa betweeen% INC và @INC là gì?
- 11. Sự khác biệt giữa INTERSECT và WHERE IN là gì?
- 12. Sự khác biệt giữa RoutedCommand và RoutedUICommand là gì?
- 13. Sự khác biệt chính giữa Sinatra và Ramaze là gì?
- 14. Sự khác biệt giữa DBI và DBD là gì?
- 15. Sự khác biệt giữa NSInvocation và chặn là gì?
- 16. Sự khác biệt giữa fn và fn * là gì?
- 17. Sự khác biệt giữa xtype và bí danh là gì?
- 18. Sự khác biệt giữa build.sbt và build.scala là gì?
- 19. Sự khác biệt giữa localname và qname là gì?
- 20. Sự khác biệt giữa Application.ThreadException và AppDomain.CurrentDomain.UnhandledException là gì?
- 21. Sự khác biệt giữa while (true) và loop là gì?
- 22. Sự khác biệt giữa dealloc và viewdidunload là gì?
- 23. Sự khác biệt giữa uint và System.UInt32 là gì?
- 24. Sự khác biệt giữa heuristic và thuật toán là gì?
- 25. Sự khác biệt giữa decodeURIComponent và decodeURI là gì?
- 26. Sự khác biệt giữa \ r và \ n là gì?
- 27. Sự khác biệt giữa phần .got và .got.plt là gì?
- 28. Sự khác biệt giữa ascx và .cshtml là gì?
- 29. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 30. Sự khác biệt giữa Thông báo và pynotify là gì?
No-op cũng hoạt động tốt với SSD – r004