IISWC-2006

October 25-27, 2006

Hilton Hotel

San Jose, California, USA

(Immediately following ASPLOS XII at same venue)


TUTORIALS / WORKSHOP

 

October 25

 (Wednesday)

Tutorial I  (Morning session)

Title: Software Performance Tuning with the Apple CHUD Tools

  

  -Time: 8:00 am - 12:00 pm 

  -Presenters: Rick Altherr, Ryan Du Bois, Lance Hammond, and Eric Miller

  -Contact: Lance Hammond ( iiswc at mavam.com )

  -Location: Hilton Hotel, Room F1 - San Jose CA

Tutorial II  (Afternoon session)

Title: Building Workload Characterization Tools with Valgrind

 

  -Time: 1:30 am - 5:30 pm

  -Presenters: Nicholas Nethercote, Robert Walsh and Jeremy Fitzhardinge

  -Contact: Nicholas Nethercote ( njn at csse.unimelb.edu.au )

  -Location: Hilton Hotel, Room F1 - San Jose CA

 

 

          Abstract:

 

    In recent years, many tools have been created to allow software engineers to analyze the execution of their code. While tools such as gprof often work well, most are not integrated very well with each other or the rest of the development environment, and interpreting the data that they provide can be a challenge. Because Apple's MacOS X is based on UNIX, most open source performance analysis tools can be used. However, we have also integrated several key performance tools together and added graphical data visualization to produce the CHUD toolset (Available for at http://developer.apple.com/tools/download/).

    With the CHUD tools, programmers can examine the performance of their code using a set of integrated tools that can perform most common performance-measurement tasks, including:

 

  -- Traces of function call behavior (like gprof)

  -- Sampled measurements of program execution timing

  -- Traces of software events, such as system calls

  -- Hardware event counter measurements

 

     Moreover, instead of just presenting a few key figures from these measurements in a brief report, the CHUD tools present their results in several textual *and* graphical formats, with integrated hyperlinks to related assembly and source code, so that programmers can easily examine both how their programs work on a large-scale level or zoom in and look at individual program phases in several different ways.

    This tutorial is targeted primarily at students and software engineers who work on UNIX-based systems and want to expand the repertoire of tools that they can use to analyze and improve the performance of their code. However, the material should also be useful to educators who teach performance-oriented programming techniques, as the graphical nature of Shark's output makes it easy to demonstrate program behaviors in an eye-catching manner.

 

Bios:

 

Rick Altherr holds a B.S. in Computer Science from the University of Cincinnati where he focused on computer architecture and compiler optimization. He currently works at Apple Computer, as part of the Architecture and Performance Group, as a performance analyst investigating system performance on server and workstation platforms. He also is one of the primary developers for the CHUD tools.

 

Ryan Du Bois (http://red0x.no-ip.com) has a B.S. in Computer Engineering from California Polytechnic State University at San Luis Obispo, where he concentrated on Operating Systems and Networks. Currently, he works in Apple's Architecture and Performance Group, furthering the development and maintenance of the CHUD Tools.

 

Lance Hammond (http://www.mavam.com/lance/) has a PhD in Electrical Engineering from Stanford University, where he designed the Hydra multi-core microprocessor and examined the use of speculative threads and transactions on Hydra and similar multiprocessor systems. He now works at Apple in the Architecture and Performance Group, analyzing the potential performance problems posed by future processors in Macintosh computers and helping to create CHUD tools to allow programmers to overcome these limits.

 

Eric Miller has a B.S. in Computer Engineering Technology from Eastern Michigan University, and has been optimizing computer software and systems for twenty years. He developed industry leading simulation software Ford Motor Company and optimized many third party applications and system software at Silicon Graphics. Currently, he works at Apple in the Architecture and Performance Group to create easy to use, feature-rich CHUD tools to help developers maximize their applications' performance on the Mac platforms.

 

 

Abstract:

 

    Workload characterization relies heavily on robust and powerful tools to quickly and accurately gather and analyse large amounts of data about program executions. Valgrind is a dynamic binary instrumentation framework for building program analysis tools. Valgrind is best known for a tool, Memcheck, that finds memory errors common in C and C++ programs, but its ability to instrument every instruction and system call a program executes, and inspect every value a program manipulates, without slowing down program execution excessively, makes it an excellent platform for buildings tools suitable for workload characterization.

    In this tutorial, we introduce Valgrind, describing how you can use it to create powerful tools for doing profiling and trace collection, and to help characterize how workloads affect different machine aspects such as instruction set architecture, the memory hierarchy, and I/O. Valgrind provides powerful analysis tools without excessive slow-down, which allows very large workloads to be analysed easily.

    Valgrind is open-source (GPL) software, available on x86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux, and work is underway to support other platforms. Valgrind tools are regularly used by the developers of many software packages, such as Firefox, OpenOffice, KDE, GNOME, MySQL, Perl, Python, PHP, Samba, RenderMan, SAS, The GIMP, Unreal Tournament, Squid, plus many scientific applications.

 

Bios:

 

Nicholas Nethercote received his PhD in computer science from the University of Cambridge in 2004, spent one year as a postdoc at the University of Texas at Austin, and returned in 2006 to his native Melbourne to work as a Research Fellow for National ICT Australia. He currently works on the G12 project, helping create a software platform for solving large scale industrial combinatorial optimisation problems. He has also been, since 2002, a primary developer of Valgrind, a widely-used framework for building program analysis tools such as profilers and debuggers.

 

Robert Walsh has a degree in computer engineering from Trinity College, Dublin, Ireland. He has worked with Sun Microsystems, Siemens and others, on everything from microprocessor design to computer security. He is currently a Linux kernel engineer with QLogic Corporation. He has contributed numerous improvements to Valgrind over several years.