Tetapkan prioritas proses ke Tinggi: Berbahaya?

8

Saya telah membaca bahwa menyetel sesuatu ke waktu nyata adalah tidak boleh, jadi saya tidak akan melakukan itu. Tetapi saya memiliki aplikasi yang saya harus pastikan selalu memiliki prioritas tertinggi pada sistem saya karena sangat penting untuk sisa aplikasi yang saya jalankan. Apakah ada bahaya dalam menetapkan prioritas ke tinggi, yang satu tingkat di bawah realtime?

Juga, bagaimana saya bisa melakukan ini dengan mengubah target pintasan? Apa perintahnya?

eek
sumber
Pengaturan "Above normal" (windows 7) lebih aman. Beberapa diskusi di sini ... stackoverflow.com/questions/1663993/…
Moab
1
Sangat berbahaya. Masalah utama adalah inversi prioritas yang menghasilkan proses dengan prioritas tinggi sebenarnya mendapatkan prioritas yang lebih rendah secara efektif karena dapat diblokir tanpa batas oleh proses prioritas yang lebih rendah .
David Schwartz
Seperti yang disebutkan "Realtime" tidak selalu buruk selama proses Anda berperilaku baik dan hanya berjalan ketika dibutuhkan dan tidur ketika tidak, jika tidak, ia dapat (dan akan) mencegah tugas-tugas lain berjalan sepenuhnya.
Mokubai
2
@ David Schwartz, Cutler mendesain penjadwal Windows untuk menghindari kebuntuan karena inversi prioritas. Dari support.microsoft.com/kb/96418 , "Penjadwal Windows NT memecahkan masalah ini dengan secara acak meningkatkan prioritas utas yang siap dijalankan (dalam hal ini pemegang kunci prioritas rendah). Utas prioritas rendah berjalan cukup lama untuk melepaskan kunci mereka (keluar dari bagian kritis), dan utas berprioritas tinggi mendapatkan kunci kembali.Jika utas berprioritas rendah tidak mendapatkan cukup waktu CPU untuk membebaskan kunci, pertama kali, itu akan mendapatkan kesempatan lain pada putaran penjadwalan berikutnya. "
Nicole Hamilton
@NicoleHamilton Jadi itu sebabnya kadang-kadang suatu program akan membuka beberapa contoh sekaligus jika tidak terbuka pada klik pertama (dan Anda mengklik beberapa kali), karena beban yang tinggi?
Simon Verbeke

Jawaban:

6

Waktu nyata belum tentu "tidak-tidak". Mungkin saja proses kelaparan lainnya kehabisan siklus CPU. Beberapa aplikasi tidak dapat mengatasinya. Ini adalah sesuatu yang harus Anda coba.

Tinggi seharusnya tidak terlalu menjadi masalah. Namun, Anda masih perlu memantau sistem Anda untuk melihat apakah semua aplikasi berperilaku baik.

Berikut adalah cara mengubah proses melalui baris perintah, yang dapat Anda masukkan ke pintasan:

http://support.microsoft.com/kb/191771

Keltari
sumber
1
Pada Windows, hal itu tidak kelaparan proses lain dengan sangat mudah (termasuk Task Manager itu sendiri).
user1686
3
Itu semua tergantung pada sistem Anda. Bergantung pada seberapa intensif CPU memprosesnya, afinitas waktu nyata baik-baik saja. Saya sedang menjalankan proses secara realtime sekarang tanpa masalah. Selain itu, dapat membantu mengatur afinitas ke satu prosesor sambil mengatur prioritas ke waktu nyata.
Keltari
Jika suatu proses diatur ke waktu nyata, apakah itu akan diberikan prioritas mutlak atas semua proses lain pada inti yang sedang berjalan? Saya telah mencoba menemukan cara untuk mendedikasikan salah satu inti saya untuk Dwarf Fortress saat sedang berjalan.
SaintWacko
3

Saya akan mengatakan itu tergantung. Jika Anda hanya memiliki satu core / CPU di komputer Anda, dan ini adalah tugas yang intensif CPU, saya tidak akan mengaturnya menjadi realtime. Tinggi mungkin baik-baik saja, tetapi itu perlu percobaan.

Jika Anda memiliki banyak inti, dan prosesnya adalah utas tunggal: silakan, atur sesuka Anda. Core Anda yang lain akan tetap gratis, bahkan ketika satu core 100% dimuat sepanjang waktu.

Jika Anda memiliki banyak inti dan prosesnya adalah multi-threaded: itu akan tergantung jika semua thread memiliki beban 100%. Beberapa program memiliki utas 'manajer' yang mengirim pekerjaan ke utas lain tetapi tidak melakukan banyak pemrosesan sendiri. Itu akan membuat satu inti hampir bebas dan dengan demikian memungkinkan untuk prioritas tinggi atau waktu nyata.

Program lain akan mencoba mengambil semua core. Dalam hal ini tinggi mungkin baik-baik saja, tetapi perlu bereksperimen.

Bahkan yang lain hanya akan mengambil sejumlah inti dan mungkin tidak menggunakan semua inti yang tersedia. Dalam hal ini prioritas tinggi atau waktu nyata harus baik-baik saja.

Kecuali Anda berada di satu inti, silakan, bereksperimen. Sebagian besar waktu, tidak ada salahnya untuk mengaturnya menjadi tinggi atau bahkan real-time. Anda dapat mengatur afinitas suatu proses (berapa inti yang dapat digunakan) di task manager juga. Dengan cara ini Anda dapat lebih menyeimbangkan beban pada CPU Anda. Ini juga dapat membantu menjaga suhu dan konsumsi daya tetap rendah, dll.

Simon Verbeke
sumber
+1 Poin bagus bahwa aplikasi single-threaded tidak ada masalah pada mesin multi-core, tidak peduli seberapa terikatnya komputasi.
Nicole Hamilton
Namun jangan lupa, bahwa seperti yang diperingatkan, [terutama] proses prioritas tinggi tunggal berulir - meskipun hanya mempengaruhi satu inti - dapat menahan kunci sinkronisasi sistem global untuk jumlah waktu yang tidak normal.
dyasta
1

Apakah ini akan bekerja untuk Anda sepenuhnya tergantung pada apa yang dilakukan aplikasi Anda. Jika itu menggiling melalui perhitungan yang sangat panjang yang tidak perlu menunggu i / o, berharap menjalankan itu dengan prioritas tinggi dapat membuat mesin Anda bertekuk lutut. Tetapi jika masalahnya latensi dan aplikasi Anda hanya perlu bangun sangat cepat sebagai tanggapan atas penyelesaian i / o atau acara serupa, lakukan sedikit proses cepat dan kemudian kembali tidur lagi, itu akan baik-baik saja.

Nicole Hamilton
sumber