48
PmcTools: Whole-system, low-overhead performance measurement in FreeBSD Joseph Koshy FreeBSD Developer 18 April 2009 Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 1 / 48

PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

  • Upload
    jkoshy

  • View
    314

  • Download
    0

Embed Size (px)

DESCRIPTION

An overview of the PmcTools toolkit in FreeBSD, presented at ACM Bangalore. The presentation briefly touches upon: the motivations and goals of the project, the programming APIs, some aspects of the implementation and on possible future work.

Citation preview

Page 1: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools: Whole-system, low-overheadperformance measurement in FreeBSD

Joseph Koshy

FreeBSD Developer

18 April 2009

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 1 / 48

Page 2: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Outline

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 2 / 48

Page 3: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction

Goals Of This Talk

Introduce FreeBSD/PmcTools.Introduce BSD culture.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 3 / 48

Page 4: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction

About FreeBSD

http://www.freebsd.org/Popular among appliance makers, ISPs, web hosting providers:

Fast, stable, high-quality code, liberal license.

FreeBSD culture in one sentence: “Shut up and code”.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 4 / 48

Page 5: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction

About [email protected]

FreeBSD developer since 1998.Technical interests:

Performance analysis; the design of high performance software.Low power computing.Higher order, typed languages.Writing clean, well-designed code.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 5 / 48

Page 6: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction

The Three Big Questions in Performance Analysis

1 What is the system doing?2 Where in the code does the behaviour arise?3 What is to be done about it?

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 6 / 48

Page 7: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction

Question 1: What is the system doing?

System behaviour:Traditional UNIX tools: vmstat, iostat, top, systat, ktrace,truss.Counters under the sysctl hierarchy.Compile time options such as LOCK PROFILING.New tools like dtrace.

Machine behaviour:Modern CPUs have in-CPU hardware counters measuringhardware behaviour: bus utilization, cache operations, instructionsdecoded and executed, branch behaviour, floating point and vectoroperations, speculative execution, . . .Near zero overheads, good precision.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 7 / 48

Page 8: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction

Question 2: Which portion of the system isresponsible?

Which subsystems are involved?Where specifically in the code is the problem arising?System performance is a “global” property.

“Local” inspection of code not always sufficient.As a community we are still exploring the domain of performanceanalysis tools:

Which data to collect.Collecting it with low-overheads.Making sense of the information collected.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 8 / 48

Page 9: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction Introducing PmcTools

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 9 / 48

Page 10: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction Introducing PmcTools

PmcTools Project Goals

Have Fun!

Measurements

Low−overheads

FreeBSD Tier−1

Use in production

Architectures

Platform for

PmcTools

Whole−system

Interesting tools

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 10 / 48

Page 11: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction Introducing PmcTools

Performance Analysis: Conventional vs. PmcTools

Description Conventional PmcToolsNeed special binaries Yes NoDynamically loaded objects No YesProfiling scope Executable Process & SystemNeed restart Yes NoMeasurement overheads High LowProfiling tick Time Many optionsProfile inside critical sections No Yes (x86)Cross-architecture analysis No YesDistributed profiling No YesProduction use No Yes

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 11 / 48

Page 12: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Introduction Introducing PmcTools

Related open-source projects

Linux Many projects related to PMCs:Oprofile: http://oprofile.sourceforge.net/Perfmon: http://perfmon2.sourceforge.net/Perfctr: http://sourceforge.net/projects/perfctr/Rabbit: http://www.scl.ameslab.gov/Projects/Rabbit/

Solaris CPC(3) library.NetBSD A pmc(3) API.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 12 / 48

Page 13: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 13 / 48

Page 14: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

Overview: Architecture

libpmc

kernel

pro

cess

log

pro

cess

pro

cess

hwpmc

CP

U

CP

U

CP

U

CP

U

CP

U

CP

U

A platform to build tools that use PMC data.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 14 / 48

Page 15: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

Components

hwpmc kernel bitskernel changes (see later)

libpmc application APIpmccontrol management tool

pmcstat proof-of-concept applicationpmcannotate contributed tool

etc... others in the future

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 15 / 48

Page 16: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

PMC Scopes

#1

CPU 1 CPU 2 CPU 3

Process−scope PMC

System−scope PMC

#0

#2

#3

#4

CPU 0

