Tôi đang sử dụng bzip2 để nén một tập tin, quá trình này mất hơn 100% cpu. Có cách nào để chạy bzip2 với mức tối thiểu CPU.
Tôi đang sử dụng bzip2 để nén một tập tin, quá trình này mất hơn 100% cpu. Có cách nào để chạy bzip2 với mức tối thiểu CPU.
Câu trả lời:
Là quá trình này can thiệp vào các quy trình khác trên hệ thống của bạn? Tại sao bạn muốn giới hạn CPU bzip2 sử dụng?
Bạn có thể sử dụng nice
lệnh để thay đổi mức độ ưu tiên của quy trình:
$ nice -n 19 bzip2 <file>
Ngoài ra, bạn có thể thử giảm bzip2
mức độ nén:
$ bzip2 -1 <file>
nice
lệnh thực hiện là thay đổi mức ưu tiên, vì vậy nếu không có các tác vụ chuyên sâu về CPU khác xảy ra trên máy chủ thì có, bzip2
sẽ sẵn sàng nhận tất cả CPU của bạn và thực sự bạn không thể làm gì về điều đó.
nice 19
, thì nó sẽ được ưu tiên ít hơn nhiều trong trình lập lịch của kernel so với các tiến trình khác. Tuy nhiên, bạn vẫn cần phải lo lắng về những thứ như IO tranh chấp, vì nén / giải nén cũng khá chuyên sâu IO.
Ngoài câu trả lời @EEAA, nếu bạn muốn ưu tiên tối đa cho quy trình bzip, để khi các quy trình khác bị ảnh hưởng ở mức tối thiểu, bạn nên sử dụng ionice
thêm. Lưu ý, điều đó ionice
chỉ hữu ích khi sử dụng bộ lập CFQ
lịch IO (mặc định trên Kernel, nhưng điều này có thể đã được điều chỉnh bởi cài đặt của bạn). ionice
sẽ không có hiệu lực AFAIK nếu bạn đang sử dụng bộ lập lịch deadline
hoặc noop
IO.
Để xác minh trình lập lịch IO nào bạn đang sử dụng:
cat /sys/block/<DEVICE>/queue/scheduler
<DEVICE>
thiết bị đĩa cứng của bạn ở đâu , ví dụsda
Hiện đang sử dụng ionice
, bạn muốn đặt mức ưu tiên IO thấp nhất là lớp 3. Và bạn có thể kết hợp nó với nice
nhau:
$ nice -n 19 ionice -c3 bzip2 <file>
Như Tom và EEAA đã giải thích, điều này là đủ tốt. Nhân sẽ đảm bảo rằng bzip có thể chạy nhanh nhất có thể khi không có quá trình nào khác cần CPU hoặc IO. Nhưng nó sẽ ưu tiên cho các quy trình khác nếu họ cần. Đây là sự lựa chọn được đề nghị.
Bây giờ bạn vẫn có thể sử dụng "giới hạn CPU" trên bzip. Đó không phải là lựa chọn của tôi, nhưng nếu bạn muốn thử nghiệm hoặc thích nó hơn, bạn nên sử dụng cpulimit
. Tuy nhiên, nó không thường được đóng gói hoặc cài đặt Linux mặc định. Vì vậy, bạn sẽ phải cài đặt nó. NixCraft có một tài liệu tốt về cách cài đặt và sử dụng cpulimit
.
Trang web chính thức là: http://cpulimit.sourceforge.net/