nighttrace user’s guide · 2019. 3. 12. · iii preface scope of manual this manual is a...

810
NightTrace User’s Guide Version 7.2 (RedHawk TM Linux ® ) 0898398-170 March 2011

Upload: others

Post on 05-Feb-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • NightTrace User’s GuideVersion 7.2

    (RedHawkTM Linux®)

    0898398-170 March 2011

  • Copyright 2011 by Concurrent Computer Corporation. All rights reserved. This publication or any part thereof is intended for use with Concurrentproducts by Concurrent personnel, customers, and end–users. It may not be reproduced in any form without the written permission of the pub-lisher.

    The information contained in this document is believed to be correct at the time of publication. It is subject to change without notice. Concurrent Computer Corporation makes no warranties, expressed or implied, concerning the information contained in this document.

    Concurrent Computer Corporation and its logo are registered trademarks of Concurrent Computer Corporation. All other Concurrent product names are trademarks of Concurrent while all other product names are trademarks or registered trademarks of their respective owners.

    Linux® is used pursuant to a sublicense from the Linux Mark Institute.

    NightStar’s integrated help system is based on Assistant, a QtTM utility. Qt is a trademark of Nokia Corporation.

  • Preface

    Scope of Manual

    This manual is a reference document and user’s guide for NightTraceTM - a graphical,interactive debugging and performance analysis tool.

    Structure of Manual

    The manual includes four major parts as shown below:

    • Event Logging and Capture – Chapters 2 through 6

    • Graphical Analysis – Chapters 7 through 17

    • Programmatic Analysis – Chapter 18

    • Reference – appendices and index

    Man page descriptions of programs, system calls, subroutines, and file formats appear inthe system manual pages.

    Syntax Notation

    The following notation is used throughout this guide:

    italic

    Books, reference cards, and items that the user must specify appear in italictype. Special terms and comments in code may also appear in italic.

    list bold

    User input appears in list bold type and must be entered exactly asshown. Names of directories, files, commands, options and man page refer-ences also appear in list bold type.

    list

    Operating system and program output such as prompts and messages and list-ings of files and programs appears in list type. Keywords also appear inlist type.

    window

    Keyboard sequences and window features such as push buttons, radio buttons,menu items, labels, and titles appear in window type.

    iii

  • NightTrace RT User’s Guide

    [ ]

    Brackets enclose command options and arguments that are optional. You donot type the brackets if you choose to specify such option or arguments.

    { }

    Braces enclose mutually exclusive choices separated by the pipe (|) character,where one choice must be selected. You do not type the braces or the pipecharacter with the choice.

    ...

    An ellipsis follows an item that can be repeated.

    iv

  • Contents

    Chapter 1 Introduction

    User Trace Point Placement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2Kernel Trace Point Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2Timestamps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3Information Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-4

    Chapter 2 Using the NightTrace Logging API

    Language-Specific Source Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2Ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3

    Inter-Process Communication and Library Routines . . . . . . . . . . . . . . . . . . . . . .2-5Understanding NightTrace Library Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6

    trace_begin, Trace.begin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7trace_event, Trace.event and their variants . . . . . . . . . . . . . . . . . . . . . . . . .2-13trace_enable, trace_disable, and their variants . . . . . . . . . . . . . . . . . . . . . . .2-20trace_flush, Trace.flush, trace_trigger, and Trace.trigger. . . . . . . . . . . . . . .2-24trace_set_thread_name, Trace.setThreadName . . . . . . . . . . . . . . . . . . . . . .2-26trace_close_thread, Trace.closeThread. . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-27trace_end, Trace.end. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-29trace_diag_mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-31trace_diag_func . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-32

    Disabling Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-33Threads and Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-33Compiling and Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-34

    C Compilation and Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-34Fortran Compilation and Linking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-34Ada Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-34Java Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-35

    Chapter 3 Capturing User Events with ntraceud

    The ntraceud Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-1ntraceud Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2The Default User Daemon Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2ntraceud Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-3Invoking ntraceud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-6

    Chapter 4 Capturing Kernel Events with ntracekd

    The ntracekd Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-1

    v

  • NightTrace RT User’s Guide

    ntracekd Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1ntracekd Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2ntracekd Invocations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5

    Chapter 5 Application Illumination

    Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2Illuminator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2NightLight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2Work Flow Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2Provided Illuminators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3Detail Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3

    The NightLight Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-12Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14

    Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16Navigation Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16Common Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18Select Programs with Debug Information . . . . . . . . . . . . . . . . . . . . . . . . . 5-19Define an Illuminator for each Program . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-21Select Predefined Illuminators for each Program . . . . . . . . . . . . . . . . . . . . 5-25Relink Illuminated Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-27Activate Illuminators in each Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-30Run Scripts to Launch Programs and NightTrace . . . . . . . . . . . . . . . . . . . 5-32

    Session Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-37The Application Illumination Root Item . . . . . . . . . . . . . . . . . . . . . . . . . . 5-38Select Code with Debug Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-39

    Context Menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-39Building Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-42

    Create, Customize, and Build Illuminators. . . . . . . . . . . . . . . . . . . . . . . . . 5-43Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-43Context Menu on Individual Illuminators . . . . . . . . . . . . . . . . . . . . . . 5-45

    Relink Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-47Context Menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-47Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-48Relink Command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-48Illuminators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-50

    Activation Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-52Settings For “main” Illuminator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-53Settings For Ordinary Illuminators . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-54Context Menu for an Illuminator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-54Context Menu for a Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-55Context Menu for an Activation Set . . . . . . . . . . . . . . . . . . . . . . . . . . 5-56

    Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-58New Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-58New Script from Activation Set (NightTrace in File Mode) . . . . . . . . 5-59New Script from Activation Set (NightTrace in Stream Mode),New Script from Activation Set (Launch Programs) . . . . . . . . . . . . . 5-60

    Console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-63Predefined Illuminators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-64

    Detail Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-64

    vi

  • Contents

    main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-64glibc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-64pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-65ccur_rt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-65cuda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-65

    Illuminator Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-66config.xml. . . . . . . . . . . . . . . . . . 5-66next_event.txt. . . . . . . . . . . . . . . . 5-66illuminator.h . . . . . . . . . . . . . . . . . . 5-66illuminator.map . . . . . . . . . . . . . . . . . 5-66illuminator_level.fmt . . . . . . . . . . . . . . . 5-66illuminator_level.o . . . . . . . . . . . . . . . . 5-66illuminator_level.list . . . . . . . . . . . . . . 5-67illuminator.o . . . . . . . . . . . . . . . . . . 5-67illuminator.vararg . . . . . . . . . . . . . . . 5-67

    NightLight Command Line Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-68Commands for Manipulating an Illuminator . . . . . . . . . . . . . . . . . . . . . . . .5-68

    nlight --create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-68nlight --populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-71nlight --build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-72nlight --report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-72

    Commands for Linking with Illuminators . . . . . . . . . . . . . . . . . . . . . . . . . .5-73nlight --gcc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-73nlight --g77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-74nlight --cf77. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-74nlight --ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-74

    Command for Activating and Deactivating Illuminators . . . . . . . . . . . . . . .5-74program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-74

    ! . . . . . . . . . . . . . . . . . . . . . . 5-74main[,options]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-74illuminator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-75level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-75Using NightTrace with Illuminators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-75

    Customizing an Illuminator with the Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-76Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-76Search Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-78Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-80

    Event IDs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-80Limit on Size of Aggregates Recorded . . . . . . . . . . . . . . . . . . . . . . . . .5-80Include Functions without Dwarf Debug Info . . . . . . . . . . . . . . . . . . .5-80Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-81Object Filenames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-83

    Detail Levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-85Variables to Record. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-87Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-90

    Create a Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-90Customize a Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-91Selecting Members of a Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-94

    Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-95Adding a Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-95Customizing a Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-95Adding a Function to a Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-98

    Customizing an Illuminator by Editing the config.xml File . . . . . . . . . . . . . . .5-100comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-100

    vii

  • NightTrace RT User’s Guide

    config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-100declare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-101defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-101exclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-102function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-102group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-103level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-104

    caller={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-105frame={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-105aggregate_limit=limit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-105args={yes|no}. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-105addr_args={yes|no} . . . . . . . . . . . . . . 5-106return_val={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-106addr_ret={yes|no}. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-106variables={yes|no}. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-106errno={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-106exclude={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-106

    options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-107event_ids=“N-[M]” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-107aggregate_limit=“limit” . . . . . . . . . . . . 5-107nodebug={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-107underscores={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-107std={yes|no} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-108iregex=“regex”, xregex=“regex” . . . . . . . . . 5-108filename=“filename” . . . . . . . . . . . . . . 5-108

    variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-108wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-109wrapper_file_scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-109wrapper_post. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-109wrapper_pre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-109wrapper_real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-110

    Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-112

    Chapter 6 Performance Tuning

    Preventing Trace Event Loss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1Daemon Scheduling Adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1Increasing Trace Buffer Size. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2Programmatic Flushing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3

    Conserving Disk Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3Conserving Memory and Accelerating ntrace . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3

    Chapter 7 Invoking NightTrace

    Command-line Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1Summary Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6

    Command-line Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10Trace Event Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11Event Map Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11Table Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14

    Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14String Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15Pre-Defined Strings Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17

    viii

  • Contents

    Format Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-20Session Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-24Trace Data Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-25

    Chapter 8 The NightTrace Main Window

    Menu Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-2File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-2View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-7Daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-14Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-15

    Export Profiles to NightTrace API Source File. . . . . . . . . . . . . . . . . . .8-17Timelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-19Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-27Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-29

    Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-30Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-33Panels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-35Preferences Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-39

    General Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-40Timeline Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-41Font Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-42

    NightStar Global Fonts Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-46Advanced Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-49

    Chapter 9 Daemons Panel

    Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-2Control Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-6Edit Daemon Definition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-8

    General Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-9Trace Buffer Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-11

    Trace Daemon Runtime Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-14Enabled Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-15

    Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-16Edit Triggers Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-17

    Streaming Memory Usage Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-18Streaming Memory Usage Control Dialog. . . . . . . . . . . . . . . . . . . . . . . . . .9-19

    Chapter 10 Trace Segments Panel

    Trace Segments Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-1Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-2Control Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-4

    Chapter 11 Events Panel

    Textual Event Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-1Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11-3

    ix

  • NightTrace RT User’s Guide

    Chapter 12 Timeline Panels

    Default Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1Current Timeline Indicator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-2Global Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-2Interval Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-3Event Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-5Event Description Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-6Keyboard Traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-7Creating Timeline Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-8

    Event Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-10State Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-11Data Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-12

    Data Graph Options Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-13Drawing and Coloring Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-16Color Selection Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-17Standard Color Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-19

    Interval Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-20Global Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-20Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-20Data Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-20

    Chapter 13 Profiles Panels

    Profile Definition Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1Control Buttons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-9

    Summarizing Statistical Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11Condition Summaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11State Summaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11Summary Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11

    Summary Script Environment Variables . . . . . . . . . . . . . . . . . . . . . . 13-12Profile Status List Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-13

    Profile Status List Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-13Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-14

    Chapter 14 Event Descriptions Panel

    Chapter 15 Tags List Panel

    Creating Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1Tags List Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2Context Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2Control Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-3

    Chapter 16 Using Expressions

    Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-2Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-4

    Function Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-9

    x

  • Contents

    Function Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-11String Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-16

    strcmp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-16strncmp() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-17

    Trace Event Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-18id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-20arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-21arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-22arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-23arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-24arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-25blk_arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-26blk_arg_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-27blk_arg_char() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-28blk_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-29blk_arg_flt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-30blk_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-31blk_arg_long_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-32blk_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-33blk_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-34blk_arg_long_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-35blk_arg_short() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-36blk_arg_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-37blk_arg_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-38blk_arg_uchar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-39blk_arg_uint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-40blk_arg_ulong_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-41blk_arg_ushort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-42num_args() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-43pid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-44thread_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-45task_id(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-46tid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-47cpu() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-48offset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-49time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-50node_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-51pid_table_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-52tid_table_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-53node_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-54process_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-55task_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-56thread_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-57Multi-Event Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-58

    event_gap(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-58event_matches() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-59

    State Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-60Start Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-60

    start_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-62start_arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-63start_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-64start_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-65start_arg_long_dbl(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-66start_arg_long_long(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-67

    xi

  • NightTrace RT User’s Guide

    start_blk_arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-68start_blk_arg_bits(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-69start_blk_arg_char() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-70start_blk_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-71start_blk_arg_flt(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-72start_blk_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-73start_blk_arg_long_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-74start_blk_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-75start_blk_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-76start_blk_arg_long_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-77start_blk_arg_short() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-78start_blk_arg_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-79start_blk_arg_ubits(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-80start_blk_arg_uchar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-81start_blk_arg_uint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-82start_blk_arg_ulong_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-83start_blk_arg_ushort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-84start_num_args(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-85start_pid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-86start_thread_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-87start_task_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-88start_tid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-89start_cpu(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-90start_offset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-91start_time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-92start_node_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-93start_pid_table_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-94start_tid_table_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-95start_node_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-96

    End Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-97end_id(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-99end_arg(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-100end_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-101end_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-102end_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-103end_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-104end_blk_arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-105end_blk_arg_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-106end_blk_arg_char(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-107end_blk_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-108end_blk_arg_flt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-109end_blk_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-110end_blk_arg_long_bits(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-111end_blk_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-112end_blk_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-113end_blk_arg_long_ubits(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-114end_blk_arg_short() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-115end_blk_arg_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-116end_blk_arg_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-117end_blk_arg_uchar(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-118end_blk_arg_uint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-119end_blk_arg_ulong_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-120end_blk_arg_ushort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-121end_num_args() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-122

    xii

  • Contents

    end_pid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-123end_thread_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-124end_task_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-125end_tid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-126end_cpu() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-127end_offset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-128end_time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-129end_node_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-130end_pid_table_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-131end_tid_table_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-132end_node_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-133

    Multi-State Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-134state_gap() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-134state_dur() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-135state_matches(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-136state_status(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-137

    Offset Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-138offset_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-140offset_arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-141offset_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-142offset_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-143offset_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-144offset_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-145offset_blk_arg() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-146offset_blk_arg_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-147offset_blk_arg_char() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-148offset_blk_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-149offset_blk_arg_flt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-150offset_blk_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-151offset_blk_arg_long_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-152offset_blk_arg_long_dbl(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-153offset_blk_arg_long_long(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-154offset_blk_arg_long_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-155offset_blk_arg_short() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-156offset_blk_arg_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-157offset_blk_arg_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-158offset_blk_arg_uchar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-159offset_blk_arg_uint(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-160offset_blk_arg_ulong_long(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-161offset_blk_arg_ushort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-162offset_num_args() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-163offset_pid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-164offset_thread_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-165offset_task_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-166offset_tid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-167offset_cpu() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-168offset_time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-169offset_node_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-170offset_pid_table_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-171offset_tid_table_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-172offset_node_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-173offset_process_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-174offset_task_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-175offset_thread_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16-176

    xiii

  • NightTrace RT User’s Guide

    Summary Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-177min() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-177max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-178avg(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-179sum() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-180min_offset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-181max_offset(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-182summary_matches(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-183

    Format and Table Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-184get_string(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-184get_item(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-186get_format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-188format() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-190lookup_pc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-191

    Profile References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-193

    Chapter 17 Kernel Tracing

    Primary Kernel Trace Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1Context Switch Trace Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2Interrupt Trace Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2Exception Trace Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-3Syscall Trace Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-4Kernel Work Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-5

    Additional Kernel Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-7Logging Custom Kernel Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-8

    From User Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-9From Kernel Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-9Retrieving Custom Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-10

    Viewing Kernel Trace Event Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11Kernel Timelines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-12

    Node and CPU Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-13Context Switch Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-13Interrupt Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-14Exception Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-14System Call Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-15Process Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-16Kernel Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-16Color Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-17

    Kernel String Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-17

    Chapter 18 Using the NightTrace Analysis API

    NightTrace Analysis Application Programming Interface . . . . . . . . . . . . . . . . 18-1Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2

    tr_arg_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2tr_cb_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-3tr_cond_cb_func_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-3tr_cond_func_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4tr_cond_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4tr_dir_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4tr_offset_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4tr_state_action_t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-5

    xiv

  • Contents

    tr_state_cb_func_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-5tr_state_info_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-6tr_state_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-7tr_stream_event_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-7tr_stream_func_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-7tr_string_node_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-7tr_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-8

    Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-9API Initialization and Destruction. . . . . . . . . . . . . . . . . . . . . . . . . . . .18-14

    tr_init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-14tr_destroy(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-14

    Error Detection, Collection, and Reporting . . . . . . . . . . . . . . . . . . . .18-16tr_error_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-16tr_error_check() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-17

    Input Specification and Streaming Control . . . . . . . . . . . . . . . . . . . . .18-18tr_open_file() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-18tr_open_stream() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-19tr_close() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-20tr_stream_notify() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-21tr_stream_read() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-22tr_stream_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-23tr_free() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-24

    Event Offset Positioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-25tr_next_event() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-25tr_next_event_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-26tr_prev_event(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-26tr_prev_event_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-27tr_search() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-28tr_seek() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-29

    Basic Event Attribute Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-30tr_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-32tr_id_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-32tr_time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-33tr_time_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-34tr_nargs() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-35tr_nargs_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-35tr_arg_int() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-36tr_arg_int_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-37tr_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-38tr_arg_dbl_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-38tr_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-39tr_arg_long_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-40tr_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-41tr_arg_long_dbl_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-41tr_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-42tr_arg_long_long_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-43tr_arg_int_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-44tr_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-45tr_arg_dbl_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-45tr_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-46tr_arg_long_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-47tr_arg_long_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-48tr_arg_long_dbl_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-48tr_arg_long_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-49

    xv

  • NightTrace RT User’s Guide

    tr_argtype() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-50tr_argtype_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-51tr_blk_arg(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-51tr_blk_arg_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-52tr_blk_arg_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-53tr_blk_arg_bits_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-54tr_blk_arg_char() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-55tr_blk_arg_char_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-55tr_blk_arg_dbl() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-56tr_blk_arg_dbl_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-57tr_blk_arg_flt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-58tr_blk_arg_flt_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-58tr_blk_arg_long() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-59tr_blk_arg_long_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-60tr_blk_arg_long_bits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-61tr_blk_arg_long_bits_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-62tr_blk_arg_long_dbl(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-63tr_blk_arg_long_dbl_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-63tr_blk_arg_long_long(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-64tr_blk_arg_long_long_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-65tr_blk_arg_long_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-66tr_blk_arg_long_ubits_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-67tr_blk_arg_short(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-68tr_blk_arg_short_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-68tr_blk_arg_string() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-69tr_blk_arg_string_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-70tr_blk_arg_ubits() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-71tr_blk_arg_ubits_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-72tr_blk_arg_uchar() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-73tr_blk_arg_uchar_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-74tr_blk_arg_ushort(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-75tr_blk_arg_ushort_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-75tr_pid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-76tr_pid_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-77tr_tid(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-78tr_tid_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-78tr_thread_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-79tr_thread_id_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-80tr_task_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-81tr_task_id_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-81tr_cpu() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-82tr_cpu_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-83tr_node() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-84tr_node_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-84tr_process_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-85tr_process_name_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-86tr_task_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-86tr_task_name_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-87tr_thread_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-88tr_thread_name_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-88

    Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-90tr_cond_create() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-91tr_cond_reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-92tr_cond_find(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-92

    xvi

  • Contents

    tr_cond_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-93tr_cond_id_range(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-94tr_cond_id_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-95tr_cond_cpu() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-96tr_cond_cpu_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-97tr_cond_pid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-98tr_cond_pid_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-99tr_cond_pid_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-100tr_cond_tid(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-101tr_cond_tid_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-102tr_cond_tid_clear(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-103tr_cond_node() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-104tr_cond_node_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-105tr_cond_func_or() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-106tr_cond_func_and() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-108tr_cond_func_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-110tr_cond_expr_and() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-111tr_cond_expr_or() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-112tr_cond_not() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-113tr_cond_or() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-114tr_cond_and() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-115tr_cond_copy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-116tr_cond_name() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-118tr_cond_satisfy() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-118tr_cond_satisfy_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-119tr_cond_register(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-120tr_cond_offset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-121

    State-oriented Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-122tr_state_create() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-122tr_state_find(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-123tr_state_name(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-124tr_state_start_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-125tr_state_start_id_range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-126tr_state_start_id_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-127tr_state_end_id() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-127tr_state_end_id_range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-128tr_state_end_id_clear(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-129tr_state_start_cond(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-130tr_state_start_cond_clear(). . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-131tr_state_end_cond() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-131tr_state_end_cond_clear() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-132tr_activate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-133tr_state_info(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-134tr_state_info_(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-135tr_state_active() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-136tr_state_active_() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-137

    Output Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-138tr_copy_input(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-138tr_copy_input_range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-139

    String Table Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-140tr_get_string(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-140tr_get_item(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-141tr_create_table() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-142tr_append_table() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18-143

    xvii

  • NightTrace RT User’s Guide

    Callback Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-145tr_iterate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-145tr_halt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-146tr_cancel_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-146tr_cond_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-147tr_state_cb() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-148

    Appendix A NightStar Licensing

    License Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1License Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2License Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2License Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3Firewall Configuration for Floating Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3License Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-4

    Appendix B Kernel Dependencies

    Advantages for NightView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1Advantages for NightTrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1Advantages for NightProbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2Advantages for NightTune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2Frequency Based Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3

    Appendix C Privileged Access

    Capabilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1

    Appendix D NightTrace Logging API Examples

    Single Threaded C Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-1Multi-Threaded C++ Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-3Fortran Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-6Simple Java Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-6Multi-Threaded Java Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-8Rare Occurrence Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-9

    Appendix E NightTrace Analysis API Examples

    list. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-2list.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-2

    search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-4search.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-4

    watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-6watchdog.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-6

    ptime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-9ptime.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-10

    browse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-12browse.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-12

    detect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-23detect.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-24

    xviii

  • Contents

    Appendix F NightTrace Application Illumination Examples

    Illuminating Some Object Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-1Illuminating A Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-5Illuminating An Entire Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-6Illuminating A C++ Class -- Excluding Some Functions . . . . . . . . . . . . . . . . . . F-7Illuminating An API -- Libraries Without Source or Debug Info . . . . . . . . . . . . F-9Customizing an Illuminator -- Logging Extra Information . . . . . . . . . . . . . . . . .F-11Tutorial Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-13

    main.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-13math.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-13work.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-14classy.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-14api.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-15

    Appendix G Answers to Common Questions

    Appendix H Glossary

    Index

    Illustrations

    Figure 2-1. Inter-Process Communication and Library Routines. . . . . . . . . . . . .2-4Figure 8-1. NightTrace Main Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-1Figure 8-2. File Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-2Figure 8-3. View Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-6Figure 8-4. Toolbars Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-7Figure 8-5. Daemons Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-8Figure 8-6. Search Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9Figure 8-7. Summary Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-11Figure 8-8. Profiles Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-13Figure 8-9. Export Profiles Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-14Figure 8-10. Timelines Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-17Figure 8-11. Default User Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-18Figure 8-12. Create Custom Kernel Timeline Dialog . . . . . . . . . . . . . . . . . . . .8-19Figure 8-13. Tools Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-20Figure 8-14. Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-22Figure 8-15. Tab Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-26Figure 8-16. Rename Page Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-26Figure 8-17. Move Page Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-27Figure 8-18. Page with Profile Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-28Figure 8-19. Panel Detaches from Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-29Figure 8-20. Panel Movement in Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-30Figure 8-21. Profile Status List Panel on Top of Profile Definition Panel . . . .8-31Figure 8-22. Event Descriptions Panel added to Page . . . . . . . . . . . . . . . . . . . .8-32Figure 8-23. Panel in Motion Creating Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-33Figure 9-1. Daemons Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-1Figure 9-2. Daemons Panel Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-2Figure 9-3. Import Daemon Definitions Dialog . . . . . . . . . . . . . . . . . . . . . . . . .9-3Figure 9-4. Attach to Running Daemons Dialog . . . . . . . . . . . . . . . . . . . . . . . . .9-4

    xix

  • NightTrace RT User’s Guide

    Figure 9-5. Edit Triggers Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-6Figure 9-6. Add Triggers Entry Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-7Figure 9-7. Edit Daemon Definition Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10Figure 10-1. Trace Segments Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1Figure 10-2. Trace Segment Panel Context Menu . . . . . . . . . . . . . . . . . . . . . . 10-2Figure 10-3. Trace Data Segment Properties Description Dialog . . . . . . . . . . 10-3Figure 11-1. Events Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1Figure 11-2. Events Panel Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-3Figure 11-3. Search Events for Text Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-4Figure 11-4. Edit Event Description Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . 11-6Figure 12-1. Default User Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1Figure 12-2. Global Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-2Figure 12-3. Interval Ruler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-3Figure 12-4. Event Graph with Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-5Figure 12-5. Event Description Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-6Figure 12-6. Timeline Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-8Figure 12-7. Timeline Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-9Figure 12-8. Edit Event Graph Profile Dialog . . . . . . . . . . . . . . . . . . . . . . . . 12-10Figure 12-9. Edit State Graph Profile Dialog . . . . . . . . . . . . . . . . . . . . . . . . . 12-11Figure 12-10. Edit Data Graph Profile Dialog . . . . . . . . . . . . . . . . . . . . . . . . 12-12Figure 12-11. Edit Data Box Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-14Figure 13-1. Profile Definition Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2Figure 13-2. Profile Status List Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12Figure 13-3. Profile Status List Panel Context Menu . . . . . . . . . . . . . . . . . . 13-13Figure 14-1. Event Descriptions Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-1Figure 14-2. Event Description Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2Figure 15-1. Tags List Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1Figure 15-2. Tags List Panel Context Menu . . . . . . . . . . . . . . . . . . . . . . . . . . 15-3Figure 16-1. Function Terminology Illustrated . . . . . . . . . . . . . . . . . . . . . . . 16-12Figure 16-2. States and Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-12Figure 17-1. Sample Kernel timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-10Figure 17-2. Node and CPU Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11Figure 17-3. Context Switch Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11Figure 17-4. Interrupt Box and Interrupt Graph . . . . . . . . . . . . . . . . . . . . . . . 17-12Figure 17-5. Exception Box and Exception Graph . . . . . . . . . . . . . . . . . . . . . 17-12Figure 17-6. System Call Box and System Call Graph. . . . . . . . . . . . . . . . . . 17-13Figure 17-7. Process Information Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-14Figure 17-8. Kernel Events Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-14Figure 17-9. Color Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-15Figure B-1. Automatically Generated Data Display Page . . . . . . . . . . . . . . . . . C-5

    Tables

    Table 3-1. NightTrace Configuration Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3Table 5-1. Character Entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15Table 5-2. System Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-19Table 12-1. Timeline Keyboard Traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-7Table 16-1. Time Units and Constant Suffixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-3Table 16-1. NightTrace Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-5Table 17-1. PROCESS Event Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-6Table 17-2. NETWORK Kernel Event Sub-ID Codes . . . . . . . . . . . . . . . . . . . . . . . 17-6Table 17-3. MEMORY Kernel Event Sub-ID Codes . . . . . . . . . . . . . . . . . . . . . . . . 17-7

    xx

  • Contents

    xxi

  • NightTrace RT User’s Guide

    xxii

  • 1Chapter 1Introduction

    111

    NightTrace is a member of the NightStarTM family of tools. NightTrace provides an inter-active debugging and performance analysis tool, trace data collection daemons, and twoApplication Programming Interfaces (APIs) allowing user applications to log data valuesas well as analyze data collected from user or kernel daemons. NightTrace allows you tographically display information about important events in your application and the kernel,including event occurrences, timings, and data values. NightTrace consists of the follow-ing parts:

    ntrace

    a graphical tool that controls daemon sessions and presents user and kerneltrace events for interactive analysis

    ntraceud

    a daemon program that copies user applications’ trace events from sharedmemory to trace event files

    ntracekd

    a daemon program that copies operating system kernel trace events from ker-nel memory to trace event files

    NightTrace Logging API

    libraries and include files for use in user applications that log trace events toshared memory

    NightTrace Analysis API

    libraries and include files for use in user applications that want to analyze datacollected from user or kernel daemons

    illuminator

    a command line tool for generating code to log trace events at subroutine entryand return points

    illuminate

    a command line tool for turning on and off the code generated by the illu-minator tool

    NightTrace operates in conjunction with other members of the NightStar RT family.NightView, a multi-process and multi-thread application debugger, provides for dynamicinsertion of trace points in programs being debugged. The NightProbe data recording util-ity allows sampled data to be passed directly to NightTrace for graphic or textual display.

    NightTrace uses the NightStar License Manager (NSLM) to control access to the

    1-1

  • NightTrace RT User’s Guide

    NightStar tools. See “NightStar Licensing” on page A-1 for more information.

    IMPORTANT

    Kernel tracing is only supported on some operating system distri-butions. See “Kernel Dependencies” on page B-1 for more infor-mation.

    User Trace Point Placement 1

    A user trace point is a place of interest in application source code. At each user tracepoint, you make your application log some user-specified information. This logged infor-mation is collectively called a trace event. Each trace event has a user-defined trace eventID number and optional user-supplied arguments.

    Some typical user trace-point locations include:

    • Suspected bug locations

    • Process, subprogram, or loop entry and exit points

    • Timing points

    • Synchronization points for multi-process interaction

    • Endpoints of atomic operations

    The Application Illumination facility can be used to automatically generate user tracepoints for function entry and return. These trace events can include return address, param-eter values, return values, etc. as arguments.

    In addition to the user-supplied information, trace events automatically contain informa-tion identifying the process ID of the program generating the trace event. Formulti-threaded applications, the thread ID of the specific thread generating the trace isrecorded.

    Kernel Trace Point Placement 1

    Operating system distributions which support NightTtrace kernel tracing build their traceand debug kernels with trace points inserted at various points throughout the kernel sourcecode. These trace point provide information relating to:

    • System call entry and exit

    • Interrupt entry and exit

    • Exception entry and exit

    • Kernel service routines

    1-2

  • Introduction

    • Process creation, termination, and signalling

    • Network activity

    Analysis of kernel trace events can provide significant insight into the operation of thesystem and interactions between user applications. In addition to graphical displays,NightTrace provides textual description of kernel trace events which reveal useful infor-mation even for those not familiar with kernel programming.

    For kernel programmers, additional custom trace events can be logged with simple kernelutility routines which can be inserted into the kernel source or in kernel module sourceroutines.

    Timestamps 1

    Each trace event is tagged with a timestamp with sub-microsecond precision. This allowsyou to view and comprehend complex interactions between multiple processes and theoperating system, executing on single or multiple CPU systems.

    By default, an architecture-specific timing source is utilized. For Intel and AMD64, theIntel Time Stamp Counter (TSC register) is used.

    If your operating system supports the Real-Time Clock and Interrupt Module (RCIM),that clock can be also used as a timestamp source.

    The RCIM is a hardware module available from Concurrent Computer Corpration whichprovides a variety of clocks and interrupt sources, including two high-resolution timerswhich may be synchronized between multiple systems. Use of the RCIM timing sourceby NightTrace is advantageous when gathering data from multiple systems simulta-neously. NightTrace can then present a synchronized view of user and kernel activity onmultiple systems from a single session.

    For more information about the RCIM, please see the clock_synchronize(1M),rcim(7), rcimconfig(1M), and sync_clock(7) man pages.

    Languages 1

    The application programming interface for logging trace events is provided in C and For-tran for use with the following compilers:

    • Concurrent Ada

    • GNU C/C++

    • GNU Fortran

    • Intel C/C++

    • Intel Fortran

    1-3

  • NightT