تتبع وحدة المعالجة المركزية واستخدام الذاكرة في عملية

StackOverflow https://stackoverflow.com/questions/69332

سؤال

وأظن أن واحدة من بلدي تطبيقات يأكل أكثر دورات وحدة المعالجة المركزية مما كنت ترغب في ذلك.المشكلة هي - يحدث في رشقات نارية و تبحث فقط في مدير المهام لا يساعدني كما يظهر الاستخدام الفوري فقط.

هل هناك طريقة (Windows) إلى تتبع تاريخ وحدة المعالجة المركزية واستخدام الذاكرة لبعض العملية.E. g.سأبدأ تتبع "فايرفوكس" و بعد ساعة أو نحو ذلك سوف ترى الرسم البياني من وحدة المعالجة المركزية واستخدام الذاكرة خلال تلك الساعة.

أنا أبحث عن إما الجاهزة أداة أو طريقة برمجية لتحقيق ذلك.

هل كانت مفيدة؟

المحلول

فقط اكتب perfmon في Start > Run ثم اضغط على enter.عندما الأداء نافذة مفتوحة ، اضغط على علامة + لإضافة عدادات جديدة على الرسم البياني.عدادات مختلفة من جوانب كيفية الكمبيوتر الخاص بك يعمل بحسب التشابه في مجموعات تسمى "كائن الأداء".

على الأسئلة الخاصة بك ، يمكنك اختيار "عملية" ، "الذاكرة" و "معالج" كائنات الأداء.ثم يمكنك رؤية هذه العدادات في الوقت الحقيقي

يمكنك أيضا تحديد أداة لحفظ بيانات أداء التفتيش في وقت لاحق.حدد "سجلات الأداء و والتنبيهات" في اللوحة اليمنى.(إنه الحق بموجب نظام مراقبة وحدة الذي يوفر لنا المذكورة أعلاه العدادات.إذا لم يكن هناك, انقر فوق "ملف" > "إضافة/إزالة أداة إضافية", انقر فوق إضافة ثم حدد "سجلات الأداء و والتنبيهات" في القائمة".) من "سجلات الأداء و والتنبيهات" ، إنشاء جديد رصد التكوين تحت عنوان "سجلات العدادات".ثم يمكنك إضافة عدادات تحديد معدل أخذ العينات ، تنسيق سجل (ثنائي أو نص عادي) و سجل الموقع.

نصائح أخرى

عملية اكسبلورر يمكن أن تظهر مجموع الوقت وحدة المعالجة المركزية التي اتخذتها عملية ، وكذلك تاريخ الرسم البياني لكل عملية.

باستخدام perfmon.exe لقد حاولت استخدام "وحدات البايت الخاصة" مكافحة إطار "عملية" عدادات تتبع استخدام الذاكرة و أنه يعمل بشكل جيد.

ربما يمكنك استخدام هذا.ينبغي أن تعمل من أجلك وسوف تقرير المعالج الوقت المحدد عملية.

@echo off
: Rich Kreider <rjk@techish.net>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends:  typeperf
: Usage:  foo.cmd <processname>

set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)

:end
echo Process seems to have terminated.

أنا أوافق ، perfmon.exe يسمح لك لإضافة عدادات (انقر بزر الماوس الأيمن على اللوحة اليمنى) عن أي عملية تريد مراقبة.

كائن الأداء:عملية الاختيار "تحديد الحالات من القائمة" وحدد فايرفوكس.

WMI هو Windows Management Instrumentation, و انها بنيت في جميع الإصدارات الأخيرة من ويندوز.فإنه يسمح لك برمجيا تتبع الأشياء مثل استخدام وحدة المعالجة المركزية القرص I/O ، واستخدام الذاكرة.

Perfmon.exe هو واجهة المستخدم الرسومية الواجهة الأمامية إلى هذه الواجهة ، ويمكن رصد عملية إرسال المعلومات إلى سجل و تسمح لك لتحليل سجل بعد وقوعها.انها ليست الأكثر أناقة في العالم برنامج, لكنها لا تحصل على هذه المهمة.

عملية لاسو هو تصميم أكثر عن عملية الأتمتة الأولوية الدرجة الأمثل ، وليس الرسوم البيانية.الذي قال ، لا نقدم لكل عملية استخدام وحدة المعالجة المركزية التاريخ (كما رسمها خط أبيض على الرسم البياني) ولكنه لا نقدم لكل عملية استخدام ذاكرة التاريخ.

