يتيح لك هذا التطبيق تعيين قيود على عمليات Windows. ويستخدم كائن عمل لهذا الغرض.
جدول المحتويات
يمكنك تنزيل أحدث ثنائيات الإصدار من صفحة الإصدار أو تثبيتها بالشوكولاتة أو Winget:
choco install procgov
# or
winget install procgovلا يوجد الكثير ليقوله هنا :) إنه الوضع الافتراضي الذي يتم تنشيطه عند تشغيل Procgov من موجه الأوامر لبدء عملية جديدة أو إرفاقها.
عند استخدام Procgov ، يمكنك ملاحظة أنه يطلق أحيانًا مثيلًا ثانية لنفسه (ما لم تستخدم مفتاح -Nomonitor). هذه الحالة الثانية هي شاشة عمل ويمكنك التعرف عليها بواسطة مفتاح -Monitor في سطر الأوامر Args. ستبقى على قيد الحياة حتى تخرج العملية الأخيرة في الوظائف التي تمت مراقبتها. يجب أن يكون هناك مثيل واحد كحد أقصى لمراقبة الوظائف لكل جلسة Windows. دورها هو مراقبة الوظائف التي تم إنشاؤها مع Procgov. يجب أن يخرج الشاشة مباشرة بعد إنهاء العملية الأخيرة في الوظائف التي تمت مراقبتها.
هذه الميزة في مرحلة بيتا. يرجى استخدامه بحذر والإبلاغ عن أي أخطاء من ذوي الخبرة.
إذا كنت تستخدم مفتاح التبديل -Install للاستمرار في إعدادات التطبيق ، فسيقوم Procgov بحفظ الإعدادات في السجل وستقوم بإنشاء خدمة Windows باسم ProcessGovernor. بشكل افتراضي ، سيستخدم حساب النظام ومجلد %ProgramFiles%ProcessGovernor كمسار قاعدة الخدمة. يمكنك تكوين هذه الإعدادات باستخدام مفاتيح خط الأوامر -خدمة الخدمة ، -خدمة الخدمة ، و -خدمة-خدمة-خطية . إذا قمت بتشغيل أمر التثبيت لتطبيق آخر ، فسيقوم Procgov بإضافة بيانات جديدة إلى السجل ولكن ستعيد استخدام الخدمة الحالية. يجب أن تلتقط الخدمة التكوين المحدث بعد فترة زمنية قصيرة.
تراقب خدمة ProcessGoverNor عمليات بدء العمليات وتطبق الحدود المحددة مسبقًا أثناء التثبيت.
لإلغاء تثبيت الخدمة ، استخدم مفتاح التبديل . ستتم إزالة الخدمة عند إزالة آخر تكوين تم حفظه. إذا كنت ترغب في إزالة جميع بيانات Procgov المحفوظة ، إلى جانب الخدمة ، استخدم التبديل-غير التام.
يمكنك تعيين حدود على عملية تم إنشاؤها حديثًا أو على عملية تشغيل بالفعل. لقيد عملية التشغيل ، استخدم مفتاح -P |-PID ، على سبيل المثال.
procgov.exe --maxmem 40M --pid 1234 لبدء عملية جديدة مع الحدود المطبقة ، ما عليك سوى تمرير مسار صورة العملية كوسيطة PACGGOV ، على سبيل المثال. 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إذا تم تعيين أي من العمليات بالفعل إلى كائن Job 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 ، يمكنك التحكم في النوى التي سيتم تشغيل تطبيقك. إذا قمت بتقديم الرقم الأساسي لوحدة المعالجة المركزية كقيمة عشرية ، فسيتم السماح للتطبيق الخاص بك باستخدام العدد المحدد من النوى.
إذا قمت بتقديم الرقم الأساسي لوحدة المعالجة المركزية كقيمة سداسية (مع بادئة 0x) ، فسيتم التعامل مع هذا الرقم كقناع تقارب في مجموعة المعالج الأولى - حيث يمثل كل بت نموذج وحدة المعالجة المركزية (بدءًا من البت الأقل أهمية). بالإضافة إلى ذلك ، يمكنك إعداد قناع التقارب مع رقم مجموعة المعالج مسبوقة بالحرف "G" و/أو رقم عقدة NUMA مسبوقة بحرف "N". يمكنك أيضًا تخطي التقارب واستخدام تقارب مجموعة NUMA أو مجموعة المعالج. مثال صالح القيم: n1:g0:0xF ، n1:g0 ، n1 ، g0 .
يمكن تعريف المعلمة -CPU عدة مرات وسيكون قناع التقارب النهائي مزيجًا من الأقنعة المقدمة.
دعنا نلقي نظرة على استخدام مثالين على تطبيق مكثف وحدة المعالجة المركزية. في أول واحد ، قمنا بتعيين الحد الأساسي لوحدة المعالجة المركزية على اثنين من النوى:
procgov.exe --cpu=2 TestLimit.exeيبدو رسم بياني لاستخدام وحدة المعالجة المركزية على الجهاز الخاص بي على النحو التالي:
في ثانية قمنا بتعيين قناع تقارب وحدة المعالجة المركزية (مع تدوين Hex):
procgov.exe --cpu=0x2 TestLimit.exeيبدو رسم بياني وحدة المعالجة المركزية في هذه الحالة على النحو التالي (لاحظ فقط أن النواة الثانية تستخدم):
أمثلة على إعدادات التقارب الأكثر تعقيدًا:
# 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إذا لم تكن متأكدًا من تكوين وحدة المعالجة المركزية الموجودة في النظام ، فيمكنك تشغيل 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 معدل تعيين الحد الأقصى لعملية المعالجة المركزية للعملية. إذا قمت أيضًا بتعيين تقارب وحدة المعالجة المركزية ، فسيتم تطبيق المعدل فقط على النوى المحددة. على سبيل المثال ، إذا كان لديك ثمانية نوى وحدة المعالجة المركزية المنطقية على جهازك وقمت بتعيين معدل وحدة المعالجة المركزية إلى 100 ٪ ، وسيكون تقارب وحدة المعالجة المركزية إلى 0x7 (أول أربعة نوى) ، وسيكون الحد الأقصى لمعدل وحدة المعالجة المركزية التي تم الإبلاغ عنها لهذه العملية من قبل أدوات المراقبة 50 ٪ (نحن نجري بكامل طاقتها ولكن في نصف رقم وحدة التحكم في وحدة التحكم).
باستخدام خيار -utt ، يمكنك تحديد الحد الأقصى للوقت (وقت الساعة) التي يمكن أن تعملها العملية قبل أن ينهيها Procgov. إذا تم تعيين الخيار -العلماء ومرور المهلة ، فسيقوم Progov بإنهاء جميع العملية التي بدأها الأطفال من بداية جلسة المراقبة.
تتيح لك خيارات -المعالجة-utime و- job-utime تحديد حد على أقصى وقت تنفيذ وضع المستخدم لعملية (مع -الخيار -أيضًا جميع أطفالها) أو وظيفة. ستكون الحالة الأخيرة منطقية مع الخيار -المقيد لأنه سيحدد حدًا على إجمالي وقت تنفيذ وضع المستخدم للعملية وأطفالها.
المعلمة -العذراء تحدد فئة أولوية العملية للعمليات التي تم مراقبتها. تشمل القيم الممكنة: 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يمكنك تعيين متغيرات البيئة عند بدء عملية جديدة أو الوصول إلى عملية موجودة.
يمكنك تمكين الامتيازات في العملية المستهدفة باستخدام مفتاح التخصيص . يمكنك تحديد امتيازات متعددة باستخدام هذه المعلمة عدة مرات ، على سبيل المثال:
procgov.exe --enable-privilege=SeDebugPrivilege --enable-privilege=SeShutdownPrivilege notepadضع في اعتبارك أنه في Windows ، لا يمكنك إضافة امتيازات جديدة إلى رمز العملية. يمكنك فقط تمكين تلك الموجودة. يمكنك التحقق من امتيازات العملية المتاحة في عملية هاكر أو مستكشف العملية. تحقق من الوثائق للحصول على امتياز معين لتعلم كيفية إتاحته لمستخدم معين (على سبيل المثال ، قد تحتاج إلى تحديث سياسات المجموعة).
قد تجد أدناه قائمة بالأشخاص الذين ساهموا في هذا المشروع. شكرًا لك!