Mengapa Finder berjalan pada prioritas proses yang rendah?

13

Saya sedikit bingung tentang ini.
Saya menjalankan impor besar di aperture, dan itu menyebabkan sistem saya melambat hingga merangkak sepenuhnya, pada dasarnya membuatnya tidak dapat digunakan untuk apa pun, bahkan menjelajahi web. Karena ini tampaknya agak tidak wajar, saya menghabiskan sedikit waktu untuk melihat-lihat.

Menjalankan ps -Almenunjukkan bahwa, ternyata secara default, Dock, Finder, dan SystemUIServersemua tampaknya dijalankan pada prioritas yang jauh lebih rendah aplikasi kemudian userland. Sementara aplikasi pengguna biasanya memiliki prioritas 33, Dock, Finder, dll memiliki prioritas 53.

Hasil akhirnya, adalah tugas intensif APAPUN prosesor sepenuhnya clobbers UI, dan membuat sistem tidak dapat digunakan sampai selesai.

Bagaimanapun, menggunakan renice -20 -p <prid>menabrak mereka dengan prioritas yang sama dengan sisa UI userland, dan menghasilkan tidak harus menunggu 1-3 detik (!) Untuk UI untuk menanggapi sesuatu yang sederhana seperti klik mouse.

Thad berkata, saya punya dua pertanyaan:
Apakah ada alasan mengapa saya tidak boleh mengubah utas uterus seperti ini?
Apakah ada cara untuk membuat perubahan prioritas tetap, misalnya jadi tetap seperti itu setelah reboot.

Nama palsu
sumber
9
Saya biasanya menemukan bahwa itu adalah disk i / o, bukan beban cpu, yang menyebabkan sistem saya merangkak. Finder dan aplikasi lain yang Anda sebutkan mungkin menunggu baca / tulis ketika tampaknya tidak merespons. Saya tidak benar-benar memiliki solusi untuk ini (selain mendapatkan disk cepat seperti SSD), jadi saya akan memposting ini sebagai komentar alih-alih jawaban.
Kyle Cronin
5
Saya akan berpikir begitu juga. Namun, mengubah prioritas utas tidak memengaruhi perilaku UI, yang membuat saya berpikir bahwa prioritas utas juga memengaruhi penanganan antrian IO, atau memang terbatas pada CPU.
Nama Palsu
1
Sebagai contoh, dengan prioritas dok dibiarkan sebagai stok, dibutuhkan 5-10 detik untuk bereaksi terhadap mouse yang dipindahkan. Dengan menabrak secara manual hingga 33 sama seperti yang lainnya, ia langsung bereaksi (meskipun ada sedikit kebodohan).
Nama Palsu
3
Pembaruan: Perintah yang bagus memengaruhi penanganan antrian CPU dan IO: insanelymac.com/forum/lofiversion/index.php/t164156.html
Nama Palsu
2
Masalahnya bukan keterbatasan ruang memori / disk. Saya menjalankan proses yang dengan sengaja mengambil semua sumber daya yang mereka bisa. Penjadwal mutitasking yang tepat harus membiarkan sistem tetap responsif sempurna (atau setidaknya hanya menyebabkan kinerja kecil) meskipun ini, asalkan prioritas diatur dengan benar. Namun, untuk beberapa alasan gila, aspek terpenting dari UI diatur ke prioritas serendah mungkin, dan karenanya seluruh sistem pada dasarnya dianggap tidak dapat digunakan.
Nama Palsu

Jawaban:

1

Saya tidak yakin siapa pun yang kekurangan pengembang Apple sendiri dapat menjawab pertanyaan ini, rahasia batin Finder adalah domain mereka. Jika menurut Anda ada beberapa masalah kelambatan yang terlihat dengan UI Anda mungkin ingin mengirimkan laporan bug ke Apple tentang hal itu.

Dilihat dari suara hal-hal (proses sengaja mengambil semua sumber daya) ini adalah sedikit kasus tepi untuk manajemen memori. Saya belum pernah melihat sistem berkinerja terbaik tanpa sumber daya sekitar 10-20% gratis, sebagai bantuan buffering.

Hanya ingin tahu, proses apa yang sedang Anda jalankan?

Tim
sumber
Python, terutama. Melakukan perhitungan rekursif yang berat.
Nama Palsu
Juga, pemrosesan gambar batch
Nama Palsu
Itu terdengar lebih seperti masalah penggunaan RAM daripada masalah CPU. Saya punya sesuatu seperti git menggunakan banyak CPU tanpa tertinggal UI, tetapi ketika sesuatu mulai memakan semua RAM maka UI mengambil hit besar. Seperti apa penggunaan RAM Anda selama proses ini?
Tim
1

"Saya menjalankan impor besar di aperture, dan itu menyebabkan sistem saya melambat hingga merangkak sepenuhnya"

