Lập kế hoạch thời gian thực trong Linux


24

Tôi đã được học một số khái niệm lập kế hoạch. Hiện tại sự hiểu biết của tôi cho đến nay là như dưới đây.

  • Có quy trình thời gian thực và quy trình không thời gian thực.
  • Các quy trình không theo thời gian thực có thể có nicecác giá trị cho mức độ ưu tiên của chúng trong phạm vi từ -20 đến +20 . Giá trị dương cao hơn cho thấy rằng quá trình có mức độ ưu tiên thấp hơn.
  • Các quy trình thời gian thực sẽ có một giá trị độc đáo được liệt kê -như được giải thích trong câu trả lời này ở đây . Điều này chủ yếu là do các quy trình thời gian thực có mức độ ưu tiên cao hơn các quy trình không theo thời gian thực và giá trị độc đáo không áp dụng cho chúng.
  • Bây giờ, tôi có thể sử dụng chrtđể xem các thuộc tính thời gian thực của một quy trình.

Đối với quy trình thời gian thực, chrtđầu ra cho là,

chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99

Như chúng ta có thể thấy cho quy trình 5 , mức độ ưu tiên là 99 là mức cao nhất. Ngoài ra, chính sách lập kế hoạch làSCHED_FIFO

Bây giờ, đối với quy trình không theo thời gian thực, chrtđầu ra cho là,

chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0

Như chúng ta có thể thấy cho quy trình 22383 , mức độ ưu tiên là 0 và chính sách lập lịch là SCHED_OTHER.

Câu hỏi

  1. Tôi có thể thực hiện bất kỳ quy trình nào như quy trình thời gian thực không?
  2. Tôi có thể đặt một số thuật toán lập lịch khác ngoài SCHED_OTHERquy trình không theo thời gian thực không?
  3. Từ đây , tôi cũng thấy rằng tôi có thể sửa đổi thuộc tính cho một quy trình đang chạy như,

    chrt -p prio pid
    

    Ngoài ra, tôi thấy chrt -mcung cấp cho tôi danh sách các thuật toán lập lịch. Lệnh cho tôi đầu ra là,

    SCHED_OTHER min/max priority    : 0/0
    SCHED_FIFO min/max priority     : 1/99
    SCHED_RR min/max priority       : 1/99
    SCHED_BATCH min/max priority    : 0/0
    SCHED_IDLE min/max priority     : 0/0
    

    Bây giờ, như đã đề xuất ở trên, nếu tôi đặt chrt -p 55 22383thuật toán nào sẽ được sử dụng?

Câu trả lời:


19

Câu hỏi 1

Người dùng cũng có thể sử dụng mức độ ưu tiên theo thời gian thực cho một quy trình. Cấu hình này có thể được thiết lập từ /etc/security/limits.conftập tin. Tôi thấy các nội dung dưới đây trong tập tin đó.

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>

Nếu chúng tôi kiểm tra phần mục, chúng tôi sẽ thấy mục bên dưới cho phép đặt mức độ ưu tiên theo thời gian thực cho người dùng.

#        - rtprio - max realtime priority

Câu hỏi 2 và câu hỏi 3

Để đặt chính sách lập lịch cho SCHED_FIFO, hãy nhập:

chrt -f -p [1..99] {pid}

Để đặt chính sách lập lịch cho SCHED_RR, hãy nhập:

chrt -r -p [1..99] {pid}

Vì vậy, để trả lời câu hỏi 3, chúng ta nên xác minh các thuật toán lập lịch có sẵn và các ưu tiên bằng cách sử dụng chrt -mlệnh và sau đó sử dụng bất kỳ thuật toán lập lịch nào phù hợp với nhu cầu của chúng ta. Để đặt các ưu tiên khác nhau, chúng ta có thể sử dụng các lệnh như trên.

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.