แอปพลิเคชันนี้ช่วยให้คุณสามารถตั้งข้อ จำกัด ในกระบวนการ Windows มันใช้วัตถุงานเพื่อจุดประสงค์นี้
สารบัญ
คุณสามารถดาวน์โหลดไบนารีเวอร์ชันล่าสุดจากหน้ารุ่นหรือติดตั้งด้วยช็อคโกแลตหรือปีก:
choco install procgov
# or
winget install procgovไม่มากที่จะพูดที่นี่ :) มันเป็นโหมดเริ่มต้นที่เปิดใช้งานเมื่อคุณเปิด Procgov จากพรอมต์คำสั่งเพื่อเปิดกระบวนการใหม่หรือแนบไปยังที่กำลังทำงาน
เมื่อใช้ Procgov คุณอาจสังเกตว่าบางครั้งมันก็เปิดอินสแตนซ์ที่สองของตัวเอง (เว้นแต่คุณจะใช้สวิตช์ -Nomonitor) อินสแตนซ์ที่สองนี้คือการตรวจสอบงานและคุณอาจจำได้ด้วยสวิตช์ -ผู้ตรวจสอบในบรรทัดคำสั่ง args มันจะมีชีวิตอยู่จนกว่ากระบวนการสุดท้ายในงานที่ถูกตรวจสอบจะออก ควรมีอินสแตนซ์สูงสุดหนึ่งอินสแตนซ์ต่อเซสชัน Windows บทบาทของมันคือการตรวจสอบงานที่สร้างขึ้นด้วย Procgov จอภาพควรออกทันทีหลังจากการยกเลิกกระบวนการสุดท้ายในงานที่ได้รับการตรวจสอบ
คุณสมบัตินี้อยู่ในช่วงเบต้า โปรดใช้ด้วยความระมัดระวังและรายงานข้อผิดพลาดที่มีประสบการณ์
หากคุณใช้สวิตช์ -Install เพื่อคงอยู่การตั้งค่าแอปพลิเคชัน Procgov จะบันทึกการตั้งค่าในรีจิสทรีและจะสร้างบริการ Windows ชื่อ ProcessGovernor โดยค่าเริ่มต้นจะใช้บัญชีระบบและโฟลเดอร์ %ProgramFiles%ProcessGovernor เป็นเส้นทางฐานบริการ คุณสามารถกำหนดค่าการตั้งค่านี้ได้โดยใช้ -บริการ -บริการ-บริการผู้ใช้บริการ และสวิตช์บรรทัดคำสั่ง -บริการ-บริการ หากคุณเรียกใช้คำสั่งการติดตั้งสำหรับแอปพลิเคชันอื่น Procgov จะเพิ่มข้อมูลใหม่ลงในรีจิสทรี แต่จะนำบริการที่มีอยู่กลับมาใช้ใหม่ บริการควรรับการกำหนดค่าที่อัปเดตหลังจากเวลาสั้น ๆ
บริการ ProcessGovernor ตรวจสอบกระบวนการเริ่มต้นและใช้ขีด จำกัด ที่กำหนดไว้ล่วงหน้าในระหว่างการติดตั้ง
หากต้องการถอนการติดตั้งบริการให้ใช้สวิตช์ -uninstall บริการจะถูกลบออกเมื่อคุณลบการกำหนดค่าที่บันทึกไว้ล่าสุด หากคุณต้องการลบข้อมูล procgov ที่บันทึกทั้งหมดพร้อมกับบริการให้ใช้สวิตช์ -uninstall-all
คุณอาจกำหนดขีด จำกัด ในกระบวนการที่สร้างขึ้นใหม่หรือที่ทำงานอยู่แล้ว ใน การ จำกัด กระบวนการที่ใช้งาน ให้ใช้สวิตช์ -P |--PID เช่น
procgov.exe --maxmem 40M --pid 1234 ในการ เริ่มต้นกระบวนการใหม่ ด้วยขีด จำกัด ที่ใช้เพียงแค่ผ่านเส้นทางภาพกระบวนการเป็นอาร์กิวเมนต์ procgov เช่น procgov64 --maxmem 40M c:temptest.exe หากคุณต้องการ ส่งพารามิเตอร์ใด ๆ ไปยังกระบวนการเป้าหมาย คุณควร -- พารามิเตอร์ ProCGOV แยกออกจากกระบวนการเป้าหมายเช่น: ตัวอย่างเช่น:
procgov.exe -m 100M -- test.exe -arg1 -arg2=val2 arg3คุณสามารถกำหนดหลายกระบวนการให้กับวัตถุงานเดียวกัน เมื่อคุณใช้พารามิเตอร์ -p หลายครั้งด้วยรหัสกระบวนการที่แตกต่างกัน Procgov จะใช้ขีด จำกัด เดียวกันสำหรับกระบวนการทั้งหมดเช่น:
procgov.exe --maxmem 100M -p 1234 -p 1235 -p 1236หากกระบวนการใด ๆ ที่ได้รับมอบหมายให้กับวัตถุงาน Procgov แล้วคนอื่นจะได้รับมอบหมายเช่นกัน
นอกจากนี้ยังเป็นไปได้ที่จะ อัปเดตเมื่อกำหนดขีด จำกัด อย่างไรก็ตามมีข้อกำหนดหนึ่งข้อ: กระบวนการไม่สามารถกำหนดให้กับงาน Procgov ที่แตกต่างกัน (ดังนั้นพวกเขาจะต้องอยู่ในงานเดียวกันหรือไม่ได้ออกแบบ) ในการอัปเดตขีด จำกัด เพียงเรียกใช้ Procgov ให้ขีด จำกัด ใหม่และรหัสกระบวนการเป้าหมาย Procgov จะอัปเดตเฉพาะขีด จำกัด ที่ระบุ มาดูตัวอย่างเพื่อทำความเข้าใจพฤติกรรมนี้ดีขึ้น:
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 1234ด้วยผู้ว่าการสวิตช์ -MaxMem ( -M ) ผู้ว่าราชการช่วยให้คุณสามารถกำหนดขีด จำกัด ในหน่วยความจำที่กำหนดโดยกระบวนการ ในหน่วยความจำที่มุ่งมั่นของ Windows เป็นหน่วยความจำส่วนตัวทั้งหมดที่กระบวนการใช้ วิธีนี้คุณสามารถใช้ผู้ว่าราชการกระบวนการเพื่อทดสอบแอปพลิเคชัน. NET ของคุณ (รวมถึงเว็บแอปพลิเคชัน) สำหรับการรั่วไหลของหน่วยความจำ หากกระบวนการรั่วไหลของหน่วยความจำคุณจะได้รับ outofmemoryexception เร็วขึ้น
procgov.exe -m 100M -c 2 notepad.exe
procgov.exe -m 120M -p 1234ด้วยสวิตช์ -MAXWS และ -MINWS คุณอาจควบคุมขนาดชุดการทำงานสูงสุดและขั้นต่ำ (การใช้หน่วยความจำทางกายภาพ) ของกระบวนการ ตัวเลือกนี้ต้องใช้ seincreaseBasePriorityPrivilege ดังนั้นตรวจสอบให้แน่ใจว่าบัญชีของคุณมี (ข้อมูลเพิ่มเติมในฉบับที่ 69) หากคุณต้องการ จำกัด ขนาดชุดการทำงานโปรดอย่าลืมให้ค่ามากกว่าศูนย์สำหรับพารามิเตอร์ทั้งสองนี้เช่น:
procgov.exe --minws 1M --maxws 120M -p 1234ตัวเลือก -MaxJobMem ช่วยให้คุณสามารถระบุหน่วยความจำสูงสุดที่มุ่งมั่นสำหรับกระบวนการทั้งหมดที่เป็นของวัตถุงานที่กำหนด สิ่งนี้อาจมีประโยชน์เมื่อคุณเปิดใช้งานการแพร่กระจายงานไปยังกระบวนการเด็กหรือคุณใช้วัตถุงานเดียวกันเพื่อควบคุมหลายกระบวนการตัวอย่างเช่น:
procgov.exe -r --maxjobmem 200M -- cmd.exe
procgov.exe -r --maxjobmem 1G -p 1234,1235,1236ด้วยสวิตช์ -CPU คุณอาจควบคุมว่าแอปพลิเคชันของคุณจะทำงาน หากคุณระบุหมายเลขหลักของ CPU เป็น ค่าทศนิยม แอปพลิเคชันของคุณจะได้รับอนุญาตให้ใช้จำนวนแกนที่ระบุ
หากคุณระบุหมายเลขหลักของ CPU เป็น ค่า hex (พร้อมคำนำหน้า 0x) หมายเลขนี้จะถือว่าเป็นหน้ากาก Affinity ในกลุ่มโปรเซสเซอร์แรก - ที่แต่ละบิตแสดงถึงแกน CPU (เริ่มต้นจากบิตที่สำคัญน้อยที่สุด) นอกจากนี้คุณอาจเตรียมหน้ากาก Affinity พร้อมหมายเลขกลุ่มโปรเซสเซอร์นำหน้าด้วยตัวอักษร 'G' และ/หรือหมายเลขโหนด NUMA นำหน้าด้วยตัวอักษร 'N' นอกจากนี้คุณยังสามารถข้ามความสัมพันธ์และใช้ NUMA Node หรือกลุ่มโปรเซสเซอร์ ค่าตัวอย่างที่ถูกต้อง: n1:g0:0xF , n1:g0 , n1 , g0
พารามิเตอร์ -CPU อาจถูกกำหนด หลายครั้ง และหน้ากาก Affinity ขั้นสุดท้ายจะเป็นการรวมกันของหน้ากากที่ให้ไว้
ลองดูสองตัวอย่างที่ใช้ในแอปพลิเคชันที่เข้มข้นของ CPU ในอันแรกเราตั้งค่าขีด จำกัด หลักของ CPU เป็นสองคอร์:
procgov.exe --cpu=2 TestLimit.exeกราฟการใช้งาน CPU บนเครื่องของฉันมีดังนี้:
ในวินาทีที่เราตั้งค่า CPU Affinity Mask (ด้วยสัญลักษณ์ Hex):
procgov.exe --cpu=0x2 TestLimit.exeกราฟ CPU ในกรณีนี้จะมีดังนี้ (สังเกตเฉพาะการใช้แกนที่สองเท่านั้น):
ตัวอย่างของการตั้งค่าความสัมพันธ์ที่ซับซ้อนมากขึ้น:
# 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.exeหากคุณไม่แน่ใจว่าการกำหนดค่า CPU มีอยู่ในระบบใดคุณอาจเรียกใช้ procgov โดยไม่มีพารามิเตอร์และจะพิมพ์:
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 740ตัวเลือก -อัตรา CPU ช่วยให้คุณสามารถตั้งค่าอัตรา CPU สูงสุดสำหรับกระบวนการ หากคุณตั้งค่า CPU Affinity อัตราจะใช้กับคอร์ที่เลือกเท่านั้น ตัวอย่างเช่นหากคุณมีคอร์ CPU แบบลอจิคัลแปดตัวบนเครื่องของคุณและคุณตั้งค่าอัตรา CPU เป็น 100% และ CPU Affinity เป็น 0x7 (สี่คอร์แรก) อัตรา CPU สูงสุดที่รายงานสำหรับกระบวนการนี้โดยเครื่องมือตรวจสอบจะอยู่ที่ 50%
ด้วยตัวเลือก - คุณอาจกำหนดเวลาสูงสุด (เวลานาฬิกา) กระบวนการสามารถทำงานได้ก่อนที่ Procgov จะสิ้นสุดลง หากมีการตั้งค่าตัวเลือก -การคืนค่า และการหมดเวลาผ่านไป Progov จะยุติกระบวนการทั้งหมดที่เด็ก ๆ เริ่มต้นจากจุดเริ่มต้นของเซสชันการตรวจสอบ
ตัวเลือก -Process-Utime และ -job-utime ช่วยให้คุณกำหนดขีด จำกัด สำหรับเวลาดำเนินการโหมดผู้ใช้สูงสุดสำหรับกระบวนการ (พร้อมตัวเลือก -recursive เด็กทุกคน) หรืองาน กรณีหลังจะสมเหตุสมผลกับตัวเลือก -การคืนค่า เนื่องจากจะกำหนดขีด จำกัด ของเวลาดำเนินการโหมดผู้ใช้ทั้งหมดสำหรับกระบวนการและเด็ก ๆ
พารามิเตอร์ -ความสำคัญ ตั้งค่าระดับความสำคัญของกระบวนการของกระบวนการตรวจสอบ ค่าที่เป็นไปได้รวมถึง: Idle , BelowNormal , Normal , AboveNormal , High , RealTime ลำดับความสำคัญสูงสุดสามลำดับต้องใช้ SeincreaseBasePriorityPrivilege ดังนั้นตรวจสอบให้แน่ใจว่าบัญชีของคุณมี (ข้อมูลเพิ่มเติมในฉบับที่ 69)
ด้วยสวิตช์ -ENV คุณอาจตั้งค่าตัวแปรสภาพแวดล้อมกระบวนการ สวิตช์นี้ยอมรับพา ธ ไปยังไฟล์ข้อความที่มีค่าตัวแปรตัวอย่างเช่น:
COR_ENABLE_PROFILING=0x01
COR_PROFILER={32E2F4DA-1BEA-47ea-88F9-C5DAF691C94A}คำสั่ง procgov อาจมีดังนี้:
procgov.exe --env c: t emp e nv.txt -c 2 dotnet_app.exeคุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมเมื่อเริ่มกระบวนการใหม่หรือเข้าถึงตัวแปรที่มีอยู่
คุณสามารถเปิดใช้งานสิทธิ์ในกระบวนการเป้าหมายด้วยสวิตช์ -เปิดรับ-privilege คุณอาจระบุสิทธิ์หลายอย่างโดยใช้พารามิเตอร์นี้หลายครั้งตัวอย่างเช่น:
procgov.exe --enable-privilege=SeDebugPrivilege --enable-privilege=SeShutdownPrivilege notepadโปรดทราบว่าใน Windows คุณไม่สามารถเพิ่มสิทธิ์ใหม่ให้กับโทเค็นกระบวนการ คุณสามารถเปิดใช้งานที่มีอยู่เท่านั้น คุณสามารถตรวจสอบสิทธิ์ของกระบวนการที่มีอยู่ในกระบวนการแฮ็กเกอร์หรือ Process Explorer ตรวจสอบเอกสารสำหรับสิทธิพิเศษที่กำหนดเพื่อเรียนรู้วิธีทำให้พร้อมใช้งานสำหรับผู้ใช้ที่กำหนด (ตัวอย่างเช่นคุณอาจต้องอัปเดตนโยบายกลุ่ม)
ด้านล่างคุณอาจพบรายชื่อผู้ที่มีส่วนร่วมในโครงการนี้ ขอบคุณ!