1 process-scope PMC & 2 system-scope PMCs simultaneously active.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 16 / 48

Page 17: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

Counting vs. Sampling

System−scope,Process−scope,

Process−scope, System−scope,

Counting Counting

Sampling Sampling

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 17 / 48

Page 18: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

Using system-scope PMCs

pro

cess

kernel

pro

cess

Three system scope PMCs, on three CPUs.Measure behaviour of the system as a whole.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 18 / 48

Page 19: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Architectural Overview

Using process-scope PMCs

kernel

ow

ner

targ

et

2: attach

1:

allo

cate

A process-scope PMC is allocated & attached to a target process.Entire “row” of PMCs reserved across CPUs.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 19 / 48

Page 20: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools API

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 20 / 48

Page 21: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools API

API Overview

Categories:Administration (2).Convenience Functions (8).Initialization (1).Log file handling (3).PMC Management (10).Queries (7).Arch-specific functions (1).

32 functions documented in 15 manual pages. 10 manual pages forsupported hardware events.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 21 / 48

Page 22: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools API

Example: API Usage

read

start

attach

allocate

release

stop

pmc allocate() Allocate a PMC; returns a handle.pmc attach() Attach a PMC to a target process.pmc start() Start a PMC.pmc read() Read PMC values.pmc stop() Stop a PMC.pmc release() Release resources.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 22 / 48

Page 23: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Design Issues

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 23 / 48

Page 24: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Design Issues

PMCs Vary A Lot

AMD Athlon XP 4 PMCs, 48 bits wide.AMD Athlon64 4 PMCs, Different set of hardware events.Intel Pentium MMX 2 PMCs. 40 bits wide. Counting only.Intel Pentium Pro 2 PMCs, 40 bits for reads, 32 bits for writes.Intel Pentium IV 18 PMCs shared across logical CPUs. En-

tirely different programming model.Intel Core Number of PMCs and widths vary. Has

programmable & fixed-function PMCs.Intel Core/i7 As above, but also has per-package PMCs.

PMCs are closely tied to CPU micro-architecture.PMC capabilities, supported events, access methods,programming constraints can vary across CPU generations.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 24 / 48

Page 25: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Design Issues

API Design Issues

Issues:

Designing an extensible programming interface for application use.Allowing knowledgeable applications to make full use of hardware.

PmcTools philosophy:

Make simple things easy to do.Make complex things possible.

Current “UI” uses name=value pairs:

% pmcstat -p k8-bu-fill-request-l2-miss,\mask=dc-fill+ic-fill,usr

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 25 / 48

Page 26: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 26 / 48

Page 27: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

Conventional Statistical Profiling

Needs specially compiled binaries (cc -pg).Sampling runs off the clock tick.

Cannot profile inside kernel critical sections.

“In-place” record keeping.Call graph is approximated.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 27 / 48

Page 28: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

PmcTools’ Statistical Profiling

Sets up PMCs to interrupt the CPU on overflow.Uses an NMI to drive sampling (on x86):

Can profile inside kernel critical sections.Needs lock-free implementation techniques.

Separates record keeping from data collection.Captures the exact callchain at the point of the sample.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 28 / 48

Page 29: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

Profiling with NMIs

hwpmc helper

thread

lock−less ring

buffers

per−owner

log buffer

hardclock()

CPU 2 CPU 3

NMI

record sample

hwpmc_hook()

log file

trap()

#0

#1

#2

#3

CPU 0 CPU 1

machine dependent trap handler

HWPMC(4)

low level trap handler

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 29 / 48

Page 30: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

Profiling Workflow

System/application

pmcstat

hwpmc(4) logfile

gprof

gprof(1) data

under investigation

gprof(1) output

pmcstat

Uses gprof(1) to do user reports (currently):Needs to be redone: gprof(1) limitations.

Call chains are captured and used to generate call graphs.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 30 / 48

Page 31: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

Profiling of Shared Objects

rtld

0 0xFFFFFFFF

text

arguments

text data bss stackheap Kernelmmap

unmapped

da

ta

da

ta

da

ta

text

command line

Each executable object in the system gets its own gmon.out file:kernelkernel modulesexecutablesshared librariesrun time loader

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 31 / 48

Page 32: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Profiling

Remote Profiling

log data

console

analysis

measurement

system under

