ورود

View Full Version : پیدا کردن Thread ای که باعث بالا رفتن CPUUsage شده



Delphi Coder
چهارشنبه 26 فروردین 1388, 19:23 عصر
یه برنامه داریم که حول و حوش 7000 تا Thread داره و مقدار Thread ها لحظه به لحظه عوض میشن یعنی ثابت نیست 7000 تا. ظاهرا هر چند وقت یکی از Thread ها به مشکل میخوره که باعث بالا رفتن CPUUsage برنامه میشه.
من چند نوع Thread دارم که تو این برنامه کار میکنن و حداقل میخوام بفهمم کدوم نوع هست که این مشکل در اون به وجود میاد. Thread ID هارو در برنامه دارم و اگر فقط یه ابزاری باشه که به من بگه کدوم یکی یا اون Thread ای که مورد نظر هست ID شو بهم بده میتونم تا حدودی پی به مشکل ببرم.
آیا همچین ابزاری وجود داره؟ راه حل بهتری برای پیدا کردن مشکل هست؟

vcldeveloper
پنج شنبه 27 فروردین 1388, 02:43 صبح
Process Explorer میتونه تعداد Threadهای یک Process، تعداد دفعاتی که هر یک از Threadها Context Switching داشتند، وضعیت هر Thread، و میزان Kernel Time و User Time استفاده شده توسط هر Thread را به شما بده. همچنین امکان Suspend کردن هر کدوم از Threadهای Process و مشاهده Stack آنها هم وجود داره.

Delphi Coder
پنج شنبه 27 فروردین 1388, 19:34 عصر
خیلی ممنون از لطفتون. برنامه جالبیه. واقعا لذت بردم از دیدنش.
یه راه حل دیگه هم که به فکرم رسید اومدم تو Thread های برنامه 2 تا property اضافه کردم

ThreadLastLoopTime: TDateTime
ThreadID: Cardinal
که از طریق thread اصلی این امکان به وجود میاد که بشه Thread ای که مشکل ساز شده رو پیداش کرد.