Lệnh chrt trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh chrt của Linux để quản lý các thuộc tính lập lịch thời gian thực của các tiến trình đang chạy. Lệnh chrt cho phép bạn điều chỉnh độ ưu tiên thời gian thực của một tiến trình và quản lý chính sách lập lịch của nó, điều này có thể hữu ích cho việc tối ưu hóa hiệu suất của các ứng dụng quan trọng về thời gian hoặc đảm bảo rằng các tiến trình quan trọng được lên lịch với độ ưu tiên cao hơn.

Bạn sẽ bắt đầu bằng cách hiểu mục đích của lệnh chrt và cách kiểm tra độ ưu tiên thời gian thực hiện tại của một tiến trình. Sau đó, bạn sẽ học cách thay đổi độ ưu tiên thời gian thực và chính sách lập lịch của một tiến trình bằng lệnh chrt. Kiến thức này có thể giúp bạn tối ưu hóa hiệu suất hệ thống và đảm bảo rằng các tác vụ quan trọng được thực hiện kịp thời.

Tìm hiểu Mục đích của Lệnh chrt

Trong bước này, bạn sẽ tìm hiểu về mục đích của lệnh chrt trong Linux. Lệnh chrt được sử dụng để đặt và truy xuất các thuộc tính lập lịch thời gian thực của một tiến trình đang chạy.

Lệnh chrt cho phép bạn:

  • Điều chỉnh độ ưu tiên thời gian thực của một tiến trình
  • Quản lý chính sách lập lịch của một tiến trình

Điều này có thể hữu ích cho việc tối ưu hóa hiệu suất của các ứng dụng quan trọng về thời gian hoặc đảm bảo rằng các tiến trình quan trọng được lên lịch với độ ưu tiên cao hơn.

Hãy bắt đầu bằng cách kiểm tra độ ưu tiên thời gian thực hiện tại của một tiến trình. Chạy lệnh sau để lấy độ ưu tiên thời gian thực của tiến trình shell hiện tại:

chrt -p $$

Ví dụ đầu ra:

pid 1234's current scheduling policy: SCHED_OTHER
pid 1234's current scheduling priority: 0

Đầu ra cho thấy tiến trình shell hiện tại đang sử dụng chính sách lập lịch SCHED_OTHER với độ ưu tiên là 0. Đây là chính sách lập lịch mặc định cho hầu hết các tiến trình thông thường.

Bây giờ, hãy thử thay đổi độ ưu tiên thời gian thực của một tiến trình. Chúng ta sẽ sử dụng lệnh sleep để tạo một tiến trình mới và sau đó sử dụng chrt để điều chỉnh độ ưu tiên thời gian thực của nó.

sudo chrt -f -p 10 $$

Lệnh này đặt chính sách lập lịch thời gian thực FIFO (First-In-First-Out) với độ ưu tiên là 10 cho tiến trình shell hiện tại.

Ví dụ đầu ra:

pid 1234's current scheduling policy: SCHED_FIFO
pid 1234's current scheduling priority: 10

Lệnh chrt cho phép bạn quản lý các chính sách lập lịch và độ ưu tiên của các tiến trình, điều này có thể hữu ích cho việc tối ưu hóa hiệu suất hệ thống và đảm bảo rằng các tác vụ quan trọng được thực hiện kịp thời.

Điều chỉnh Độ ưu tiên Thời gian Thực của Tiến trình

Trong bước này, bạn sẽ học cách điều chỉnh độ ưu tiên thời gian thực của một tiến trình bằng lệnh chrt.

Các chính sách lập lịch thời gian thực trong Linux được thiết kế để cung cấp hành vi xác định và độ trễ thấp cho các ứng dụng quan trọng về thời gian. Lệnh chrt cho phép bạn đặt chính sách lập lịch và độ ưu tiên của một tiến trình.

Hãy bắt đầu bằng cách tạo một tiến trình mới bằng lệnh sleep và sau đó điều chỉnh độ ưu tiên thời gian thực của nó.

## Start a new process
sudo chrt -f -p 10 sleep 60 &

Lệnh này khởi động một tiến trình sleep mới với chính sách lập lịch thời gian thực FIFO (First-In-First-Out) và độ ưu tiên là 10.

Bạn có thể xác minh chính sách lập lịch và độ ưu tiên của tiến trình mới bằng lệnh chrt:

chrt -p $(pgrep sleep)

Ví dụ đầu ra:

pid 12345's current scheduling policy: SCHED_FIFO
pid 12345's current scheduling priority: 10

Bây giờ, hãy thử thay đổi độ ưu tiên thời gian thực của tiến trình sleep thành một giá trị cao hơn là 20:

sudo chrt -f -p 20 $(pgrep sleep)

Bạn có thể xác minh độ ưu tiên đã cập nhật bằng cách chạy lại lệnh chrt -p:

chrt -p $(pgrep sleep)

Ví dụ đầu ra:

pid 12345's current scheduling policy: SCHED_FIFO
pid 12345's current scheduling priority: 20

Lệnh chrt cho phép bạn điều chỉnh động độ ưu tiên thời gian thực của một tiến trình đang chạy, điều này có thể hữu ích cho việc tối ưu hóa hiệu suất của các ứng dụng quan trọng về thời gian hoặc đảm bảo rằng các tiến trình quan trọng được lên lịch với độ ưu tiên cao hơn.

Quản lý Chính sách Lập lịch với Lệnh chrt

Trong bước cuối cùng này, bạn sẽ học cách quản lý các chính sách lập lịch khác nhau bằng lệnh chrt.

Linux hỗ trợ một số chính sách lập lịch, mỗi chính sách có các đặc điểm và trường hợp sử dụng riêng. Các chính sách lập lịch chính là:

  • SCHED_OTHER: Chính sách lập lịch mặc định cho các tiến trình thông thường. Nó sử dụng phương pháp chia sẻ thời gian để phân phối thời gian CPU giữa các tiến trình.
  • SCHED_FIFO: Một chính sách lập lịch thời gian thực, First-In-First-Out. Các tiến trình có chính sách này chạy cho đến khi chúng tự nguyện nhường CPU hoặc bị ngắt bởi một tiến trình có độ ưu tiên cao hơn.
  • SCHED_RR: Một chính sách lập lịch thời gian thực, Round-Robin. Tương tự như SCHED_FIFO, nhưng các tiến trình được gán một lát thời gian và bị ngắt khi lát thời gian hết hạn.
  • SCHED_BATCH: Một chính sách được thiết kế cho các tiến trình kiểu batch, bị ràng buộc bởi CPU. Nó cung cấp cho các tiến trình này độ ưu tiên thấp hơn một chút so với SCHED_OTHER.
  • SCHED_IDLE: Một chính sách được thiết kế cho các tiến trình có độ ưu tiên thấp, thời gian nhàn rỗi.

Hãy thử đặt các chính sách lập lịch khác nhau cho một tiến trình bằng lệnh chrt:

## Set the SCHED_FIFO policy with priority 10
sudo chrt -f -p 10 sleep 60 &

## Set the SCHED_RR policy with priority 15
sudo chrt -r -p 15 sleep 60 &

## Set the SCHED_BATCH policy
sudo chrt -b sleep 60 &

## Set the SCHED_IDLE policy
sudo chrt -i sleep 60 &

Bạn có thể sử dụng lệnh chrt -l để liệt kê tất cả các chính sách lập lịch có sẵn:

chrt -l

Ví dụ đầu ra:

Scheduling policies available:
SCHED_OTHER
SCHED_FIFO
SCHED_RR
SCHED_BATCH
SCHED_IDLE

Lệnh chrt cung cấp một cách linh hoạt để quản lý các chính sách lập lịch và độ ưu tiên của các tiến trình, cho phép bạn tối ưu hóa hiệu suất hệ thống và đảm bảo rằng các tác vụ quan trọng được thực hiện kịp thời.

Tóm tắt

Trong lab này, bạn đã học về mục đích của lệnh chrt trong Linux, được sử dụng để đặt và truy xuất các thuộc tính lập lịch thời gian thực của một tiến trình đang chạy. Bạn bắt đầu bằng cách kiểm tra độ ưu tiên thời gian thực hiện tại của một tiến trình, và sau đó học cách điều chỉnh độ ưu tiên thời gian thực của một tiến trình bằng lệnh chrt. Điều này có thể hữu ích cho việc tối ưu hóa hiệu suất của các ứng dụng quan trọng về thời gian hoặc đảm bảo rằng các tiến trình quan trọng được lên lịch với độ ưu tiên cao hơn.

400+ câu lệnh phổ biến trong Linux