Tin tức và phân tích của tất cả các thiết bị di động

Cách ưu tiên các quy trình với nice và renice trong linux

Các lệnh nice và renice cho phép bạn tinh chỉnh cách nhân xử lý các tiến trình bằng cách điều chỉnh mức độ ưu tiên của chúng. Đọc hướng dẫn này để tìm hiểu cách sử dụng chúng trên các hệ điều hành giống Linux và Unix, chẳng hạn như macOS.

Tất cả phụ thuộc vào quá trình

Bên trong máy tính Linux hoặc Unix, sẽ có nhiều quy trình chạy trước khi bạn khởi chạy ứng dụng bạn muốn sử dụng. Hầu hết các quy trình này là các thành phần thiết yếu của chính Linux hoặc các quy trình hỗ trợ môi trường máy tính để bàn. Có rất nhiều điều xảy ra đằng sau hậu trường. Tất nhiên, chỉ có rất nhiều tài nguyên hệ thống và thời gian CPU để xử lý. Nhân Linux là bộ điều khiển cho tất cả các quy trình này.

Việc quyết định quy trình nào cần chú ý và tài nguyên bây giờ là tùy thuộc vào hạt nhân và quy trình nào phải chờ. Nhân liên tục sắp xếp các quy trình và mức độ ưu tiên để đảm bảo máy tính của bạn chạy trơn tru nhất có thể và tất cả các quy trình đều được chia sẻ công bằng. Một số quy trình được ưu đãi. Chúng rất quan trọng đối với hoạt động tổng thể của máy tính nên nhu cầu của chúng phải được đặt lên hàng đầu, chẳng hạn như trước trình duyệt.

giá trị tốt đẹp

Một trong những tiêu chí được sử dụng để xác định cách hạt nhân xử lý một quy trình là giá trị tốt đẹp. Mỗi quá trình có một giá trị tốt đẹp. Giá trị đẹp là một số nguyên trong khoảng từ -19 đến 20. Tất cả các quy trình tiêu chuẩn được bắt đầu với giá trị đẹp bằng 0.

Bí quyết là giá trị của Nice càng cao thì quy trình của bạn càng dễ chịu hơn đối với các quy trình khác. Nói cách khác, một giá trị tốt đẹp cao cho hạt nhân biết rằng quá trình này rất vui khi chờ đợi. Số âm ngược lại với số đẹp. Giá trị tốt đẹp âm càng lớn, quá trình càng ích kỷ. Nó cố gắng chiếm càng nhiều thời gian của CPU càng tốt mà không chú ý đến các tiến trình khác.

Chúng ta có thể sử dụng lệnh nice để thiết lập giá trị tốt đẹp khi một tiến trình đang chạy và chúng ta có thể sử dụng renice để điều chỉnh giá trị tốt đẹp của tiến trình đang chạy.

Lệnh hay

Chúng ta có thể sử dụng lệnh Nice để điều chỉnh giá trị Nice của chương trình khi nó khởi động. Điều này cho phép chúng tôi tăng hoặc giảm mức độ ưu tiên dành cho một quy trình bởi hạt nhân so với các quy trình khác.

Giả sử một lập trình viên đã viết một chương trình tên là Ackermann. Điều này tính toán các Hàm Ackerman. Nó ngốn CPU và bộ nhớ. Lập trình viên có thể chạy chương trình bằng lệnh sau:

./ackermann

Chúng ta có thể sử dụng lệnh top để xem chương trình đang chạy.

top

hàng đầu hoạt động trong thiết bị đầu cuối

Chi tiết về chương trình Ackermann có thể xem ở trên. Giá trị thú vị là số trong “cột NI”. Nó được đặt thành 0 như mong đợi.

Hãy khởi động lại nó và làm cho nó ít đòi hỏi hơn lần này. Chúng ta sẽ đặt giá trị đẹp là 15 cho chương trình Ackermann như sau. Nhập đẹp, dấu cách, -15, dấu cách khác, sau đó nhập tên chương trình bạn muốn chạy. Trong ví dụ của chúng tôi, nhà phát triển giả của chúng tôi sử dụng ./ackermann.

