Analysis and visualization of concurrent thread execution on processor cores

US9430353B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9430353-B2
Application numberUS-60594709-A
CountryUS
Kind codeB2
Filing dateOct 26, 2009
Priority dateOct 26, 2009
Publication dateAug 30, 2016
Grant dateAug 30, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

An analysis and visualization is used to depict how a concurrent application executes threads on processor cores over time. With the analysis and visualization, a developer can readily identify thread migrations and thread affinity bugs that can degrade performance of the concurrent application. An example receives information regarding processes or threads running during a selected period of time. The information is processed to determine which processor cores are executing which threads over the selected period of time. The information is analyzed and executing threads for each core are depicted as channel segments over time, and can be presented in a graphical display. The visualization can help a developer identify areas of code that can be modified to avoid thread migration or to reduce thread affinity bugs to improve processor performance of concurrent applications.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer implemented method, comprising: receiving information regarding a plurality of logical cores each having a corresponding memory in a multiple core processor; receiving a plurality of context switch records generated by recording context switches developed from executing a plurality of threads in a concurrent application on the multiple core processor during a course of time; generating a plurality of thread execution segments from the information and the context switch records, wherein each of the thread execution segments associates an instance of an executing thread on a corresponding logical core with respect to the course of time; and presenting the plurality of thread execution segments in a visualization configured to indicate which thread is executing on which logical core over the course of time for each of the plurality of threads to display thread migration in the concurrent application, the logical cores arranged along an axis of the visualization relative to their distance to each other's memory. 2. The method of claim 1 wherein the plurality of context switch records are determined with an enabled trace conducted over a duration of the trace. 3. The method of claim 1 wherein the context switch records include context switch events. 4. The method of claim 1 wherein the context switch records include a timestamp, process identifier, thread identifier, and a logical core identifier for each of the plurality of threads. 5. The method of claim 1 wherein the information regarding the plurality of logical cores includes information regarding the architecture of the multiple core processor to indicate relative distances between the logical cores. 6. The method of claim 1 wherein generating a plurality of thread execution segments includes determining relevant times of execution for each thread and determining from the context switch records at least one corresponding logical core used to execute the thread. 7. The method of claim 6 wherein each thread execution segment is depicted with a channel segment indicating start and stop times of the corresponding thread, and further including pause and resume times in an executing thread migrating from one of the logical cores to another of the logical cores. 8. The method of claim 7 wherein the channel segments for each migrating thread depict which logical cores execute the migrating thread and the corresponding execution times during the course of time. 9. The method of claim 1 where in the visualization includes a graphical display. 10. The method of claim 9 wherein the graphical display includes a link to code of the application. 11. A computer readable storage medium, which does not include a transitory propagating signal, storing computer executable instructions for controlling a computing device to perform a method comprising: receiving data relating to a plurality of logical cores in a multiple core processor, the logical cores each having a corresponding memory; receiving a plurality of context switch records generated from recording context switches developed from executing a plurality of threads in a concurrent application on the plurality of logical cores during a course of time; generating a plurality of thread execution segments from the data and the context switch records, wherein each of the thread execution segments associates an instance of an executing thread on a corresponding logical core with respect to the course of time; and generating a graphical display with the plurality of thread execution segments, the graphical display indicating which thread is executing on which logical core over the course of time for each of the plurality of threads to display thread migration in the concurrent application, the logical cores arranged along an axis of the visualization relative to their distance to each other's memory. 12. The computer readable storage medium of claim 11 wherein data relating to the plurality of logical cores is received by causing an operating system on the computing device to interrogate the processing system. 13. The computer readable medium of claim 12 wherein the data relating to the plurality of logical cores includes data regarding logical cores available to execute the concurrent application and data regarding architecture information of the multiple processor core. 14. The computer readable medium of claim 13 wherein the data regarding architecture information is used to arrange a list of the logical cores on the graphical display. 15. The computer readable storage medium of claim 11 wherein a trace is enabled in the operating system to provide the plurality of context switch records. 16. The computer readable storage medium of claim 15 wherein the context switch records are related to thread context switches. 17. The computer readable storage medium of claim 16 wherein each context switch record includes a timestamp, process identifier, a thread identifier, a logical core identifier associated with the thread identifier, and data as to whether the thread is stopping or starting execution. 18. The computer readable storage medium of claim 11 wherein portions of the graphical display are linked to corresponding portions of code for the concurrent application. 19. A system comprising: a processor; a memory device storing instructions executable by the processor to: receive data relating to the plurality of logical cores each having a corresponding memory, wherein the data includes data regarding logical cores available to execute a concurrent application and data regarding architecture information of the multiple processor core; receive a plurality of context switch records generated from a trace recording context switches and developed from executing a plurality of threads in the concurrent application on the plurality of logical cores during a course of time; generate a plurality of thread execution segments from the data and the context switch records, wherein each of the thread execution segments associates an instance of an executing thread on a corresponding logical core with respect to the course of time; and generate a graphical display with the plurality of thread execution segments, wherein the graphical display lists the plurality of logical cores along an axis according to the data relating to distance to each other's memory with respect to the plurality of logical cores, wherein the course of time is indicated along a time axis, and wherein each of the thread execution segments is assigned a mark and depicted as at least one bar including the mark with relation to the logical cores along the axis and execution time along the time axis to identify thread migration or thread affinity bugs in the concurrent application. 20. The system of claim 19 configured to link additional details to portions of the graphical display, wherein the additional details include corresponding sections of application code available for modification.

Assignees

Inventors

Classifications

  • Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations (thermal management in cooling arrangements of a computing system G06F1/206) · CPC title

  • Performance evaluation by tracing or monitoring · CPC title

  • G06F11/323Primary

    Visualisation of programs or trace data · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9430353B2 cover?
An analysis and visualization is used to depict how a concurrent application executes threads on processor cores over time. With the analysis and visualization, a developer can readily identify thread migrations and thread affinity bugs that can degrade performance of the concurrent application. An example receives information regarding processes or threads running during a selected period of t…
Who is the assignee on this patent?
Shafi Hazim, Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F11/323. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 30 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).