Những loại thuật toán lập lịch được sử dụng trong 15.04? Liệu có thể thay đổi nó không?


12

Muốn biết cơ chế lập lịch nào được sử dụng trong 15.04, chia sẻ thời gian hoặc thời gian thực, tôi khá chắc chắn rằng FIFO, Round Robin, SJF của nó?

PS: Mới dùng Linux

Câu trả lời:


14

Lập lịch xử lý

Bộ lập lịch xử lý xử lý phân bổ tài nguyên CPU để thực hiện các quy trình và nhằm mục đích tối đa hóa việc sử dụng CPU tổng thể đồng thời tối đa hóa hiệu suất tương tác.

Vì kernel 2.6,23 (tương đương với Hardy 8.04 LTS) Bộ lập lịch hoàn toàn công bằng (CFS) dựa trên "Thời hạn cầu thang xoay". Tổng quan từ kernel.org :

CFS là viết tắt của "Bộ lập lịch hoàn toàn công bằng" và là bộ lập lịch xử lý "máy tính để bàn" mới được Ingo Molnar triển khai và sáp nhập vào Linux 2.6.23. Nó là sự thay thế cho mã tương tác SCHED_OTHER của trình lập lịch vani trước đó.

80% thiết kế của CFS có thể được tóm tắt trong một câu duy nhất: CFS về cơ bản mô hình hóa một "CPU đa tác vụ chính xác, lý tưởng" trên phần cứng thực.

"CPU đa tác vụ lý tưởng" là CPU (không tồn tại :-)) có sức mạnh vật lý 100% và có thể chạy từng tác vụ với tốc độ chính xác bằng nhau, song song, mỗi tốc độ 1 / nr_rucky. Ví dụ: nếu có 2 tác vụ đang chạy, thì nó chạy mỗi nhiệm vụ với 50% sức mạnh vật lý --- tức là thực sự song song.

Trên phần cứng thực, chúng ta chỉ có thể chạy một tác vụ duy nhất cùng một lúc, vì vậy chúng tôi phải giới thiệu khái niệm "thời gian chạy ảo". Thời gian chạy ảo của một tác vụ chỉ định thời gian tiếp theo của nó sẽ bắt đầu thực thi trên CPU đa tác vụ lý tưởng được mô tả ở trên. Trong thực tế, thời gian chạy ảo của một tác vụ là thời gian chạy thực tế của nó được chuẩn hóa thành tổng số tác vụ đang chạy.


  • Kernel 2.4: Bộ lập lịch O (n) ; không có bản phát hành Ubuntu với kernel đó.
  • Kernel 2.6.0 đến 2.6.22: Bộ lập lịch O (1) . Warty 4.10 (bản phát hành đầu tiên) được sử dụng 2.6.8. Gutsy 7.10 là cái cuối cùng sử dụng 2.6,22 hoặc thấp hơn.

Bộ lập lịch I / O

Lập lịch đầu vào / đầu ra là phương pháp mà hệ điều hành sử dụng để quyết định các hoạt động I / O của khối thứ tự nào sẽ được gửi đến khối lượng lưu trữ.

Bài viết của Phoronix về lập lịch : Linux 3.16: Bộ lập lịch I / O Hạn chót thường dẫn đầu với một ổ SSD.


Bạn có thể thay đổi bộ lập lịch I / O bằng cách nối thêm tùy chọn "thang máy =" thành "GRUB_CMDLINE_LINUX_DEFAULT =" trong grub.

Có lẽ dễ dàng hơn (giả sử sda và thời hạn) để làm điều đó như thế này:

  • Để hiển thị danh sách các lịch trình có sẵn:

    cat /sys/block/sda/queue/scheduler
    
  • Và để thay đổi lịch trình (có thể được thực hiện nhanh chóng):

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

Từ kernel / git / torvalds / linux.git


Bạn có thể kiểm tra những gì đang được sử dụng với (giả sử sda là primurine):

cat /sys/block/sda/queue/scheduler

Điều này có nghĩa là cơ chế lập lịch được sử dụng trong Ubuntu 15.04 theo mặc định là thuật toán chia sẻ thời gian, CFS? Hoặc nó đi kèm với KHÁC, RR và FIFO? Tôi đã nhận được thông tin của mình ở đây: manpages.ubfox.com/manpages/hardy/man2/
Kẻ

Bạn đang xem các trang web cho Hardy. Đó là một chút cũ;) 'cfq' là mặc định. Xem liên kết được thêm vào kernel / git / torvalds / linux.git.
Rinzwind

1
... không phải điều này gây nhầm lẫn giữa bộ lập lịch đĩacpu sao? Chúng là những con thú khá khác nhau. Bộ lập lịch CPU quyết định tiến trình nào được chạy tiếp theo và bộ lập lịch đĩa quyết định cách truy cập các khối dữ liệu trong đĩa. Xem ví dụ wiki.archlinux.org/index.php/Maximizing_performance
Rmano

Chà, không thực sự, điểm chính của câu hỏi này là làm rõ cơ chế lập lịch trình quy trình nào là Ubuntu 15.04 đang chạy. (Xin lỗi nếu tôi không rõ ràng)
leslie_lyj

2
@Rmano Tôi cho rằng đây là thông tin không dành riêng cho việc sử dụng nó. Nhưng kẻ thần kinh trong tôi đã biến mất tất cả>: - D Bất cứ ai muốn chơi với điều này nên được kỳ vọng là một chuyên gia: X
Rinzwind
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.