Maka Aperture (mungkin) adalah program yang Anda inginkan renice, bukan yang lain. Proses yang Anda sebutkan disetel relatif terhadap aplikasi pengguna rata-rata, sehingga aplikasi pengguna mendapatkan prioritas lebih tinggi dan tetap responsif, karena itulah yang paling sering digunakan pengguna.

Kasing Anda adalah kasus yang kurang umum, di mana aplikasi melakukan tugas jangka panjang yang intensif dan pengguna ingin melakukan sesuatu yang lain pada waktu yang bersamaan. Secara default, aplikasi penggunalah yang mendapat prioritas sehingga tugas intensif ini mendapatkan lebih banyak sumber daya dan menyelesaikan lebih cepat.

Untuk setiap pengguna yang mengeluh bahwa aplikasi lain tidak cukup responsif, ada pengguna lain yang mengeluh bahwa aplikasi aktif tidak berjalan cukup cepat.

Jika Anda menjalankan tugas yang panjang dan intensif sumber daya dan Anda tahu Anda ingin memiliki prioritas yang lebih rendah sehingga Anda dapat menggunakan proses lain saat tugas selesai — dan Anda tidak keberatan jika tugas yang intensif memakan waktu lebih lama — Anda harus menurunkan prioritas proses menjalankan tugas intensif.

Adapun pertanyaan kedua Anda, ada beberapa solusi yang memungkinkan untuk menjadikannya renicelebih otomatis. Misalnya, Anda bisa membuat applet skrip yang menjalankan Aperture dengan prioritas lebih rendah dan menggunakannya untuk memulai Aperture. Atau Anda dapat memulai Aperture melalui skrip shell yang disimpan dalam file * .command (namun, itu akan membuka Terminal dan menjalankan perintah di jendela terminal, yang mungkin bukan yang Anda inginkan). Masing-masing sedikit terlibat. Jika Anda ingin contoh, saya dapat melihat tentang memberikannya nanti.

Chris Page
sumber
Tugas latar belakang, menurut definisi , harus pada prioritas yang lebih rendah daripada tugas latar depan. The paling penting tugas latar di seluruh sistem adalah GUI, yang sebagian besar proses Finder. Saya mungkin dapat menambal utas berdasarkan proses demi proses renicedalam berbagai hal, tetapi masalah sebenarnya adalah prioritas pencari.
Nama Palsu
Misalnya, di Windows 7, yang memiliki salah satu GUI paling responsif, Window-Manager secara otomatis berjalan dengan prioritas "Tinggi". Sekarang, ini berarti bahwa perilaku yang keliru dari proses ini akan menyebabkan sistem ketinggalan, tetapi itu juga berarti bahwa perilaku yang salah di tempat lain tidak akan terjadi . Saya punya aplikasi crash menggunakan 100% dari setiap inti CPU, dan UI pada windows masih tetap sangat responsif.
Nama Palsu
1
@Fake Name: Finder tidak menangani aspek UI apa pun selain jendela sendiri (folder dan ikon desktop). (Dimungkinkan untuk keluar dari Finder; itu benar-benar hilang, dan yang lainnya masih berfungsi.) SystemUIServer menangani bilah menu di sisi kanan dan overlay "bezel" (volume / kecerahan, dll.) Saja. Perenderan jendela dan acara ditangani sepenuhnya oleh proses WindowServer.
Kevin Reid
@Fake Name, sebagai titik klarifikasi: reniceberoperasi pada proses, bukan utas.
Chris Page
1

Saya mengajukan pertanyaan serupa - dulu, di ServerFault - meskipun tidak secara khusus berfokus pada Finder (meskipun saya TIDAK menemukan Finder menjadi sangat lambat, juga). Bagaimana cara "mengubah nama" proses secara permanen pada Mac OS X (atau iOS, dll)? Tidak banyak info yang diperoleh di sana - tentang cara yang baik untuk melakukan ini ... atau mengapa itu seperti itu ..

Saya masih sering memikirkan hal ini, dan sebenarnya ada beberapa cara untuk merenung dengan "dasar-dasar" jika Anda berani. Seperti yang disebutkan sebelumnya, Anda dapat melakukan berbagai shell chicanery .. tetapi tempat yang baik untuk kesalahan seperti itu adalah berbagai /etc/rc*rutinitas boot .. yang sudah ada di sana .. mengatur semua jenis parameter sistem sewenang-wenang (yang ditentukan apel) untuk Anda. baik mengeditnya, atau mencari cara menambahkan rutinitas Anda sendiri ke proses boot.

juga, jika Anda benar-benar ingin membuat kepala Anda meledak ..

sudo sysctl list dan itu kunci kotak pandora, alias /etc/sysctl.conf

alex grey
sumber