IP Library Granted Patent US 8,539,455
Granted Patent B2
US 8,539,455 · App. 12/055,996 · Granted Sep 17, 2013

System for and method of capturing performance characteristics data from a computer system and modeling target system performance

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,539,455
App. No.
12/055,996
Granted
Sep 17, 2013
Kind
B2
Abstract

A system, method, and computer program product that captures performance-characteristic data from the execution of a program and models system performance based on that data. Performance-characterization data based on easily captured reuse distance metrics is targeted. Reuse distance for one memory operation may be measured as the number of memory operations that have been performed since the memory object it accesses was last accessed. Separate call stacks leading up to the same memory operation are identified and statistics are separated for the different call stacks. Methods for efficiently capturing this kind of metrics are described. These data can be refined into easily interpreted performance metrics, such as performance data related to caches with LRU replacement and random replacement strategies in combination with fully associative as well as limited associativity cache organizations. Methods for assessing cache utilization as well as parallel execution are covered. The method includes modeling multithreaded memory systems and detecting false sharing coherence misses.

Claims (65)

1. A method of identifying a cycle of instructions in a program of instructions comprising:

starting to execute a sequence of operations in response to said program of instructions;

selecting a set of operations from said sequence of operations;

recording memory usage information associated with respective operations of said set of operations;

identifying a partial sequence of operations from said memory usage information;

a cycle of instructions being a set of instructions corresponding to a cyclic set of operations of said partial sequence of operations that occur between a recurring operation and an immediately subsequent occurrence of said recurring operation, including said recurring operation;

identifying a plurality of call stacks, each operation from the set of operations being associated with a call stack from the plurality of call stacks;

separating a set of call stacks from the plurality of call stacks that are associated with said recurring operation;

identifying and separating statistics associated with the set of call stacks; and

annotating a source code associated with the program of instructions with the statistics,

the cycle of instructions being selectively terminated in response to a part of a call stack from the plurality of call stacks associated with said immediately subsequent occurrence of said recurring operation being in common with a part of a call stack associated with an earlier occurrence of said recurring operation.

2. The method according to claim 1 , further including the step of counting a number of recorded instructions between the recurrences of said recurring operation and to identify said number as the number of instructions executed in said cycle of instructions.

3. The method according to claim 1 , wherein said cycle of instructions is only considered if each call stack from the set of call stacks associated with each operation from the cyclic set of operations includes an predetermined call stack part.

4. The method according to claim 1 , wherein said step of identifying a partial sequence of operations includes identifying a plurality of sequences of operations and combining said plurality of sequences to form said partial sequence.

5. A method of identifying data-chained instructions in a program of instructions comprising:

starting to execute a sequence of operations in response to said program of instructions;

selecting a set of operations from said sequence of operations;

recording memory usage information associated with respective operations of said set of operations; and

based on said memory usage information, detecting an identity of a first operation of said sequence of operations accessing a data object and an identity of a second operation of said sequence of operations accessing said data object so as to identify data-chained instructions;

identifying a plurality of call stacks, each operation from the set of operations being associated with a call stack from the plurality of call stacks;

separating a set of call stacks from the plurality of call stacks that are associated with the data-chained instructions;

identifying and separating statistics associated with the set of call stacks; and

annotating a source code associated with the program of instructions with the statistics,

the cycle of instructions being selectively terminated in response to a part of a call stack from the plurality of call stacks associated with said immediately subsequent occurrence of said data-chained instructions being in common with a part of a call stack associated with an earlier occurrence of said data-chained instructions.

6. The method according to claim 5 wherein a third operation associated with a third instruction is identified as accessing a same data object as either said first or said second operation and, in response, determining that said third instruction is a data-chain property that is data-chained on the instructions corresponding to said first and said second operation.

7. The method according to claim 6 wherein said data-chain property is only identified in response to said first, second and third operations all having at least a portion of a call stack from the plurality of call stacks associated with the first operation, a call stack from the plurality of call stacks associated with the second operation, and a call stack from the plurality of call stacks associated with the third operation are identical.

8. The method according to claim 7 wherein it is further determined that the data object accessed by a write instruction can be used to identify a data structure accessed by a read instruction, if said write instruction and said read instruction belong to the data-chain property.

