Tôi có một quá trình nền chạy ở CPU 100% trên Mac OS X. Tất cả các ứng dụng khác đều rất chậm vì nó.
Tôi muốn đặt quy trình này mất không quá 50% để các ứng dụng của tôi có thể chạy tốt hơn. Tôi có thể làm cái này như thế nào?
Tôi có một quá trình nền chạy ở CPU 100% trên Mac OS X. Tất cả các ứng dụng khác đều rất chậm vì nó.
Tôi muốn đặt quy trình này mất không quá 50% để các ứng dụng của tôi có thể chạy tốt hơn. Tôi có thể làm cái này như thế nào?
Câu trả lời:
Từ dòng lệnh ( Terminal.app
hoặc bất cứ điều gì) sử dụng nice
và renice
, giống như trên các unix khác.
Sử dụng nice
khi khởi chạy một quy trình:
nice -n <priority> <command> <arguments to command>
Ưu tiên mặc định là 0, giá trị dương là "đẹp hơn" (đó là mức ưu tiên thấp hơn) và giá trị âm là "kém đẹp" (mức ưu tiên cao hơn). Có vẻ như Mac OS chạy từ +10 đến -10.
Sử dụng renice
để thay đổi mức độ ưu tiên của một quy trình đã chạy (từ renice
trang man trên 10.5):
renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
Phần bạn quan tâm ở đây là pid
bit. Đó là id quy trình cho công việc và bạn có thể tìm thấy nó bằng cách sử dụng ps -u <your username>
và tìm kiếm tên quy trình, nhưng tôi thích top -o
trong trường hợp này, vì quy trình bạn quan tâm sẽ ở gần đầu.
Lưu ý: Không có đặc quyền siêu người dùng, bạn không bao giờ có thể tăng mức độ ưu tiên của quy trình. Đối với người dùng bình thường, nice
và renice
là đường một chiều. Và những thay đổi nhỏ trong mức độ ưu tiên có thể có tác động lớn đến thời gian chạy. Vì vậy, đi dễ dàng về điều này cho đến khi bạn hiểu nó.
Bạn có thể sử dụng lệnh:
renice -n # PID
Ở đâu:
top
vào ứng dụng đầu cuối (tiện ích / terminal.app)Nếu đó là một quy trình hệ thống hoặc quy trình người dùng khác, bạn nên nhập:
sudo renice -n 10 PID
Nó sẽ hỏi bạn mật khẩu của bạn (nếu bạn là sudoer). Đối với số tôi muốn giới thiệu 10 hoặc 19 (thậm chí mức độ ưu tiên thấp hơn).
Lưu ý rằng điều này sẽ thay đổi mức độ ưu tiên không phải là việc sử dụng CPU. Nếu bạn không chạy các quy trình khác yêu cầu CPU hoặc bạn có nhiều CPU trên máy Mac (Core 2 Quad Core), quy trình vẫn có thể sử dụng 100% CPU.
renice 20 $(pgrep ImageOptim)
Hoặc sử dụng tên chương trình của bạn thay vì ImageOptim
renice -20
mang lại cho quá trình mức độ ưu tiên cao nhất có thể, ví dụ như khi biên dịch một chương trình lớn như quãng tám. renice 20
đưa ra một quá trình ưu tiên thấp nhất.
Ngoài ra còn có một số tiện ích GUI, như BeNicer và Process Wizard miễn phí (yêu thích trước đây của tôi) và phiên bản Freezer $ 1.99 , đây là sản phẩm yêu thích mới của tôi. Tất cả đều hoạt động trên các ứng dụng đang chạy.
Nếu quy trình của bạn là một tiện ích trợ giúp ứng dụng hoặc ứng dụng chứ không phải là quy trình hệ thống và bạn không muốn làm nice
hoặc renice
trên mỗi lần khởi động hệ thống, bạn có thể cung cấp cho ứng dụng đó một ứng dụng cho AppPolice . Đó là nguồn mở và miễn phí. Bạn có thể tải nó ở đây .
Một lựa chọn khác sẽ là GUI quản lý tác vụ dòng lệnh rất đẹp được gọi htop
. Bạn có thể xem tất cả các quy trình và điều chỉnh nice
giá trị của chúng bằng F7
và các F8
phím tắt.
(Xin lưu ý rằng các nice
giá trị âm được ưu tiên hơn và ngược lại với các giá trị dương)
Để cài đặt nó:
brew install htop
trong Terminalhtop
để xem và quản lý các quy trình trong Terminal hoặc sudo htop
để bao quát tất cả hệ thống.Bạn có thể đặt giá trị đẹp (mức độ ưu tiên) cho daemon vĩnh viễn bằng cách sử dụng biến trong tệp PLIST cho ứng dụng. Để tìm hiểu làm thế nào gõ MAN trong một cửa sổ đầu cuối.