nice -15 ./ackermann

lệnh đẹp 15 trong cửa sổ đầu cuối

Lưu ý rằng “-15” không có nghĩa là trừ mười lăm. Đó là mười lăm tích cực. Dấu “-” là bắt buộc để cho tôi biết rằng chúng tôi đang truyền một tham số. Để biểu thị số âm, hãy nhập hai dấu “-“.

Nếu chúng ta bắt đầu lại từ bây giờ, chúng ta sẽ thấy sự thay đổi trong hành vi của Ackermann.

top

hàng đầu hoạt động trong thiết bị đầu cuối

Với giá trị đẹp là 15, Ackermann không sử dụng nhiều thời gian nhất của CPU. Gnome và Rhybeatbox sử dụng nhiều hơn. Chúng tôi đã chặn Ackermann trong giây lát.

Bây giờ, hãy làm ngược lại và cung cấp cho ACKermann một giá trị âm tốt đẹp. Lưu ý việc sử dụng hai ký tự “-“. Để làm cho ứng dụng trở nên ích kỷ hơn và kém thú vị hơn, bạn cần sử dụng sudo. Bất kỳ ai cũng có thể làm cho ứng dụng của họ trở nên thú vị hơn, nhưng chỉ những siêu người dùng mới có thể khiến một người trở nên ích kỷ hơn.

sudo nice --10 ./ackermann

lệnh mát -10 trong cửa sổ đầu cuối

Hãy chạy lên đầu và xem nó tạo ra sự khác biệt như thế nào.

top

hàng đầu hoạt động trong thiết bị đầu cuối

Ackermann có giá trị tốt đẹp là -10 trong khoảng thời gian này. Nó đã hoạt động trở lại và sử dụng nhiều thời gian CPU hơn trước.

lệnh đổi mới

Lệnh renice cho phép chúng ta điều chỉnh giá trị đẹp của một tiến trình đang chạy. Chúng tôi không cần phải dừng nó và khởi động lại nó một cách tốt đẹp. Chúng ta có thể xác định một giá trị mới một cách nhanh chóng.

Lệnh renice lấy ID tiến trình hoặc PID tiến trình làm tham số dòng lệnh. Chúng tôi có thể trích xuất ID quy trình từ cột “PID” ở trên cùng hoặc chúng tôi có thể sử dụng ps và grep để tìm nó, như sau. Tất nhiên, thay vì từ dave, hãy nhập tên người dùng và tên của quy trình mà bạn quan tâm.

ps -eu dave | grep ackermann

ps được tải lên qua grep trong cửa sổ đầu cuối

Bây giờ chúng ta có PID, chúng ta có thể sử dụng nó với renice. Chúng tôi sẽ đưa Ackermann trở lại hành vi dễ chịu hơn với giá trị tốt là năm. Để thay đổi giá trị đẹp cho một tiến trình đang chạy, bạn cần sử dụng sudo. Lưu ý rằng trong tham số 5 không có “-“. Bạn không cần một cho số dương và bạn chỉ cần một chứ không phải hai cho số âm.

sudo renice -n 5 2339

lệnh renice chạy trong cửa sổ đầu cuối

Chúng tôi nhận được xác nhận rằng renice đã thay đổi giá trị của tốt đẹp. Nó cho chúng ta thấy giá trị cũ và giá trị mới.

Nhân thường rất tốt trong việc xử lý các ưu tiên và phân bổ thời gian CPU cũng như tài nguyên hệ thống. Nhưng nếu bạn có một nhiệm vụ dài, sử dụng nhiều CPU cần hoàn thành và bạn không quan tâm khi nào nó hoàn thành, máy tính của bạn sẽ chạy mượt hơn một chút nếu bạn đặt giá trị Nice cao hơn cho nhiệm vụ đó. Nó sẽ thú vị hơn cho tất cả mọi người.