pmc configure log() takes a file descriptor.Can log to a disk file, a pipe, or to a network socket.Events in log file carry timestamps for disambiguation.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 32 / 48

Page 33: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Implementation

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 33 / 48

Page 34: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Implementation

Implementation Information

Module Commentssys/dev/hwpmc,sys/sys/pmc*.h

31K LoC, i386&amd64

lib/libpmc 3.3K LoCusr.sbin/* 5.4K LoCdocumentation 29 manual pages, 11K LoD

All public APIs have manual pages.All hardware events, and their modifiers are documented.The internal API between libpmc and hwpmc is also documented.

See also: “Beautiful Code Exists, If You Know Where To Look”, CACM,July 2008.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 34 / 48

Page 35: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Implementation

Impact on Base Kernel

Space Requirements 2 bits (P HWPMC, TDP CALLCHAIN). Uses freebits in existing flags words.

Kernel Changes Clock handling, kernel linker, MD code, processhandling, scheduler, VM (options HWPMC HOOKS).

Kernel Callbacks

hwpmc

scheduler

kernel linker

VM (mmap)

exec

low−level (assembler)

clock handling

trap()

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 35 / 48

Page 36: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

PmcTools Implementation

Portability

Application Portability High.Portability of libpmc Moderate. Requires a POSIX-like system.Adding support for new PMC hardware Moderate.Kernel bits Low.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 36 / 48

Page 37: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Status

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 37 / 48

Page 38: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Status

Current State

Proof-of-concept application pmcstat is the current “userinterface”.

Crufty.

Low overheads (design goal: 5%) and tunable.In production use. Being shipped on customer boxes by appliancevendors.Support load on the rise (esp. requests for support of newhardware).

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 38 / 48

Page 39: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Status

Support load

Volunteer project. Initial hardware bought from pocket, or on loan.Current hardware support:

12 combinations of {PMC hardware × 32/64 bit OS variants} × 9OS versions [FreeBSD 6.0 · · · 6.4, 7.0 · · · 7.2, 8.0] = 108combinations!Need a hardware lab to manage testing and bug reports.

Need an automated test suite that is run continuously.Also useful for detecting OS & application performance regressionsearly.

Email support load is on the rise:Rise in FreeBSD adoption.FreeBSD users and developers worldwide now chipping in withfeatures, bug fixes, offering tutorials and spreading the word.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 39 / 48

Page 40: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Future Projects

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 40 / 48

Page 41: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Future Projects

Profiling the Cloud

traffic

Control/Data

Analysis Console

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 41 / 48

Page 42: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Future Projects

Other project ideas

A graphical visualizer “console”.Enhance gprof, or write a report generator afresh.Link up with existing profile based optimization frameworks.Allow performance analysis of non-native architectures.Support non-x86 PMCs.Integrate PmcTools and DTrace.Port to other BSDs and/or OpenSolaris.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 42 / 48

Page 43: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Research Topics

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 43 / 48

Page 44: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Research Topics

Profile guided system layout

L1/L2/L3

Cache

ker

nel

applications

Lay out the whole system to help “hot” portions remain in cache.Would require an augmented toolchain(http://elftoolchain.sourceforge.net/) & enhancements tohwpmc(4).Useful for low end devices using direct-mapped caches.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 44 / 48

Page 45: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Research Topics

Detection of SMP data structure layout bugs

struct shared...char sh foo;int sh bar;char sh buzz;...

;

Would use a combination of static analysis & hwpmc(4) data.Detection of the poor cache line layout behaviour.

Cache line ping-ponging between CPUs.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 45 / 48

Page 46: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Status & Future Work Research Topics

Profiling for power use

What part of the system consumes power?Where in the code is power being spent?

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 46 / 48

Page 47: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Conclusion

1 IntroductionIntroducing PmcTools

2 PmcToolsArchitectural OverviewAPIDesign IssuesProfilingImplementation

3 Status & Future WorkStatusFuture ProjectsResearch Topics

4 Conclusion

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 47 / 48

Page 48: PmcTools: Whole-System, Low-Overhead Performance Measurement in FreeBSD

Conclusion

Talk Summary

FreeBSD/PmcTools was introduced.The design & implementation of PmcTools was looked at.Possible future development and research directions for theproject were touched upon.

Joseph Koshy (FreeBSD Developer) FreeBSD/PmcTools 18 April 2009 48 / 48