Apa yang dimaksud dengan Prioritas dan Afinitas Windows dan apa yang disediakan advanjunya?

9

Apa sebenarnya Prioritas dan Afinitas (ditemukan dalam Task Manager) dan apa yang mereka gunakan untuk:

Ditemukan di dalam Task Manager

Dalam situasi apa harus / dapatkah mereka digunakan dan keuntungan apa yang ditemukan saat menyesuaikan pengaturan ini.

James Mertz
sumber

Jawaban:

3

Mengatur afinitas memang melakukan sesuatu, tetapi Anda tidak akan pernah ingin menggunakannya.

Mengatur afinitas CPU memaksa Windows untuk hanya menggunakan CPU (atau inti) yang dipilih. Jika Anda mengatur afinitas ke CPU tunggal, Windows hanya akan menjalankan aplikasi itu pada CPU itu, tidak pernah pada yang lain.

Windows secara otomatis menempatkan aplikasi yang berjalan pada prosesor yang paling tidak sibuk, jadi membatasi ke satu CPU tidak membiarkan Windows melakukan tugasnya. Bahkan jika CPU / core 1 sibuk menjalankan aplikasi lain, Windows tidak akan dapat menjalankan aplikasi dengan afinitas yang diatur pada CPU / Core 2.

Sungguh satu-satunya alasan Anda ingin melakukan itu adalah untuk menjalankan aplikasi lama yang tidak berfungsi dengan benar ketika berjalan pada sistem multi-CPU / Core.

shf301
sumber
5
> Anda tidak akan pernah ingin menggunakannya. Tidak benar. Jika Anda memiliki aplikasi single-threaded, maka ia tidak dapat menggunakan utas / inti CPU sepenuhnya dan tidak ada yang dapat dilakukan Windows untuk memaksanya. Jika Anda memiliki dua aplikasi single-threaded, Anda dapat memberitahu Windows untuk masing-masing menggunakan thread / core terpisah sehingga daripada memiliki total penggunaan CPU berkisar 50-75%, Anda dapat memaksimalkannya hingga 100% (setiap inti digunakan secara maksimal oleh satu program). Jadi ya, Anda memang bisa menggunakan pengaturan, tetapi ini adalah skenario khusus yang kebanyakan orang tidak akan tahu / sadari / butuhkan.
Synetech
2
Jika Anda memiliki dua aplikasi ulir tunggal, Windows akan menjalankan masing-masingnya pada utas / inti yang berbeda dan Anda akan mendapatkan utilisasi CPU 100% tanpa mengatur afinitas. Untuk menguji saya hanya menjalankan 4 instance dari program berulir tunggal pada mesin 4 core saya dan mendapat penggunaan CPU 100%. Windows cukup pintar untuk menjadwalkan CPU secara efisien.
shf301
Saya kira itu tergantung pada sistem dan / atau versi Windows. Saya telah melihatnya (XP) melayang-layang kedua core di 50-75% di mana kedua proses ditetapkan untuk kedua core dan secara manual pengaturan mereka memaksimalkan CPU.
Synetech
@ Sinetech: Tampaknya hampir mustahil. Itu pasti telah memindahkan dua proses dari inti ke inti, selalu keduanya pada saat yang sama.
David Schwartz
Kasus penggunaan lain yang valid untuk ini: Ada aplikasi yang dapat memanfaatkan semua CPU yang tersedia dan dapat mencegah program lain berjalan dengan baik dan / atau membuat OS merespons sangat lambat terhadap input pengguna. Dalam hal ini, seseorang mungkin memutuskan untuk membatasi aplikasi semacam itu hanya untuk beberapa CPU. Sebagai pengembang, saya sering menggunakan fitur ini ketika membuat profil aplikasi CPU-intensif saya, karena tindakan pembuatan profil itu sendiri membutuhkan CPU.
Eyal Roth
2

Mengatur afinitas memberi tahu proses itu tentang prosesor yang dapat dijalankan.

Meskipun sangat berguna untuk beberapa kasus niche, rata-rata pengguna mungkin tidak boleh mengacaukannya.

Sebagai contoh jika suatu proses dibiarkan intinya sendiri untuk dijalankan, ia dapat berjalan dalam waktu dekat (real-time) tanpa ke-70 utilitas windows yang secara konstan mengganggu dan menukar-menukar prosesor untuk waktu mereka sendiri. Aplikasi real-time adalah sesuatu yang tidak pernah bisa dilakukan oleh windows sebelum sistem multi-prosesor / multi-inti menghantam karena OS akan terus-menerus mengganggu / mengalihkan tugas aplikasi untuk keperluannya sendiri. Itu sekarang sebagian besar dapat diatasi dengan mengisolasi aplikasi real-time satu prosesor sambil mencegah semua aplikasi lain dalam sistem dari menggunakan prosesor itu. Ini adalah subjek yang sangat khusus tetapi sistem seperti simulator penerbangan (nyata), otomatisasi pabrik, dan sistem umpan balik kontrol bergantung pada arsitektur waktu nyata untuk bekerja.

Aplikasi intensif prosesor (seperti VM) dapat diisolasi ke inti mereka sendiri sehingga Anda dapat menggunakannya tanpa merangkak ke seluruh sistem Anda. Secara teori, hypervisor yang berjalan pada prosesor yang mendukung interaksi hypervisor bare-metal dapat mencapai kinerja prosesor yang sama dengan OS independen yang berjalan sendiri (minus prosesor yang diperlukan untuk menjalankan OS host). Tentu saja, dalam prakteknya bahkan VM yang berjalan pada core / prosesor yang terisolasi sendiri masih perlu menerima sejumlah kecil overhead dari host OS host.

Untuk aplikasi yang menangani fluks data dalam jumlah besar, mengisolasi aplikasi ke prosesornya sendiri (dan berpotensi masih menggunakan banyak core) akan mengurangi swapping cache.

Aplikasi lama yang rusak ketika tersebar di beberapa prosesor dapat secara efektif dibatasi pada satu inti / prosesor untuk memperbaiki masalah.

Jika Anda melakukan pengukuran kinerja pada aplikasi tertentu, hampir tidak mungkin untuk mendapatkan hasil yang konsisten di berbagai sistem kecuali Anda dapat mengisolasi proses karena, jika tidak, Anda tidak memiliki kendali atas berapa lama OS memberikan aplikasi Anda. Kebanyakan orang setuju bahwa mengukur kinerja runtime tidak memberikan hasil yang baik tetapi orang-orang itu tidak pernah menganggap bahwa intervensi OS (yang membuat hasil sangat tidak konsisten) dapat dibatasi dengan menggunakan afinitas.

Ada banyak kasus di mana afinitas sangat penting tetapi, jika Anda tidak tahu apa itu, Anda mungkin tidak akan membutuhkannya.

Evan Plaice
sumber
Hal yang membuat afinitas jauh lebih tidak berguna daripada yang dipikirkan banyak orang adalah ini: mengatur afinitas proses Anda ke beberapa subset dari CPU yang tersedia. tidak mematikan hal lain dari CPU tersebut. Untuk melakukan itu Anda harus pergi ke semua proses lain dalam sistem untuk menjaga mereka keluar dari CPU yang ingin Anda miliki untuk diri sendiri. Itu hampir tidak pernah praktis.
Jamie Hanrahan
Mungkin menggunakan perangkat lunak pihak ke - 3 . Mengapa MS tidak memasukkan fungsi ini secara default di luar saya.
Evan Plaice
Karena, seperti yang saya tulis, itu tidak terlalu berguna. Dan sangat rentan disalahgunakan. Kenyataannya, hasil yang biasa dari menjadi terlalu "kreatif" dengan afinitas adalah bahwa segala sesuatu tidak berjalan ketika sebaliknya. Biasanya lebih baik menjalankan utas selain dari apa yang Anda pikirkan adalah CPU yang disukai daripada tidak sama sekali (setelah Anda dengan bodohnya mengatur afinitas untuk menolak akses ke CPU yang tidak digunakan). Mekanisme default "prosesor ideal" Windows dan "prosesor sebelumnya" mencapai koherensi cache yang baik tanpa instrumen tumpul dari topeng afinitas.
Jamie Hanrahan
2