9. The method according to claim 7 wherein it is further determined that a first operation and a second operation are data dependent if they belong to the data-chain property and at least one of said operations is of write type.

10. A method of detecting performance shortcomings for a program of instructions comprising:

starting to execute a sequence of operations in response to said program of instructions;

selecting a set of operations from said sequence of operations;

recording memory usage information associated with respective operations of said set of operations;

based on said memory usage information determining for a part of said program of instructions corresponding to said set of operations, at least one of the following properties indicative of a recurring operation:

(i) temporal reuse distance,

(ii) spatial reuse distance,

(iii) spatial usage; and

(iv) a first thread from a set of threads making an access to a portion of a data object and a second thread from the set of threads making an access to the portion of the data object; and

based on at least one of said properties determining a performance shortcoming of said program of instructions;

identifying a plurality of call stacks, each operation from the set of operations being associated with a call stack from the plurality of call stacks;

separating a set of call stacks from the plurality of call stacks that are associated with the recurring operation;

identifying and separating statistics associated with the set of call stacks; and

annotating a source code associated with the program of instructions with the statistics,

the cycle of instructions being selectively terminated in response to a part of a call stack from the plurality of call stacks associated with said immediately subsequent occurrence of said recurring operation being in common with a part of a call stack associated with an earlier occurrence of said recurring operation.

11. The method according to claim 10 , wherein:

said selection of set of operations corresponds to a subset of instructions of said program;

wherein said subset of instructions comprises either (i) a single instruction or (ii) several instructions belonging to the same cycle of instructions and further are determined to be data-chained; and,

wherein said at least one property and said performance shortcoming are attributed to said subset of instructions.

12. The method according to claim 11 , wherein said performance shortcoming is determined to be poor spatial usage if said property spatial usage, for said subset of instructions, is determined to be below a threshold.

13. The method according to claim 12 , wherein said spatial usage is with respect to some specific cache size.

14. The method according to claim 11 , wherein said performance shortcoming is determined to be inefficient loop nesting, the method further comprising:

forming a histogram over said spatial reuse distance property; and

establishing that one or more buckets in said histogram have a reuse distance exceeding a threshold.

15. The method according to claim 11 , wherein said performance shortcoming is determined to be inefficient loop nesting if said spatial reuse distance, for said subset of instructions, is higher than a threshold.

16. The method according to claim 11 , wherein said performance shortcoming is determined to be sparse data layout if said property spatial usage, for said subset of instructions, is lower than a threshold when evaluated for infinitely large caches.

17. The method according to claim 10 , wherein said performance shortcoming is determined to be an unused data reuse blocking opportunity, said method further comprising:

identifying a spatial or temporal reuse of a data object from one instruction to itself or to another instruction in the same loop; and,

establishing that either of said properties of spatial reuse distance or temporal reuse distance for said reuse of a data object is greater than a threshold.

18. The method according to claim 10 , wherein said performance shortcoming is determined to be unused data reuse loop fusion opportunity, said method further comprising:

identifying a spatial reuse or temporal reuse of a data object from an instruction in a first loop to an instruction in a different second loop; and

establishing that either of said properties spatial or temporal reuse distance of said reuse of a data object is above a certain threshold.

19. The method according to claim 10 , wherein a predetermined type of said performance shortcoming is used to select a corresponding passage in a manual.

20. The method according to claim 10 , wherein the set of threads is a first set of threads, the portion of the data object being a first portion of the data object, said performance shortcoming is determined to be false sharing, said method further comprising:

identifying a first thread from a second set of threads making an access to a second portion of the data object and a second thread from the second set of threads making an access to the second portion of the data object; the second portion of the data object being of size smaller than a cache line;

establishing that accesses from threads in said first set of threads cause coherence traffic while accesses from threads in said second set of threads do not cause coherence traffic; and

establishing that at least one of said accesses is a write operation.

