Kiểm soát quá trình sử dụng CPU Với đẹp và cpulimit [Linux]
Cho dù máy tính Linux của bạn nhanh đến mức nào, sẽ luôn có một số nhiệm vụ tiêu tốn rất nhiều thời gian của CPU. Mọi thứ từ mã hóa video để chạy các mô hình toán học có thể khiến CPU chạy ở 100%. Điều này là tốt nếu máy không làm bất cứ điều gì khác. Nhưng nếu nó là máy tính để bàn chính của bạn hoặc nó được sử dụng như một máy chủ, sau đó chạy một nhiệm vụ mà tối đa ra CPU của bạn sẽ làm cho máy chậm chạp và khó sử dụng. Vẻ đẹp của một hệ điều hành đa nhiệm là máy sẽ không đóng băng vì nó sẽ luôn lên lịch cho thời gian CPU cho các nhiệm vụ khác và những thứ như desktop sẽ vẫn hoạt động nhưng chậm hơn nhiều. Trình lên lịch không có cách nào để biết rằng bạn muốn tác vụ chuyên sâu của CPU chạy ở mức ưu tiên thấp hơn hoặc hạn chế thời gian CPU của nó. Tuy nhiên có một số công cụ có thể được sử dụng để kiểm soát quá trình sử dụng CPU cho các nhiệm vụ đói tài nguyên này.
Để mô phỏng một nhiệm vụ chuyên sâu của CPU, chúng ta có thể sử dụng một công cụ gọi là matho-prime
để tạo ra một danh sách các số nguyên tố. Nếu bạn yêu cầu nó tạo ra một danh sách đủ lớn, nó sẽ tối đa CPU trong khi nó đang hoạt động. Để cài đặt matho-prime
trên Ubuntu hoặc sử dụng Raspberry Pi:
sudo apt-get cài đặt mathomatic-primes
Hãy bắt đầu nhiệm vụ và xem việc sử dụng CPU:
matho-primes 0 9999999999> p.txt &
Điều này nói với matho-primes
để tạo ra một danh sách các số nguyên tố từ số không đến chín tỷ chín trăm chín mươi chín triệu chín trăm chín mươi chín nghìn chín trăm chín mươi chín! Đầu ra được chuyển hướng đến tệp p.txt
. Dấu và ở cuối cho trình bao chạy chương trình trong nền nghĩa là bạn được trả về dấu nhắc lệnh ngay sau khi bắt đầu nhiệm vụ.
Bây giờ chạy lệnh top
và chú ý số lượng CPU đang được sử dụng bởi bộ tạo số nguyên tố.
Bây giờ chúng ta hãy giết nhiệm vụ đó và xem cách chúng ta có thể khởi chạy nó ở mức ưu tiên thấp hơn. Thoát khỏi top
bằng cách nhấn q
, sau đó nhập fg
để đưa matho-primes
lên nền trước và sau đó nhấn “Ctrl + C” để buộc chương trình thoát.
Bây giờ bắt đầu chương trình một lần nữa nhưng lúc bắt đầu của lệnh thêm từ nice
:
tốt đẹp matho-primes 0 9999999999> p.txt &
nice
là một công cụ cho Linux để sắp xếp nhiệm vụ này ở mức ưu tiên thấp hơn. Độ độc đáo nằm trong khoảng từ -20 (lịch trình thuận lợi nhất) đến 19 (ít thuận lợi nhất). Theo mặc định nice
sẽ lên lịch nhiệm vụ với một tính độc đáo của 10. Theo mặc định nhiệm vụ bình thường được bắt đầu với một độc đáo của số không. Điều này có nghĩa là một nhiệm vụ có độ độc đáo là 10 sẽ được xem là ưu tiên thấp hơn và sẽ được cung cấp tài nguyên CPU ít thường xuyên hơn.
Bây giờ chúng ta có thể bắt đầu một máy phát số nguyên tố thứ hai để mô phỏng các tác vụ khác mà bạn muốn thực hiện trên máy của mình (như duyệt web hoặc viết tài liệu). Điều này sẽ có một độc đáo bình thường như sử dụng máy tính để bàn nên được một ưu tiên lớn hơn chạy máy phát điện số nguyên tố.
matho-primes 0 9999999999> p2.txt &
Lưu ý rằng đầu ra từ tệp này được chuyển hướng đến p2.txt
. Đầu ra từ top
sẽ trông giống như sau:
Như bạn có thể thấy, quá trình có độ nhạy cao hơn sẽ nhận được ít thời gian CPU hơn. Điều này có nghĩa là nếu bạn khởi động một nhiệm vụ chuyên sâu với CPU, nó sẽ không làm cho máy của bạn cảm thấy chậm chạp hoặc làm cho nó phản ứng chậm.
cpulimit
Có một lệnh khác được gọi là “cpulimit” thay vì thay đổi ưu tiên lên lịch, nó tạm thời tạm dừng một quá trình để đảm bảo rằng nó không vượt quá mức sử dụng CPU mong muốn.
Để cài đặt loại:
sudo apt-get cài đặt cpulimit
Bây giờ hãy chạy lại bộ tạo số nguyên tố CPU và lưu ý số PID của nó bằng lệnh này:
ps | grep matho-prime
Cột đầu tiên của đầu ra là PID. Bây giờ hạn chế việc sử dụng CPU của quá trình đó như thế này:
sudo cpulimit -b -l 50 -p 16299
Trường hợp 16299 là PID của quá trình matho-primes
. Một cái nhìn với top
sẽ hiển thị một cái gì đó như thế này:
Đi xa hơn
Có một lệnh đồng hành để gọi là renice
nice
mà sẽ thay đổi tính độc đáo của một quá trình hiện có. Cố gắng sử dụng top
hoặc ps
với grep
để lấy PID của một quá trình và sử dụng renice +19 16299
để đặt mức ưu tiên thành mức thấp nhất có thể (trong đó 16299 là PID của quá trình).
Vui lòng thêm vào cuộc thảo luận trong phần bình luận bên dưới.