Ini adalah fitur yang sangat berguna dalam skenario tertentu. Katakanlah Anda memiliki aplikasi multi-utas yang cenderung menganggur atau secara agresif meraih 100% setiap CPU selama beberapa menit, melakukan pencarian, pembuatan, dll. Sebut saja aplikasi ini "eclipse."

Katakan juga saat Anda mengerjakan aplikasi ini, Anda memiliki banyak aplikasi lain yang memiliki persyaratan CPU sederhana, tetapi pada dasarnya adalah aplikasi waktu nyata. Misalnya, saat Anda menggunakan Eclipse dan secara acak memulai membangun atau melakukan kompilasi gwt, Anda juga menggunakan komputer Anda untuk melakukan streaming musik atau melakukan penelitian di jendela browser (misalnya, meneliti penyebab masalah build) . Tentu, Anda tidak akan mati jika musik Anda melompat atau browser Anda berhenti merespons, tetapi itu menjengkelkan.

Apa yang memungkinkan Anda melakukan afinitas adalah membatasi aplikasi makan cpu Anda hingga 7/8 core sehingga semua orang dijamin akses ke cpu yang relatif tidak digunakan dan Anda tidak selalu harus berurusan dengan kegagapan dan gangguan terhadap kegunaan segala sesuatu yang lain di komputer Anda sementara gerhana sedang menghilang.

Jim W
sumber
Anda akan jauh lebih baik dalam hal ini hanya mengatur proses babi CPU Anda ke prioritas rendah.
Jamie Hanrahan
1

Prioritas lebih tinggi berarti pemrosesan tugas akan diuntungkan daripada tugas-tugas prioritas rendah. Jika Anda menjalankan aplikasi yang Anda perlukan untuk menjadi sangat responsif, dan banyak proses non-interaktif lainnya misalnya, prioritas dapat memastikan pengalaman yang lebih baik dengan proses prioritas tinggi Anda.

Misalnya: sejak Windows Vista, Windows Media Player secara otomatis mendapatkan prioritas yang lebih tinggi untuk memastikan pemutaran file media yang lancar dan berkelanjutan, dengan hanya sekitar 20% waktu CPU yang tersedia untuk proses lain secara default. Ini hanyalah contoh untuk membantu Anda memahami prioritas apa yang dilakukan. (Anda dapat membaca lebih lanjut tentang prioritas Media Player di Vista di Technet .)

Afinitas lunak atau keras dapat meningkatkan kecepatan pemrosesan karena cache CPU masih dapat memiliki sisa-sisa proses di dalamnya ketika suatu proses sebelumnya terganggu dan kemudian dilanjutkan kembali di lain waktu.

David M.
sumber
Terima kasih yang manis Jadi apa panduan yang baik untuk menggunakan afinitas?
James Mertz
Panduan yang baik untuk menggunakan afinitas: "Jangan".
Jamie Hanrahan
"Hanya 20% waktu CPU yang tersedia untuk proses lain" bukan deskripsi yang akurat. Implementasi yang sebenarnya adalah bahwa utas yang memilih ke penjadwal kelas multimedia diizinkan untuk berjalan hingga 80% dari setiap interval penjadwalan di kelas prioritas waktu-nyata. Itu tidak harus menggunakan sebanyak itu, dan jika tidak. lebih dari 20% akan tersedia untuk utas lainnya.
Jamie Hanrahan
1

Contoh sempurna dari ini adalah game komputer lama (atau perangkat lunak lain), terutama ketika game 32-bit (aplikasi) ditiru pada komputer 64-bit modern. Dengan mengatur afinitas untuk game lama yang membatasi mereka hanya pada empat core, crash bisa SERING dihindari untuk memungkinkan game stubburn untuk memulai. Beberapa mesin render yang digunakan oleh game LAMA, editor video, dan perangkat lunak grafis yang dipercepat perangkat keras, atau perangkat lunak CAD, tidak memahami lebih dari empat core CPU dan akan macet saat diluncurkan.

Saya tidak membuat akun hanya untuk memposting ini, untuk mencari saya google 'kieseyhow'

Kieseyhow
sumber