Tôi có thể giới hạn việc sử dụng CPU của một ứng dụng không?


Câu trả lời:


16

Cũng như một thay thế cho cpulimit:

Bạn có thể bắt đầu clamscan với lệnh Nice, vd

nice -n 19 clamscan.

Xem man niceđể biết chi tiết.

KHÔNG giới hạn CPU, nhưng nó làm giảm mức độ ưu tiên của quy trình.

Ngoài ra còn có reniceđể thay đổi mức độ ưu tiên của các quy trình đang chạy.


2
Có vẻ như nó vẫn hoạt động khi ăn nhiều cpu ...
Pitto

4
Miễn là không có quá trình nào khác đòi hỏi phải có tiền, thì clamscan nhận được rất nhiều. Nhưng ngay khi một quá trình khác (có mức độ ưu tiên cao hơn) cần có thời gian, thì clamscan không có cơ hội. cpulimit giới hạn số lượng tuyệt đối, và giới hạn tốt về số lượng tương đối.
Clausi

2
+1. niceing là cách truyền thống để đi, và vì lý do tốt.
loevborg

Có công cụ nào để xác định giá trị đẹp mặc định cho các ứng dụng cụ thể chạy không? Tốt nhất là một công cụ cho phép bạn so sánh tất cả các cài đặt trước cạnh nhau.
Jonny Asmar

19

Cài đặt cpulimit

sudo apt-get install cpulimit

Nó cung cấp các phương pháp khác nhau để giới hạn việc sử dụng CPU của một quá trình foođể nói, 20%

  • Theo tên quá trình của nó : sudo cpulimit -e foo -l 20.

  • Theo tên đường dẫn tuyệt đối của nó: sudo cpulimit -P /usr/bin/foo -l 20

  • Bởi PID của nó:

    1. Tìm PID của quá trình : pidof foo. (giả sử, nó xuất ra 1881)
    2. sudo cpulimit -p 1881 -l 20

Không tìm thấy quá trình mục tiêu ... Có lẽ vì tôi có một kịch bản để chạy clamscan? tôi làm: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Pitto

@Pitto: Bạn đã nhập sai lệnh, /etc/cron.hourly/virusscankhông phải là một quá trình. Nếu bạn cần hạn chế clamscan, hãy chạy sudo cpulimit -e clamscan -l 15.
Sid

Oh! Đúng! Vì vậy, tôi nên bắt đầu cpulimit khi khởi động trong RC.local, phải không?
Pitto

2
sudokhông yêu cầu quá trình không phải là một quy trình hệ thống. Cũng như một ghi chú
Anwar

Đây sẽ là một giải pháp thực sự gọn gàng nếu được sử dụng theo chương trình! Nó có hỗ trợ tìm kiếm dựa trên mẫu không?
Jonny Asmar

4

Đây sẽ là một nhận xét về câu trả lời của Clausi (mà tôi tin là "đúng" nhất theo quan điểm quản trị hệ thống, theo ý kiến ​​của tôi) nhưng nó đã nở rộ thành một cái gì đó quá lớn để phù hợp với hộp bình luận.

  • Clamscan có một lượng công việc cố định để thực hiện việc giới hạn nó ở một tốc độ nhất định có nghĩa là nó sẽ mất nhiều thời gian hơn. Nó sẽ giữ CPU trong sự tranh chấp lâu hơn.

  • Cho phép nó chạy nhanh nhất có thể có nghĩa là bạn sử dụng CPU của mình hết mức. Làm cho nó rất "đẹp" có nghĩa là nó sẽ để các quá trình khác thực hiện công việc của chúng trước đó. Điều này có nghĩa là nếu có nhiều quá trình bận rộn khác, vâng, sẽ mất nhiều thời gian để thực hiện công việc riêng của mình nhưng nếu không có gì ở đó, nó sẽ chỉ vượt qua khối lượng công việc của nó.


3

Nếu bạn đang chạy clamd với systemd, bạn có thể sử dụng CPUQuotatùy chọn.

Chỉnh sửa /lib/systemd/system/clamav-daemon.serviceđể bao gồm dòng này trong [Service]phần:

CPUQuota=20%

Sau đó khởi động lại dịch vụ

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon

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.