- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am using Intel xeon X5675 processor and Intel PCM. Is there a way to find the cache data access pattern of each process. Atleast can I find the last level miss rate per process
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I suppose that parent process(conhost.exe) which runs PCM user mode module will be the one which is measured.Another option is that PCM driver which runs in arbitrary context can measure performance of currently executed thread on logical processor.I do not know if there is an option to profile cache data accesses of specific process.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you iliyapolak
Another option is that PCM driver which runs in arbitrary context can measure performance of currently executed thread on logical processor
I require the access pattern of threads. Can you tell me how this happens
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Narran,
PCM doesn't keep track of threads or processes so it can't report stats by process or thread. PCM just reads the counters periodically.
You need something like Intel Vtune Amplifier or, on linux you could use 'perf' (or VTune). These utilities sample the instruction pointer so they can assign events to threads/processes.
Pat
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi narran,
as Pat said PCM does not track the instruction pointer of the currently executed thread's functions and does not map this to loaded executables.
>>>thank you iliyapolak. "Another option is that PCM driver which runs in arbitrary context can measure performance of currently executed thread on logical processor". can you tell me how i can do this>>>
This is how the system works and specifically drivers.Thats mean that I suppose msr.sys when executed reads/writes MSR registers and communicates with console applications which in turne runs inside console host process.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you are sure that your app is the only thing running, then you can say that what PCM reports is due to your app. But in practice, especially on servers, many other things are running. Even on my poor little laptop, there are many things running. Apparently our IT dept thinks an idle cpu is terrible thing to waste and they busy up the system constantly. Okay... so maybe the last bit wasn't too relevant to your question...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Even on home desktop processor is busy quite running for example AV software on even spyware which is consuming cpu cycles.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry for off topic,but could not resist.Why my posts are still queued for admin approval?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't know why the posts are queued. The forums are sometimes attacked by spammers (resulting in lots of unwanted email) so the postings myight be getting queued and checked. I'll see it this is the case.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
patrick and iliyapolak I tried perf. It gives good info about threads. But i need data accessed by threads not from a command. I woking on finding threads that share some data. i.e access same data(from local or remote cache. I need to get the addresses of data accessed by every thread running, from a program. Is there a tool or software that can help me
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Pat,
I think that developing a more heuristic anti-spam filter which will take into account so called "prevoius user behaviour" could eliminate the frequency of anti-spam filter trigerring.
Just my thoughts:)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi narran,
I do not know if you can track the data beign accessed by particular thread(s),but you can profile your app with Xperf which will give a nice graphical breakdown of thread activity and threa's call stacks.
Regarding the data which is accessed by the thread you will need kernel and user mode debugger like windbg in order to inspect and find some access pattern.You can for example write source code compile it with debug information and track the execution inside user-mode debugger.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Narran,
You need a tool (like Intel VTune) which samples the instruction pointer and can measure events related to false sharing.
Please see the article http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads
Pat
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Patrick Fay iliyapolak I am working with a scheduling project that schedules threads in multi-core processors based on amount of info shared betweent he threads. I need to know whether two threads share some data saya from a same cache line. How about using intel pin or valgrind for getting those data. Can you suggest some other light weight tool
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If your code is actually scheduling the threads, then (assuming you've programmed the appropriate event) you could get the difference in the event over the current context switch. This would tell you that the thread about to be switched out had X amount of shared cache line hits. But this wouldn't tell you with which other thread you were sharing cache lines... just that you are sharing cache lines with some other thread.
The Precise event based sampling (PEBS) events record the address of the data that caused the event, so if there is a PEBS cache line hit event on whatever processor you have, and if you can find a utility to report the PEBS registers (programming PEBS events is a non-trivial task), then you could look at the HITM/HITS (hit modifiied/hit shared) addresses of one thread and compare the same PEBS info from other threads to see which threads are sharing how much data... But this would be a lot of computation, probably too much computation to be put into a real-time scheduler. This sort of ananlysis is done mostly by benchmarkers trying to minimize shared cacheline hits or at least reduce remote NUMA node accesses.
Pat
![](/skins/images/92C5BEB64AD8DB80DE2B33716453E265/responsive_peak/images/icon_anonymous_message.png)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page