Systems Performance 2nd Ed.



BPF Performance Tools book

Recent posts:
Blog index
About
RSS

SF meetup 2013: The New Systems Performance

A brief talk on systems performance for the July 2013 meetup "A Midsummer Night's System" by Brendan Gregg.

Video: http://www.youtube.com/watch?v=P3SGzykDE4Q

Description: "This summarizes how systems performance has changed from the 1990's to today. This was the reason for writing a new book on systems performance, to provide a reference that is up to date, covering new tools, technologies, and methodologies."

next
prev
1/17
next
prev
2/17
next
prev
3/17
next
prev
4/17
next
prev
5/17
next
prev
6/17
next
prev
7/17
next
prev
8/17
next
prev
9/17
next
prev
10/17
next
prev
11/17
next
prev
12/17
next
prev
13/17
next
prev
14/17
next
prev
15/17
next
prev
16/17
next
prev
17/17

PDF: TheNewSystemsPerformance.pdf

Keywords (from pdftotext):

slide 1:
    The
    New
    Brendan Gregg
    (and many others)
    Prentice Hall, 2013
    A brief talk for: A Midsummer Night’s System, San Francisco, July 2013
    
    slide 2:
      Systems Performance
      • Analysis of apps to metal. Think LAMP not AMP.
      • An activity for everyone: from casual to full time.
      Operating System
      • The basis is
      the system
      Applications
      • The target is
      System Libraries
      System Call Interface
      • All software
      can cause
      performance
      problems
      Kernel
      everything
      VFS
      Sockets
      File Systems
      TCP/UDP
      Volume Managers
      Block Device Interface
      Ethernet
      Device Drivers
      Resource Controls
      Firmware
      Metal
      Scheduler
      Virtual
      Memory
      
      slide 3:
        1990’s Systems Performance
        * Proprietary Unix, closed source, static tools
        $ vmstat 1
        kthr
        memory
        r b w
        swap free re
        0 0 0 8475356 565176 2
        1 0 0 7983772 119164 0
        0 0 0 8046208 181600 0
        [...]
        page
        disk
        faults
        cpu
        mf pi po fr de sr cd cd s0 s5
        cs us sy id
        8 0 0 0 0 1 0 0 -0 13 378 101 142 0 0 99
        0 0 0 0 0 0 224 0 0 0 1175 5654 1196 1 15 84
        0 0 0 0 0 0 322 0 0 0 1473 6931 1360 1 7 92
        * Limited metrics and documentation
        * Some perf issues could not be solved
        * Analysis methodology constrained by tools
        * Perf experts used inference and experimentation
        * Literature is still around
        
        slide 4:
          2010’s Systems Performance
          • Open source (the norm)
          • Ultimate documentation
          • Dynamic tracing
          • Observe everything
          • Visualizations
          • Comprehend many metrics
          • Cloud computing
          • Resource controls
          • Methodologies
          • Where to begin, and steps to root cause
          
          slide 5:
            1990’s Operating System Internals
            • Studied in text books
            operating system
            applications
            libraries
            syscalls
            kernel
            
            slide 6:
              2010’s Operating System Internals
              • Study the source, observe in production with dynamic tracing
              operating system
              applications
              libraries
              syscalls
              kernel
              
              slide 7:
                1990’s Systems Observability
                For example, Solaris 9:
                apptrace
                Operating System
                netstat
                sotruss
                Applications
                DBs, all server types, ...
                System Libraries
                truss
                kstat
                lockstat
                Solaris Kernel
                Sockets
                File Systems
                TCP/UDP
                Volume Managers
                Block Device Interface
                Ethernet
                Scheduler
                Virtual
                Memory
                CPU
                Interconnect
                prstat
                vmstat
                Device Drivers
                I/O Bus
                iostat
                I/O Bridge
                I/O Controller
                Disk
                CPU
                Memory
                Bus
                DRAM
                snoop
                Expander Interconnect
                Network Controller
                Interface Transports
                Disk
                cpustat
                cputrack
                mpstat
                System Call Interface
                VFS
                Hardware
                Port
                Port
                netstat
                kstat
                Various:
                sar
                kstat
                
                slide 8:
                  2010’s Systems Observability
                  For example, SmartOS:
                  Operating System
                  Applications
                  DBs, all server types, ...
                  System Libraries
                  truss
                  kstat
                  VFS
                  Sockets
                  File Systems
                  TCP/UDP
                  Volume Managers
                  Block Device Interface
                  Ethernet
                  Hardware
                  plockstat
                  lockstat
                  Scheduler
                  Virtual
                  Memory
                  CPU
                  Interconnect
                  prstat
                  vmstat
                  Device Drivers
                  I/O Bus
                  iostat
                  I/O Bridge
                  I/O Controller
                  snoop
                  intrstat
                  Expander Interconnect
                  Network Controller
                  Interface Transports
                  Disk
                  Disk
                  cpustat
                  cputrack
                  mpstat
                  System Call Interface
                  illumos Kernel
                  dtrace
                  netstat
                  Port
                  Port
                  CPU
                  Memory
                  Bus
                  DRAM
                  nicstat
                  kstat
                  Various:
                  sar
                  kstat
                  
                  slide 9:
                    Dynamic Tracing turned on the light
                    • Example DTrace scripts from the DTraceToolkit, DTrace book, ...
                    cifs*.d, iscsi*.d :Services
                    nfsv3*.d, nfsv4*.d
                    ssh*.d, httpd*.d
                    Language Providers:
                    Databases:
                    fswho.d, fssnoop.d
                    sollife.d
                    solvfssnoop.d
                    dnlcsnoop.d
                    zfsslower.d
                    ziowait.d
                    ziostacks.d
                    spasync.d
                    metaslab_free.d
                    iosnoop, iotop
                    disklatency.d
                    satacmds.d
                    satalatency.d
                    scsicmds.d
                    scsilatency.d
                    sdretry.d, sdqueue.d
                    ide*.d, mpt*.d
                    hotuser, umutexmax.d, lib*.d
                    node*.d, erlang*.d, j*.d, js*.d
                    php*.d, pl*.d, py*.d, rb*.d, sh*.d
                    mysql*.d, postgres*.d, redis*.d, riak*.d
                    opensnoop, statsnoop
                    errinfo, dtruss, rwtop
                    rwsnoop, mmap.d, kill.d
                    shellsnoop, zonecalls.d
                    weblatency.d, fddist
                    Applications
                    DBs, all server types, ...
                    System Libraries
                    System Call Interface
                    VFS
                    Sockets
                    File Systems
                    TCP/UDP
                    Volume Managers
                    Block Device Interface
                    Ethernet
                    Device Drivers
                    Scheduler
                    priclass.d, pridist.d
                    cv_wakeup_slow.d
                    displat.d, capslat.d
                    Virtual
                    Memory
                    minfbypid.d
                    pgpginbypid.d
                    macops.d, ixgbecheck.d
                    ngesnoop.d, ngelink.d
                    soconnect.d, soaccept.d, soclose.d, socketio.d, so1stbyte.d
                    sotop.d, soerror.d, ipstat.d, ipio.d, ipproto.d, ipfbtsnoop.d
                    ipdropper.d, tcpstat.d, tcpaccept.d, tcpconnect.d, tcpioshort.d
                    tcpio.d, tcpbytes.d, tcpsize.d, tcpnmap.d, tcpconnlat.d, tcp1stbyte.d
                    tcpfbtwatch.d, tcpsnoop.d, tcpconnreqmaxq.d, tcprefused.d
                    tcpretranshosts.d, tcpretranssnoop.d, tcpsackretrans.d, tcpslowstart.d
                    tcptimewait.d, udpstat.d, udpio.d, icmpstat.d, icmpsnoop.d
                    
                    slide 10:
                      Actual DTrace Example
                      • Given an interesting kernel function, eg, ZFS SPA sync:
                      usr/src/uts/common/fs/zfs/spa.c:
                      * Sync the specified transaction group. New blocks may be dirtied as
                      * part of the process, so we iterate until it converges.
                      void
                      spa_sync(spa_t *spa, uint64_t txg)
                      dsl_pool_t *dp = spa->gt;spa_dsl_pool;
                      [...]
                      • Trace and print timestamp with latency:
                      # dtrace -n 'fbt::spa_sync:entry { self->gt;ts = timestamp; }
                      fbt::spa_sync:return /self->gt;ts/ { printf("%Y %d ms", walltimestamp,
                      (timestamp - self->gt;ts) / 1000000); self->gt;ts = 0; }'
                      dtrace: description 'fbt::spa_sync:entry ' matched 2 probes
                      CPU
                      FUNCTION:NAME
                      0 53625
                      spa_sync:return 2013 Jul 26 17:37:02 12 ms
                      0 53625
                      spa_sync:return 2013 Jul 26 17:37:08 726 ms
                      6 53625
                      spa_sync:return 2013 Jul 26 17:37:17 6913 ms
                      6 53625
                      spa_sync:return 2013 Jul 26 17:37:17 59 ms
                      
                      slide 11:
                        Linux Dynamic Tracing Example
                        • Two DTrace ports in progress (dtrace4linux, Oracle), and SystemTap
                        • perf has basic dynamic tracing (not programatic); eg:
                        # perf probe --add='tcp_sendmsg'
                        Add new event:
                        probe:tcp_sendmsg
                        (on tcp_sendmsg)
                        [...]
                        # perf record -e probe:tcp_sendmsg -aR -g sleep 5
                        [ perf record: Woken up 1 times to write data ]
                        [ perf record: Captured and wrote 0.091 MB perf.data (~3972 samples) ]
                        # perf report --stdio
                        [...]
                        # Overhead Command
                        Shared Object
                        Symbol
                        # ........ ....... ................. ...........
                        100.00%
                        sshd [kernel.kallsyms] [k] tcp_sendmsg
                        --- tcp_sendmsg
                        sock_aio_write
                        do_sync_write
                        active traced call stacks from
                        vfs_write
                        sys_write
                        arbitrary kernel locations!
                        system_call
                        __GI___libc_write
                        
                        slide 12:
                          1990’s Performance Visualizations
                          Text-based and line graphs
                          $ iostat -x 1
                          device
                          sd0
                          sd5
                          sd12
                          sd12
                          sd13
                          sd14
                          sd15
                          sd16
                          nfs6
                          [...]
                          r/s
                          extended device statistics
                          w/s
                          kr/s
                          kw/s wait actv
                          3.9 0.0 0.0
                          0.0 0.0 0.0
                          1.1 0.0 0.0
                          0.0 0.0 0.0
                          0.0 0.0 0.0
                          0.0 0.0 0.0
                          0.0 0.0 0.0
                          0.0 0.0 0.0
                          0.0 0.0 0.0
                          svc_t
                          
                          slide 13:
                            2010’s Performance Visualizations
                            • Utilization and latency heat maps, flame graphs
                            
                            slide 14:
                              Cloud Computing
                              • Performance may be limited by cloud resource controls, rather
                              than physical limits
                              • Hardware Virtualization complicates things – as a guest you
                              can’t analyze down to metal directly
                              • Hopefully the cloud provider provides an API for accessing
                              physical statistics, or does the analysis on your behalf
                              
                              slide 15:
                                1990’s Performance Methodologies
                                • Tools Method
                                • 1. For each vendor tool:
                                • 2. For each useful tool metric:
                                • 3. Look for problems
                                • Ad Hoc Checklist Method
                                • 10 recent issues: run A, if B, fix C
                                • Analysis constrained by tool metrics
                                
                                slide 16:
                                  2010’s Performance Methodologies
                                  • Documented in “Systems Performance”:
                                  • Workload Characterization
                                  • USE Method
                                  • Thread State Analysis Method
                                  • Drill-down Analysis
                                  • Latency Analysis
                                  • Event Tracing
                                  • ...
                                  
                                  slide 17:
                                    The New Systems Performance
                                    • Really understand how systems work
                                    • New observability, visualizations, methodologies
                                    • Older performance tools and
                                    approaches still used as appropriate
                                    • Great time to be working with
                                    systems, both enterprise and the
                                    cloud!