I am working on performance profiling NDIS filter driver on Windows 10. I am using Windows Performance Recorder (WPR) and Windows Performance Analyzer (WPA) for this purpose. I am able to see the CPU usage graphs for processes but I am interested in load points in the driver code, which I am not able to get. It might be because I am not using the tools appropriately. Is there any guide or tutorial which can help me use these tools to get the desired results? My objective is to get a similar report like Oprofile in Linux.
Can someone suggest me whether WPR/WPA are the right tools that I am using? Is there any other better tool which can be more appropriate for my requirement?
I am currently deployed overseas with the military and am using my down time to keep up with my civilian education, which is about 1 year of computer science. I developed this rather simple batch program that functions to use taskkill to kill a specific .exe after a specified time, aka an application-specific Sleep Timer:
Blog post describing use of program.
However, I have never had any experience with a GUI program. I have seen some old Q&As here recommending using Qt to get started, but as things change so quickly in the technology world, would you all be kind enough to give me some fresh information on how to create a GUI out of this application?
Instead of Microsoft technologies coupled with Qt, you'll cut learning and dev time by learning and using tcl/tk which comes with "expect" to communicate with command line programs and utilities. The only downside is needing to deploy tcl/tk to each machine to run your program as it's not compiled, rather an interpretive language.
I would use the Windows API + Windows Resource files + the C language to do it. ResEdit is a useful tool to edit resource files. Some handy links:
Windows Application UI Development
MSDN Library
ResEdit Home Page
Hope it helps.
It's a long time that I have given up MS platform and was working on open source, now I'm in a situation where I need user Hardware info. All hardware IDs of all devices of system including BIOS info. so I decided to go for VB6. It's easy in other languages, but they need dot net framework installed. How can this be done in VB6 alone.
Use Windows WMI:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582(v=vs.85).aspx
There you can query for quite some bit of information. Here is some sort of how-to which happen to be written for Visual Basic Script
http://msdn.microsoft.com/en-us/library/aa394587%28VS.85%29.aspx
Is there any small tool that gives me access to the data gathered by the Intel CPU Counters (like L1/L2 cache misses, branch prediction failures ... you know there are hunderts of them on modern Core2 CPU's).
It must work on Windows (while being able to use it with Solaris, FreeBSD, Linux, MacOSX would of course be nice).
Check out the Intel PCM (Performance Counter Monitor) tool which does exactly what you want to do.
Link: https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization
Intel PCM provides a rich API that allows you to instrument your code. Furthermore, to date, PCM is the only tool to read uncore events too.
This thread seems a little old but if you're still interested, I wrote a howto recently on this topic using nothing more than rdmsr and wrmsr in Linux. It only deals with the performance counters on an Intel uncore for Westmere, but the process I described might help you figure out what you need if you haven't already. I'm sure Windows has some equivalent program or function call to RDMSR and WRMSR. The problem is you need to be ring 0 (kernel mode) to read MSRs. I have no idea how to do that in Windows. I won't be able to help with any Windows questions but may be able to answer some MSR-related questions if you have any. I'm by no means an expert though.
PAPI is a very promising lead, however, I believe they discontinued support for Windows (and therefore .NET C#) quite a few years ago.
On the windows front, Visual Studio 2010 Premium comes with performance explorer. If you run any project or binary in instrumentation mode, you can get access to hardware events such as instructions retired.
The results can be somewhat mixed and inconsistent depending external factors, but it integrates with Visual Studio nicely and you get detailed counts (avg, maximum, total) on a per method/module level.
Intel V-tune performance analyzer also exposes these natively. I haven't played with this tool yet but it might be a more flexible API than what Visual Studio 2010 exposes.
You didn't write of your are looking for a application or for a library.
For Windows there is Intel VTune. But this not exactly an small tool. For linux I have used oprofile, which works without kernel patches.
On OS X, Shark lets you get data from the PMCs. I'm not sure what's available on Windows other than Intel's tools (VTune, as mentioned by drhirsch).
Try this
http://icl.cs.utk.edu/papi/
It is a full library that allows you to read any CPU counters data, works both on Windows and Linux [and other OS]
This thread looks pretty old. But still, all the above mentioned counters are available at Intel PCM .These counters can be used as a Microsoft Perfmon plugin or a command prompt interface. The Intel PCM gives informations like L2 and L3 cache hit ratio, cache misses etc.
As part of an application for a client, I need to have a section which reports temperature information (motherboard, CPU, HDD). I know there are standalone applications such as Hardware Monitor by CPUID, but again, these are standalone and I require something that I could interface with.
Is there any app like this which has an API or is open source so I can utilize their source code? I have language preferences other than it needs to run on Windows XP. Thanks.
You get info like this from WMI. Download WMICodeCreator to find the query as well as the code you need to write. Beware that hardware queries like this tend to rely heavily on providers supplied by the hardware or BIOS manufacturer.