Browse Prior Art Database

Performance Tuning of Memory Data Movement for the RISC System/6000 ADA Run-Time Environment

IP.com Disclosure Number: IPCOM000113015D
Original Publication Date: 1994-Jun-01
Included in the Prior Art Database: 2005-Mar-27
Document File: 4 page(s) / 159K

Publishing Venue

IBM

Related People

Hunter McDaniel, J: AUTHOR [+2]

Abstract

The purpose of this performance tool was to determine the amount of memory data movement generated by applications implemented in the IBM ADA language for the RISC System/6000* platform. Specifically, our ADA application exhibited signs of excessive data movement that contributed to over-utilization of the RISC System/6000 CPU. There were strict requirements on utilization of the CPU resource. Memory data movement was a contributing factor for increased CPU demand, thereby increasing the response times observed by system users beyond acceptable limits.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 34% of the total text.

Performance Tuning of Memory Data Movement for the RISC System/6000
ADA Run-Time Environment

      The purpose of this performance tool was to determine the
amount of memory data movement generated by applications implemented
in the IBM ADA language for the RISC System/6000* platform.
Specifically, our ADA application exhibited signs of excessive data
movement that contributed to over-utilization of the RISC System/6000
CPU.  There were strict requirements on utilization of the CPU
resource.  Memory data movement was a contributing factor for
increased CPU demand, thereby increasing the response times observed
by system users beyond acceptable limits.

      By its very nature, the RS/6000 ADA compiler can generate
object code that requires significant data movement for even a single
line of source code.  This can occur when a programmer attempts to
move an Abstract Data Object (ADO) from one instance to another
(i.e., "A = B;" could represent a movement of a series of data
structures from one memory location to another).  If this code is
present in a loop located in an ADA module that requires a fast
response time, much of that ADA module's CPU time could be spent
moving data in memory, instead of accomplishing the mission critical
algorithms it was designed for.

      The approach used to determine where the bulk of data movement
was occurring was to modify the ADA run-time macro XMLMOV0.  This
macro is invoked by the ADA run-time environment whenever a data
movement operation is required by an ADA program on an RS/6000 CPU.
Since the RS/6000 instruction set has no general way of moving
strings of data from one memory location to another, this macro
determines the source address, the destination address, and the
amount of data that needs to be moved.  This process can be very CPU
expensive, even for the most powerful RS/6000 workstation models,
because it represents an intense workload for the CPU.  Two factors
will determine if XMLMOV0 represents a performance concern: how often
it is called, and how much data it must move on behalf of the ADA
application.

      Data Movement Analysis - In order to determine any ADA module's
contribution to the data movement workload, a method of capturing
statistics about data movement was conceived and implemented based on
the idea of altering the XMLMOV0 macro.  The alteration involved the
use of the AIX TRACE facility to capture and record the amount of
data being moved.  However, another concern was to determine which
specific ADA routine was calling the XMLMOV0 macro, the idea being to
pinpoint the ADA routine responsible for the most use of the XMLMOV0
macro.  Therefore, at least three objectives were created for the
modified XMLMOV0 routine:

1.  Capture the amount of data bytes being moved

2.  Determine which ADA procedures were responsible for the data
    movement

3.  Pinpoint the exact location of the calls to XMLMOV0.

      Objective (3) was partially ful...