Assignments (15)
SECURITY INTEREST Recorded Apr 7, 2026
From: PERFORCE SOFTWARE, INC.; DELPHIX CORP.; AKANA, INC.; ROGUE WAVE SOFTWARE, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 075368/0968 →
RELEASE OF SECURITY INTEREST Recorded Apr 7, 2026
From: CORTLAND CAPITAL MARKET SERVICES, AS COLLATERAL AGENT
To: ROGUE WAVE SOFTWARE, INC.; AKANA, INC.; GLIFFY, INC.; DELPHIX CORP.
Reel/Frame 075365/0519 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Aug 7, 2019
From: BRIGHTWOOD LOAN SERVICES LLC, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
To: AKANA, INC.; ROGUE WAVE SOFTWARE, INC.; PERFORCE SOFTWARE, INC.
Reel/Frame 049996/0115 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Jul 22, 2019
From: ANTARES CAPITAL LP, AS COLLATERAL AGENT
To: ROGUE WAVE SOFTWARE, INC.
Reel/Frame 049823/0731 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jul 22, 2019
From: PERFORCE SOFTWARE, INC.; PERFORCE INTERMEDIATE HOLDINGS, LLC; AKANA, INC.; GLIFFY, INC.; KLOCWORK INC.; OPENLOGIC, INC.; ROGUE WAVE HOLDING CORP.; ROGUE WAVE HOLDINGS, INC.; ROGUE WAVE SOFTWARE, INC.; RWS, INC.; TOTALVIEW TECHNOLOGIES, INC.; TOTALVIEW TECHNOLOGIES LLC; VISUAL NUMERICS, INC.; ZEROTURNAROUND USA, INC.; ZEROTURNAROUND, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 049823/0752 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 8, 2019
From: ROGUE WAVE SOFTWARE, INC.
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 049688/0785 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Feb 8, 2019
From: AKANA, INC.; ROGUE WAVE SOFTWARE, INC.; PERFORCE SOFTWARE, INC.
To: BRIGHTWOOD LOAN SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 048290/0223 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Feb 8, 2019
From: AKANA, INC.; ROGUE WAVE SOFTWARE, INC.; PERFORCE SOFTWARE, INC.
To: BRIGHTWOOD LOAN SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 048290/0241 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Feb 8, 2019
From: ROGUE WAVE SOFTWARE, INC.
To: ANTARES CAPITAL LP, AS COLLATERAL AGENT
Reel/Frame 048290/0199 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Feb 8, 2019
From: FIRST EAGLE PRIVATE CREDIT, LLC (F/K/A/ NEWSTAR FINANCIAL, LLC (NEWSTAR FINANCIAL, LLC F/K/A NEWSTAR FINANCIAL, INC.))
To: ROGUE WAVE SOFTWARE, INC.; ROGUE WAVE HOLDINGS, INC.; KLOCWORK INC.; TOTALVIEW TECHNOLOGIES, INC.; TOTALVIEW TECHNOLOGIES LLC; RWS, INC.; OPENLOGIC, INC.; VISUAL NUMERICS, INC.; AKANA, INC.
Reel/Frame 048289/0928 →
SECURITY INTEREST Recorded Sep 29, 2015
From: ROGUE WAVE SOFTWARE, INC.; ROGUE WAVE HOLDINGS, INC.; KLOCWORK INC.; TOTALVIEW TECHNOLOGIES, INC.; TOTALVIEW TECHNOLOGIES LLC; RWS, INC.; OPENLOGIC, INC.; VISUAL NUMERICS, INC.
To: NEWSTAR FINANCIAL, INC.
Reel/Frame 036683/0378 →
RELEASE OF SECURITY INTEREST Recorded Sep 27, 2015
From: WELLS FARGO CAPITAL FINANCE, INC. (NOW KNOWN AS WELLS FARGO CAPITAL FINANCE, LLC (SUCCESSOR BY MERGER))
To: ROGUE WAVE SOFTWARE, INC.; RWS, INC.; OPENLOGIC, INC.
Reel/Frame 036663/0695 →
SECURITY AGREEMENT Recorded Nov 26, 2012
From: ROGUE WAVE SOFTWARE, INC.
To: WELLS FARGO CAPITAL FINANCE, INC., AS AGENT
Reel/Frame 029345/0946 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2011
From: ACUMEM AB
To: ROGUE WAVE SOFTWARE, INC.
Reel/Frame 025809/0266 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2008
From: BERG, ERIK; HAGERSTEN, ERIK; ZEFFER, KAKAN; VESTERLUND, MAGNUS; NILSSON, MATS; PETTERSON, MIKAEL
To: ACUMEM AB
Reel/Frame 020989/0458 →