Các tiến trình tạo thành cốt lõi của một hệ thống Linux đang chạy. Khi một chương trình chuyển đổi thành một tiến trình (tức là khi nó được thực thi), rất nhiều thuộc tính được thiết lập. Đôi khi, bạn có thể muốn thay đổi các thuộc tính này khi chạy. Có một công cụ dòng lệnh chrt cho phép bạn thực hiện việc này.
Trong hướng dẫn này, chúng ta sẽ thảo luận về tiện ích này với một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, chúng ta cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Và đây là cách trang hướng dẫn của công cụ giải thích về nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh chrt hoạt động.
Ví dụ, trên hệ thống của tôi, lệnh trên đã đưa ra pid '6063' làm đầu ra. Bây giờ, để lấy chính sách lập lịch hiện tại và mức độ ưu tiên cho quy trình gedit, hãy sử dụng chrt theo cách sau:
Và đây là đầu ra mà lệnh này tạo ra trên hệ thống của tôi:
Ví dụ, trên hệ thống của chúng tôi, lệnh trên tạo ra kết quả đầu ra sau:
Bạn sẽ phải tham khảo các giá trị này để thiết lập mức ưu tiên khi thiết lập chính sách lập lịch.
Ví dụ:
Bây giờ, nếu bạn kiểm tra lại chính sách lập lịch cho gedit bằng lệnh sau:
Bạn sẽ nhận được kết quả tương tự như sau, cho biết thay đổi bạn đã thực hiện đã được áp dụng:
Như đã thực hiện trong phần Hỏi & Đáp trước, bạn có thể xác minh chéo các thay đổi bằng lệnh chrt -p. Xin lưu ý rằng bạn có thể cần quyền root để sử dụng tùy chọn dòng lệnh -f.
Để xác minh, hãy sử dụng lệnh chrt -p.
Sau đây là kết quả trong trường hợp của tôi:
Trong hướng dẫn này, chúng ta sẽ thảo luận về tiện ích này với một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, chúng ta cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Lệnh chrt của Linux
Như đã đề cập trong phần giới thiệu ở trên, lệnh chrt cho phép bạn thao tác các thuộc tính thời gian thực của một quy trình. Sau đây là cú pháp của nó:
Mã:
chrt [options] -p [prio] pid
Mã:
chrt thiết lập hoặc truy xuất các thuộc tính lập lịch thời gian thực của một pid hiện có?
hoặc chạy lệnh với các thuộc tính đã cho. Cả chính sách (một
trong số SCHED_OTHER, SCHED_FIFO, SCHED_RR, SCHED_BATCH hoặc SCHED_IDLE) và
mức độ ưu tiên đều có thể được thiết lập và truy xuất.
Chính sách SCHED_BATCH được hỗ trợ kể từ Linux 2.6.16. Chính sách SCHED_IDLE
được hỗ trợ kể từ Linux 2.6.23.
Cờ SCHED_RESET_ON_FORK cho các chính sách SCHED_RR và SCHED_FIFO
được hỗ trợ kể từ Linux 2.6.31.
Câu hỏi 1. Làm thế nào để sử dụng lệnh chrt?
Giả sử bạn muốn thao tác chính sách lập lịch hoặc mức độ ưu tiên của quy trình gedit. Vì vậy, điều đầu tiên bạn cần làm là lấy id quy trình cho quy trình này, bạn có thể thực hiện việc này bằng lệnh pidof.
Mã:
pidof gedit
Mã:
chrt -p 6063
Mã:
Chính sách lập lịch hiện tại của pid 6063: SCHED_OTHER
Mức độ ưu tiên lập lịch hiện tại của pid 6063: 0
Câu 2. Làm thế nào để chrt hiển thị mức ưu tiên hợp lệ tối thiểu/tối đa?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -m.
Mã:
chrt -m
Mã:
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
Câu 3. Làm thế nào để thiết lập chính sách lập lịch thành SCHED_BATCH?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -b.Ví dụ:
Mã:
chrt -b -p 0 6063
Mã:
chrt -p 6063
Mã:
Chính sách lập lịch hiện tại của pid 6063: SCHED_BATCH
Mức độ ưu tiên lập lịch hiện tại của pid 6063: 0
Câu 4. Làm thế nào để thiết lập chính sách lập lịch thành SCHED_FIFO?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -f.
Mã:
chrt -f -p 20 6063
Câu hỏi 5. Làm thế nào để thiết lập chính sách lập lịch thành SCHED_OTHER?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -o.
Mã:
chrt -o -p 0 6063
Mã:
chrt -p 6063
Mã:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0