Có cách nào để đặt mức độ ưu tiên của một quy trình trong Mac OS X không?


48

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:


48

Từ dòng lệnh ( Terminal.apphoặc bất cứ điều gì) sử dụng nicerenice, giống như trên các unix khác.

Sử dụng nicekhi 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ừ renicetrang 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à pidbit. Đó 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 -otrong 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, nicerenicelà đườ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ó.


Và làm thế nào tôi có thể làm với một quá trình đã chạy? Nó chạy được 2 giờ và tôi không muốn bắt đầu lại và mất 2 giờ xử lý
Daniel Cukier

15

Bạn có thể sử dụng lệnh:

renice -n # PID

Ở đâu:

  • # là một số phải lớn hơn 0 (nếu không, bạn sẽ chuyển quy trình của mình sang mức ưu tiên cao hơn)
  • PID là ID tiến trình bạn có thể xem bằng cách nhập topvà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.


6
renice 20 $(pgrep ImageOptim)

Hoặc sử dụng tên chương trình của bạn thay vì ImageOptim


1
Ngoài ra, việc sử dụng renice -20mang 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.
nyxee

5

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.


3
BeNicer và Process Wizard đều là các ứng dụng PowerPC và sẽ không chạy trên các phiên bản OSX gần đây
arolson101

Freezer có còn hoạt động trên các bản phát hành HĐH mới hơn không?
ylluminate

vui lòng kiểm tra câu trả lời của tôi để biết phương án khác, AppPolice
JacopKane

2
  • 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 nicehoặc renicetrê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 nicegiá trị của chúng bằng F7và các F8phím tắt. (Xin lưu ý rằng các nicegiá 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ó:

  • Cài đặt homebrew nếu bạn chưa có.
  • Chạy lệnh này brew install htoptrong Terminal
  • Bây giờ bạn có thể làm htopđể 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.

0

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.

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.