تنويه:أنا صاحب عملية لاسو, ولكن أنا في الواقع لا يؤيد ذلك هنا - كما أن هناك حلول أفضل (perfmon كونه أفضل).

أفضل شيء من أي وقت مضى هو ويندوز فيستا+ الموارد " و " مراقبة الأداء.فإنه يمكن تتبع استخدام وحدة المعالجة المركزية والذاكرة والشبكة القرص يصل خلال عمليات مرور الوقت.بل هو كبيرة عموما نظام معلومات الأداة التي ينبغي أن تم إنشاؤها منذ فترة طويلة.إلا إذا كنت مخطئا ، فإنه يمكن تتبع في عملية المعالجة المركزية استخدام الذاكرة على مر الزمن (من بين أمور أخرى مدرجة).

يمكنك أيضا محاولة استخدام C#/Perl/جافا سكريبت على استخدام البيانات باستخدام الأوامر WMI ، وفيما يلي الخطوات اللازمة لذلك.

نحن بحاجة إلى تنفيذ 2 WMI حدد الاستفسارات تطبيق CPU% استخدام صيغة

1.استرداد إجمالي عدد العمليات المنطقية

select NumberOfLogicalProcessors from Win32_ComputerSystem

2.استرداد قيم PercentProcessorTime, TimeStamp_Sys100NS ( استخدام وحدة المعالجة المركزية الصيغة تطبق على الاستخدام الفعلي النسبة المئوية)و WorkingSetPrivate ( RAM ) لا تقل عن 2 مرات مع النوم المتقطع من 1 ثانية

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3.تطبيق CPU% استخدام صيغة

CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors

p2 أشار PercentProcessorTime استرجاع للمرة الثانية ، p1 indicateds على PercentProcessorTime استرجاع للمرة الأولى ، t2 و t1 هو TimeStamp_Sys100NS.

عينة كود بيرل لهذا يمكن العثور عليها في الرابط http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-perl-via-wmi/

هذا المنطق ينطبق على جميع لغات البرمجة التي تدعم استعلامات WMI

على الرغم من أنني لم أحاول هذا ، ProcDump يبدو أن أفضل حل.

الوصف من الموقع:

ProcDump هو أداة سطر الأوامر غرضها الأساسي هو مراقبة تطبيق وحدة المعالجة المركزية المسامير و توليد تفريغ تعطل أثناء ارتفاع أنه مسؤول أو المطور يمكن استخدامها لتحديد سبب ارتفاع.ProcDump يشمل أيضا معلقة نافذة رصد (باستخدام تعريف نفسها من نافذة شنق أن ويندوز مدير المهام الاستخدام) ، استثناء غير معالج الرصد يمكن أن تولد مقالب على أساس قيم نظام عدادات الأداء.فإنه يمكن أيضا أن تكون بمثابة العامة عملية تفريغ الأداة التي يمكنك تضمين في النصوص الأخرى.

فهمت أن عملية اكسبلورر يمكن أن تفعل ذلك ، على الرغم من أن الرسوم البيانية ليست مريحة جدا.لا تزال تبحث عن بديل أفضل الطرق للقيام بذلك.

Perfmon.exe بنيت في ويندوز.

قد ترغب في إلقاء نظرة على عملية لاسو.

تحت ويندوز 10 ، مدير المهام يمكن أن تظهر لك التراكمي وحدة المعالجة المركزية ساعات.فقط توجه إلى "تاريخ التطبيق" و "حذف محفوظات الاستخدام".الآن ترك الأمور تشغيل لمدة ساعة أو ساعتين:

Windows 10 Cumulative CPU time

ما هذا لا هل هو كسر في استخدام المتصفحات من خلال علامة التبويب.في كثير من الأحيان علامات التبويب غير النشطة سوف تفعل كمية هائلة من العمل مع بعضها التبويب المفتوحة باستخدام الطاقة وتباطؤ جهاز الكمبيوتر الخاص بك.

يمكنني استخدام taskinfo على الرسم البياني التاريخ من وحدة المعالجة المركزية/ذاكرة الوصول العشوائي/IO السرعة.http://www.iarsn.com/taskinfo.html

لكن رشقات نارية من تجاوب ، يبدو أكثر مثل يقطع الوقت بسبب falty HD/SS بالسيارة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top