Apakah ada cara untuk mengatur prioritas suatu proses di Mac OS X?

48

Saya memiliki proses latar belakang yang berjalan pada 100% CPU pada Mac OS X. Semua aplikasi lain sangat lambat karenanya.

Saya ingin mengatur proses ini untuk mengambil tidak lebih dari 50% sehingga aplikasi saya dapat berjalan lebih baik. Bagaimana saya bisa melakukan ini?

Daniel Cukier
sumber

Jawaban:

48

Dari baris perintah ( Terminal.appatau apa pun) gunakan nicedan renice, sama seperti pada unix lainnya.

Gunakan nicesaat meluncurkan proses:

nice -n <priority> <command> <arguments to command>

Prioritas default adalah nol, nilai positif "lebih baik" (yang merupakan prioritas lebih rendah) dan nilai negatif "kurang baik" (prioritas lebih tinggi). Sepertinya Mac OS beroperasi dari +10 hingga -10.

Gunakan reniceuntuk mengubah prioritas proses yang sudah berjalan (dari renicehalaman manual pada 10.5):

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

Bagian yang Anda minati di sini adalah pidbit. Itu adalah id proses untuk pekerjaan itu dan Anda dapat menemukannya menggunakan ps -u <your username>dan mencari nama proses, tetapi saya lebih suka top -odalam hal ini, karena proses yang Anda minati akan berada di dekat bagian atas.

Catatan: Tanpa hak superuser, Anda tidak akan pernah dapat meningkatkan prioritas proses. Untuk pengguna normal, nicedan renicemerupakan jalan satu arah. Dan perubahan kecil dalam prioritas dapat memiliki efek besar pada waktu berjalan. Jadi mudahkan ini sampai Anda memahaminya.

dmckee
sumber
Dan bagaimana saya bisa melakukan dengan proses yang sudah berjalan? Ini berjalan selama 2 jam dan saya tidak ingin memulainya lagi dan kehilangan 2 jam pemrosesan
Daniel Cukier
15

Anda dapat menggunakan perintah:

renice -n # PID

Dimana:

  • # adalah angka yang harus lebih besar dari 0 (jika tidak, Anda akan memindahkan proses Anda ke prioritas yang lebih tinggi)
  • PID adalah ID proses yang dapat Anda lihat dengan mengetik toppada aplikasi terminal (utilities / terminal.app)

Jika ini adalah proses sistem atau proses pengguna lain, Anda harus mengetik:

sudo renice -n 10 PID

Ini akan menanyakan kata sandi Anda (jika Anda sudoer). Adapun nomor saya akan merekomendasikan 10 atau 19 (prioritas lebih rendah).

Perhatikan bahwa ini akan mengubah prioritas bukan penggunaan CPU. Jika Anda tidak menjalankan proses lain yang membutuhkan CPU atau Anda memiliki lebih dari satu CPU pada Mac Anda (Core 2 Quad Core) prosesnya mungkin masih menggunakan 100% CPU.

pietro Sormanni
sumber
6
renice 20 $(pgrep ImageOptim)

Atau gunakan nama program Anda alih-alih ImageOptim

William Entriken
sumber
1
Selain itu, menggunakan renice -20memberi proses prioritas tertinggi yang mungkin, misalnya ketika menyusun program besar seperti oktaf. renice 20memberikan proses prioritas terendah.
nyxee
5

Ada juga sejumlah utilitas GUI, seperti BeNicer dan Process Wizard gratis (favorit saya sebelumnya), dan Freezer versi $ 1,99 , yang merupakan favorit baru saya. Ini semua berfungsi menjalankan aplikasi.

beiju
sumber
3
BeNicer dan Process Wizard keduanya adalah aplikasi PowerPC dan tidak akan berjalan pada OSX versi terbaru
arolson101
Apakah Freezer masih bekerja pada rilis OS yang lebih baru?
ylluminate
silakan periksa jawaban saya untuk alternatif lain, AppPolice
JacopKane
2
  • Jika proses Anda adalah aplikasi atau utilitas pembantu aplikasi daripada proses sistem dan Anda tidak ingin melakukan niceatau renicepada setiap boot sistem, Anda bisa mencobanya di AppPolice . Ini open source dan gratis. Anda dapat mengunduhnya di sini .

  • Alternatif lain akan menjadi task manager baris perintah yang sangat bagus yang disebut GUI htop. Anda dapat melihat semua proses dan menyetel nicenilainya dengan F7dan dan F8pintasan. (Harap dicatat bahwa nicenilai negatif lebih diprioritaskan dan berlawanan dengan nilai positif)

Untuk menginstalnya:

  • Instal homebrew jika Anda belum memilikinya.
  • Jalankan perintah ini brew install htopdi Terminal
  • Sekarang Anda dapat melakukan htopuntuk melihat dan mengelola proses di Terminal atau sudo htopuntuk mencakup semua sistem.
JacopKane
sumber
0

Anda dapat mengatur nilai bagus (prioritas) untuk daemon secara permanen menggunakan variabel dalam file PLIST untuk aplikasi. Untuk mengetahui bagaimana ketik MAN plist di jendela terminal.

SINERGIST
sumber