Aplikasi ini memungkinkan Anda untuk menetapkan kendala pada proses Windows. Itu menggunakan objek pekerjaan untuk tujuan ini.
Daftar isi
Anda dapat mengunduh binari versi terbaru dari halaman rilis atau menginstalnya dengan cokelat atau winget:
choco install procgov
# or
winget install procgovTidak banyak yang bisa dikatakan di sini :) Ini adalah mode default yang diaktifkan saat Anda meluncurkan Procgov dari prompt perintah untuk meluncurkan proses baru atau melampirkan yang berjalan.
Saat menggunakan Procgov, Anda dapat mengamati bahwa kadang -kadang meluncurkan contoh kedua dari dirinya sendiri (kecuali Anda menggunakan sakelar - -nomonitor). Instance kedua ini adalah monitor pekerjaan dan Anda mungkin mengenalinya dengan sakelar -monitor di baris perintah args. Ini akan tetap hidup sampai proses terakhir di pintu keluar pekerjaan yang dipantau. Harus ada maksimum satu contoh monitor pekerjaan per sesi Windows. Perannya adalah memantau pekerjaan yang dibuat dengan Procgov. Monitor harus keluar tepat setelah penghentian proses terakhir dalam pekerjaan yang dipantau.
Fitur ini dalam fase beta. Harap gunakan dengan hati -hati dan laporkan kesalahan berpengalaman.
Jika Anda menggunakan sakelar -instal ke pengaturan aplikasi bertahan, Procgov akan menyimpan pengaturan di registri dan akan membuat layanan Windows bernama ProcessGubor. Secara default itu akan menggunakan akun sistem dan %ProgramFiles%ProcessGovernor Folder sebagai jalur dasar layanan. Anda dapat mengonfigurasi pengaturan ini dengan menggunakan --slervice-path , --slervice-username , dan sakelar baris perintah kataword . Jika Anda menjalankan perintah instal untuk aplikasi lain, Procgov akan menambahkan data baru ke registri tetapi akan menggunakan kembali layanan yang ada. Layanan harus mengambil konfigurasi yang diperbarui setelah waktu yang singkat.
Layanan ProcessGubor memantau proses awal dan berlaku batas yang telah ditentukan sebelumnya selama pemasangan.
Untuk menghapus instalasi layanan, gunakan sakelar --uninstall . Layanan akan dihapus saat Anda menghapus konfigurasi yang disimpan terakhir. Jika Anda ingin menghapus semua data Procgov yang disimpan, bersama dengan Layanan, gunakan sakelar --uninstall-all .
Anda dapat menetapkan batasan pada proses yang baru dibuat atau pada yang sudah berjalan. Untuk membatasi proses yang sedang berjalan, gunakan sakelar -p |-PID , mis.
procgov.exe --maxmem 40M --pid 1234 Untuk memulai proses baru dengan batas yang diterapkan, lulus saja jalur gambar proses sebagai argumen Procgov, misalnya. procgov64 --maxmem 40M c:temptest.exe . Jika Anda perlu meneruskan parameter apa pun ke proses target , yang terbaik untuk digunakan -- untuk memisahkan parameter PROCGOV dari proses target, misalnya:
procgov.exe -m 100M -- test.exe -arg1 -arg2=val2 arg3Anda dapat menetapkan beberapa proses ke objek pekerjaan yang sama. Saat Anda menggunakan parameter -p beberapa kali dengan ID proses yang berbeda, Procgov akan menerapkan batas yang sama untuk semua proses, misalnya:
procgov.exe --maxmem 100M -p 1234 -p 1235 -p 1236Jika salah satu proses sudah ditugaskan ke objek pekerjaan Procgov, orang lain juga akan ditugaskan untuk itu.
Dimungkinkan juga untuk memperbarui setelah menetapkan batasan . Namun, ada satu persyaratan: Proses tidak dapat ditugaskan untuk pekerjaan Procgov yang berbeda (sehingga mereka harus berada dalam pekerjaan yang sama atau tidak ditugaskan). Untuk memperbarui batasan, cukup jalankan Procgov yang memberikan batasan baru dan ID proses target. Procgov hanya akan memperbarui batas yang ditentukan. Mari kita lihat contoh untuk memahami perilaku ini dengan lebih baik:
We set a CPU limit on a process 1234
procgov.exe --nowait -c 2 -p 1234
Then we run procgov again with the new CPU limit - procgov will update the existing job object
procgov.exe --nowait -c 4 -p 1234Dengan proses -maxmem ( -m ) gubernur sakelar memungkinkan Anda untuk menetapkan batas pada memori yang dilakukan oleh suatu proses. Pada memori Windows yang berkomitmen sebenarnya adalah semua memori pribadi yang digunakan proses. Dengan cara ini Anda dapat menggunakan proses gubernur untuk menguji aplikasi .NET Anda (termasuk aplikasi web) untuk kebocoran memori. Jika prosesnya membocorkan memori, Anda lebih cepat mendapatkan outofmemoryException .
procgov.exe -m 100M -c 2 notepad.exe
procgov.exe -m 120M -p 1234Dengan sakelar -maxws dan - -minws Anda dapat mengontrol ukuran set maksimum dan minimum (penggunaan memori fisik) dari proses. Opsi ini membutuhkan SeINCREASEBASEPRIORITASPRIVILEGE , jadi pastikan akun Anda memilikinya (info lebih lanjut dalam edisi 69). Jika Anda ingin membatasi ukuran set kerja, ingatlah untuk selalu memberikan nilai lebih besar dari nol untuk kedua parameter ini, misalnya:
procgov.exe --minws 1M --maxws 120M -p 1234Opsi - -MaxJoBMem memungkinkan Anda untuk menentukan memori yang dilakukan maksimum untuk semua proses yang dimiliki oleh objek pekerjaan yang diberikan. Ini mungkin berguna ketika Anda mengaktifkan perambatan pekerjaan untuk proses anak atau Anda menggunakan objek pekerjaan yang sama untuk mengontrol banyak proses, misalnya:
procgov.exe -r --maxjobmem 200M -- cmd.exe
procgov.exe -r --maxjobmem 1G -p 1234,1235,1236Dengan sakelar -CPU Anda dapat mengontrol yang akan dijalankan oleh aplikasi Anda. Jika Anda memberikan nomor inti CPU sebagai nilai desimal , aplikasi Anda akan diizinkan untuk menggunakan jumlah inti yang ditentukan.
Jika Anda memberikan nomor inti CPU sebagai nilai hex (dengan awalan 0x) , angka ini akan diperlakukan sebagai mask afinitas dalam kelompok prosesor pertama - di mana setiap bit mewakili inti CPU (mulai dari bit yang paling tidak signifikan). Selain itu, Anda dapat mempersiapkan topeng afinitas dengan nomor grup prosesor yang diawali dengan huruf 'g' dan/atau nomor simpul numa diawali dengan huruf 'n'. Anda juga dapat melewatkan afinitas dan menggunakan afinitas NUMA Node atau Processor Group. Nilai contoh yang valid: n1:g0:0xF , n1:g0 , n1 , g0 .
Parameter - -CPU dapat didefinisikan beberapa kali dan topeng afinitas akhir akan menjadi kombinasi dari topeng yang disediakan.
Mari kita lihat dua contoh penggunaan pada aplikasi intensif CPU. Dalam yang pertama kami menetapkan batas inti CPU menjadi dua inti:
procgov.exe --cpu=2 TestLimit.exeGrafik penggunaan CPU pada mesin saya terlihat sebagai berikut:
Dalam sedetik kami mengatur topeng afinitas CPU (dengan notasi hex):
procgov.exe --cpu=0x2 TestLimit.exeGrafik CPU dalam hal ini terlihat sebagai berikut (perhatikan hanya inti kedua yang digunakan):
Contoh pengaturan afinitas yang lebih kompleks:
# Use processor group 0 affinity from NUMA node 0 and 1 core from the group 1 in NUMA node 1
procgov.exe --cpu=n0:g0 --cpu=n1:g1:0x1 TestLimit.exe
# Use processor group 0 affinity and 1 core from the group 1
procgov.exe --cpu=g0 --cpu=g1:0x1 TestLimit.exeJika Anda tidak yakin konfigurasi CPU apa yang ada dalam sistem, Anda dapat menjalankan Procgov tanpa params dan itu akan mencetaknya:
procgov.exe
#
# Use --help to print the available options.
#
# === SYSTEM INFORMATION ===
#
# NUMA Node 0:
# Processor Group 0: 000000000000000F (CPUs: 0,1,2,3)
# Processor Group 1: 0000000000000007 (CPUs: 4,5,6)
#
# NUMA Node 1:
# Processor Group 2: 000000000000000F (CPUs: 7,8,9,10)
# Processor Group 3: 0000000000000007 (CPUs: 11,12,13)
#
# Total Physical Memory (MB): 20 460
# Available Physical Memory (MB): 16 086
# Total Committed Memory (MB): 3 701
# Current Committed Memory Limit (MB): 21 740Opsi --CPU-rate memungkinkan Anda untuk mengatur tingkat CPU maksimum untuk proses tersebut. Jika Anda juga mengatur afinitas CPU, laju hanya akan berlaku untuk inti yang dipilih. Misalnya, jika Anda memiliki delapan inti CPU logis pada mesin Anda dan Anda mengatur laju CPU menjadi 100% dan afinitas CPU ke 0x7 (empat core pertama), tingkat CPU maksimum yang dilaporkan untuk proses ini oleh alat pemantauan akan 50% (kami berjalan pada kapasitas penuh tetapi pada setengah dari angka CPU).
Dengan opsi -Timeout Anda dapat menentukan waktu maksimum (waktu jam) proses dapat dijalankan sebelum Procgov mengakhiri. Jika opsi -resursif ditetapkan dan batas waktu berlalu, Progov akan mengakhiri juga semua proses yang dimulai anak -anak dari awal sesi pemantauan.
Opsi --Process-Time dan --job-hob-atime memungkinkan Anda untuk menetapkan batas pada waktu eksekusi mode pengguna maksimum untuk suatu proses (dengan opsi -Recursive juga semua anak-anaknya) atau pekerjaan. Kasus terakhir akan masuk akal dengan opsi -resursif karena akan menetapkan batas pada total waktu eksekusi mode pengguna untuk proses dan anak-anaknya.
Parameter -prioritas menetapkan kelas prioritas proses proses yang dipantau. Nilai -nilai yang mungkin meliputi: Idle , BelowNormal , Normal , AboveNormal , High , RealTime . Tiga prioritas tertinggi memerlukan SeecreaseBasepriorityPrivilege , jadi pastikan akun Anda memilikinya (info lebih lanjut dalam edisi 69).
Dengan sakelar --Env Anda dapat mengatur variabel lingkungan proses. Sakelar ini menerima jalur ke file teks dengan nilai variabel, misalnya:
COR_ENABLE_PROFILING=0x01
COR_PROFILER={32E2F4DA-1BEA-47ea-88F9-C5DAF691C94A}Perintah Procgov mungkin terlihat sebagai berikut:
procgov.exe --env c: t emp e nv.txt -c 2 dotnet_app.exeAnda dapat mengatur variabel lingkungan saat memulai proses baru atau mengakses yang sudah ada.
Anda dapat mengaktifkan hak istimewa dalam proses target dengan sakelar -yang dapat diubah . Anda dapat menentukan beberapa hak istimewa dengan menggunakan parameter ini beberapa kali, misalnya:
procgov.exe --enable-privilege=SeDebugPrivilege --enable-privilege=SeShutdownPrivilege notepadIngatlah bahwa di Windows, Anda tidak dapat menambahkan hak istimewa baru ke token proses. Anda hanya dapat mengaktifkan yang sudah ada. Anda dapat memeriksa hak proses yang tersedia dalam peretas proses atau penjelajah proses. Periksa dokumentasi untuk hak istimewa tertentu untuk mempelajari cara membuatnya tersedia untuk pengguna yang diberikan (misalnya, Anda mungkin perlu memperbarui kebijakan grup).
Di bawah ini Anda dapat menemukan daftar orang yang berkontribusi pada proyek ini. Terima kasih!