Ask a Question

Windows Waiting calls, remove time spent in there

h_hasenack
Occasional Contributor

Windows Waiting calls, remove time spent in there

So' I'm the one to deflorate the AQtime6 thread...

Wondering If I'll ever get an answer!



I'm playing around with aqtime at home to understand the tool better.

(Been a user of aqtime4 a long time)



Here's the thing... I want to performance profile my thread pool class. These pooled threads spend most of their time blocked in WaitForMultipleObjectsEx



This is not very interesting: I just want to know all the other overhead. How can I 'ignore' these routines, or otherwise NOT take in account the time spent in there for the total time of the routine that actually calls the  WaitForMultipleObjectsEx



I've tried Adding trigger on Kernel32.WaitForMultipleObjectsEx to an OFF trigger but no luck. My profiling area is set to my own source code only, and the Execute method of the thread is added to an ON trigger. ). Initial profiling off.



Regards / Hans

SG and partners BV
12 REPLIES 12
AlexKaras
Community Hero

Hi,



http://www.automatedqa.com/products/aqtime/faqs/#sec6_q20 may appear to be useful...

--



Regards,

      Alex

      [TeamAQA]

____

[TeamAQA] members are not employed by AutomatedQA Corp. but are just

volunteers who have some experience with the tools by AutomatedQA Corp.

and a desire to help others. Postings made by [TeamAQA] members may

differ from the official policies of AutomatedQA Corp. and should be

treated as the own private opinion of their authors and under no

circumstances as an official answer from AutomatedQA Corp.

[TeamAQA] signature is used with permission by AutomatedQA Corp.

More information about [TeamAQA] and its members is available at

http://www2.automatedqa.com/Articles/TeamAQA/

http://www.automatedqa.com/community/TeamAQA/tabid/50/Default.aspx

================================



Regards,
  /Alex [Community Hero]
____
[Community Heroes] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Heroes]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Hero] signature is used with permission by SmartBear Software.
https://community.smartbear.com/t5/custom/page/page-id/hall-of-fame
================================
h_hasenack
Occasional Contributor

First of all: thanks for the quick response.



So I wanted to try the other profiler settings too, I followed instructions to put my (Home machine) Win7x64 into debug mode, so the other options would become available. No luck, the combobox only shows elapsed time as option.



Now I'm at the office, I can see all the other options too, even though my DevMachine's WinXPx64 isn't in debug mode. Is there an explanation why my profiler combobox only shows 'Elapsed time' in my Win7x64 environment?



Kind regards - Hans



Hi Hans,




First of all, the current version of AQtime (6.21) does not support Windows 7. We are preparing a new update with support for this operating system. If you are a registered user of AQtime 6, we can send you a Beta version of the upcoming update so you can check how it works in the Windows 7 operating system. If you want to get the Beta version, please contact us via the Contact Support form (http://www.automatedqa.com/support/message/). Please don't forget to specify your Customer ID.




Another explanation is that the CPU installed on your computer is not supported by AQtime. Please find more information on this in the 'Supported Processor Models' help topic.







--
Dmitry Nikolaev

Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
h_hasenack
Occasional Contributor

Hi David

I downloaded the latest version (6.30.446.64), but still only the Elapsed time option is available.

Here is some system info:

Rad studio 2007, all patches applied, debug indo present.

Windows 7x64 ultimate edition

AMD Phenom II X4 955 processor 3.2 GHz

4GB RAM

500MB Diskspace (Raid striping, 2 disks)



I noticed my processor isn't in the supported processors list. Could it be that this is the cause of my problem? Will there be a fix in the foreseeable future?



Maybe a workaround suggestion: Allow certain routines (eg waitforsingeobject) to"subtract" theïr elapsed time from all calling routines in the current call stack: this would also produce results that are accurate enough for me.



Kind Regards -



Hans

Hi Hans,




>>

I noticed my processor isn't in the supported processors list. Could it be that this is the cause of my problem? Will there be a fix in the foreseeable future?

<<

Yes. We will try to implement support for this CPU in a couple of months. After that, the rest of the counters will became available.




>>

Maybe a workaround suggestion: Allow certain routines (eg waitforsingeobject) to"subtract" theïr elapsed time from all calling routines in the current call stack: this would also produce results that are accurate enough for me.

<<

Unfortunately, there is no way to do this, and I cannot suggest another workaround to you. You will have to use another computer for profiling until we implement support for your CPU.

--
Dmitry Nikolaev

Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
h_hasenack
Occasional Contributor

>>Unfortunately, there is no way to do this,<<



Why not? I think calculating the "nonwaited time" after getting the "raw" elapsed time results (thus not during profiling) using the call hierarchy information could do the trick... I guess I don't know enough yet about the internal magic of AQTime to really be able to say that this is an easy task. But I;m quite sure that it can be accomplished by writing some code "in a couple of months" 😉



Should it be rephrased to "Unfortunately, there is no way to do this yet" ?



Kind regards - Hans

Hi Hans,




We think that the better solution is to add support for a new CPU. And we are going to do this for AMD Phenom II X4 955 as soon as possible.

--
Dmitry Nikolaev

Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
h_hasenack
Occasional Contributor

OK, Thanks.



I'll just keep waiting impatiently then 😉 - And use a different computer for profiling!
h_hasenack
Occasional Contributor

I have experimented a bit with EnableProfiling(Enabled:boolean) and with this it's also not possible to "skip" the elapsed time. It simply does not record subroutine calls, but still measures the elapsed time.



What about a routine like PauseProfileTimer(Paused:boolean). Would that be hard to implement? (Still I do not know how elapsed time actually is measured).



With this routine I could write a wrapper around  WaitForSingleObject like this:



function MyWaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD;

begin

  PauseProfileTimer(True);

  try

    Result:=windows.WaitForSingleObject(hHandle,dwMilliseconds);

  finally

    PauseProfileTimer(False);

  end;

end;





Regards - Hans











cancel
Showing results for 
Search instead for 
Did you mean: