Uploaded image for project: 'Puppet Agent'
  1. Puppet Agent
  2. PA-2074

puppet-runtime Ruby should be compiled with USDT probes enabled where applicable

    XMLWordPrintable

Details

    • Night's Watch
    • 3
    • PR - 2019-03-20, PR - 2019-04-03, PR - 2019-04-17, PR - 2019-05-02, PR - 2019-05-15, PR - 2019-05-29
    • Not Needed
    • Needs Assessment

    Description

      Ruby can be built with support for User Defined Static Tracing probes via the --enable-dtrace configure option. These probes define attachment points where tools like DTrace and SystemTap can hook in and trace program execution — which is really handy for debugging all manner of performance issues and logic bugs.

      Ruby builds provided by the RedHat Software Collection have these probes enabled, we should consider doing the same unless there are major downsides to having them on.

      Current State

      The Ruby library provided by the Puppet Runtime has no USDT probes:

      # PE 2018.1.0
      # readelf -n /opt/puppetlabs/puppet/lib/libruby.so.2.4.3
       
      Notes at offset 0x000001c8 with length 0x00000024:
        Owner                 Data size	Description
        GNU                  0x00000014	NT_GNU_BUILD_ID (unique build ID bitstring)
          Build ID: 56702e75d367ba5ca95838eb3ccf50345cd4b1e4
      

      Desired State

      The Ruby library provided by the Puppet Runtime should have USDT probes similar to the RedHat SCL build:

      # CentOS 7
      # yum install centos-release-scl
      # yum install -y rh-ruby24-scl
       
      # readelf -n /opt/rh/rh-ruby24/root/lib64/libruby.so.2.4.0
       
      Notes at offset 0x000001c8 with length 0x00000024:
        Owner                 Data size	Description
        GNU                  0x00000014	NT_GNU_BUILD_ID (unique build ID bitstring)
          Build ID: bcd1f47c9ce91aaa1be49e490a13ae366e1d4b6b
       
      Notes at offset 0x00289978 with length 0x00000eb4:
        Owner                 Data size	Description
        stapsdt              0x00000046	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: array__create
          Location: 0x0000000000030402, Base: 0x00000000002387a5, Semaphore: 0x000000000048995c
          Arguments: -8@%rbp 8@%rax -4@12(%rsp)
        stapsdt              0x00000044	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: array__create
          Location: 0x0000000000030460, Base: 0x00000000002387a5, Semaphore: 0x000000000048995c
          Arguments: -4@$0 8@%rax -4@12(%rsp)
        stapsdt              0x00000040	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: raise
          Location: 0x000000000008d632, Base: 0x00000000002387a5, Semaphore: 0x0000000000489960
          Arguments: 8@%rax 8@8(%rsp) -4@60(%rsp)
        stapsdt              0x0000002d	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: gc__sweep__end
          Location: 0x00000000000a0bd8, Base: 0x00000000002387a5, Semaphore: 0x000000000048994a
          Arguments:
        stapsdt              0x0000002f	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: gc__sweep__begin
          Location: 0x00000000000a0bde, Base: 0x00000000002387a5, Semaphore: 0x000000000048994c
          Arguments:
        stapsdt              0x0000002e	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: gc__mark__begin
          Location: 0x00000000000a1b6b, Base: 0x00000000002387a5, Semaphore: 0x0000000000489950
          Arguments:
        stapsdt              0x0000002c	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: gc__mark__end
          Location: 0x00000000000a1bcf, Base: 0x00000000002387a5, Semaphore: 0x000000000048994e
          Arguments:
        stapsdt              0x00000043	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: hash__create
          Location: 0x00000000000a68c2, Base: 0x00000000002387a5, Semaphore: 0x000000000048995a
          Arguments: -4@$0 8@%rax -4@12(%rsp)
        stapsdt              0x00000043	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: load__entry
          Location: 0x00000000000c21c0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489964
          Arguments: 8@%rax 8@%rbp -4@12(%rsp)
        stapsdt              0x00000044	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: load__return
          Location: 0x00000000000c21e0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489962
          Arguments: 8@%rax 8@%rbp -4@12(%rsp)
        stapsdt              0x0000004a	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: require__entry
          Location: 0x00000000000c32b8, Base: 0x00000000002387a5, Semaphore: 0x000000000048996c
          Arguments: 8@%rax 8@24(%rsp) -4@72(%rsp)
        stapsdt              0x00000051	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: find__require__return
          Location: 0x00000000000c3606, Base: 0x00000000002387a5, Semaphore: 0x0000000000489966
          Arguments: 8@%rax 8@32(%rsp) -4@80(%rsp)
        stapsdt              0x0000004b	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: require__return
          Location: 0x00000000000c3686, Base: 0x00000000002387a5, Semaphore: 0x000000000048996a
          Arguments: 8@%rax 8@24(%rsp) -4@84(%rsp)
        stapsdt              0x00000050	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: find__require__entry
          Location: 0x00000000000c36d8, Base: 0x00000000002387a5, Semaphore: 0x0000000000489968
          Arguments: 8@%rax 8@24(%rsp) -4@76(%rsp)
        stapsdt              0x00000046	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: object__create
          Location: 0x00000000000dec46, Base: 0x00000000002387a5, Semaphore: 0x000000000048995e
          Arguments: 8@%rax 8@%r12 -4@12(%rsp)
        stapsdt              0x00000041	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: parse__end
          Location: 0x00000000000fc5d0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489952
          Arguments: 8@168(%rbx) -4@164(%rbx)
        stapsdt              0x00000043	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: parse__begin
          Location: 0x00000000000fc5d6, Base: 0x00000000002387a5, Semaphore: 0x0000000000489954
          Arguments: 8@168(%rbx) -4@164(%rbx)
        stapsdt              0x00000047	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: string__create
          Location: 0x000000000014efe3, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
          Arguments: -8@%rbp 8@%rax -4@12(%rsp)
        stapsdt              0x00000047	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: string__create
          Location: 0x000000000014f0e4, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
          Arguments: -8@%rbp 8@%rax -4@12(%rsp)
        stapsdt              0x00000045	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: string__create
          Location: 0x000000000014f150, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
          Arguments: -4@$0 8@%rax -4@12(%rsp)
        stapsdt              0x00000047	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: string__create
          Location: 0x0000000000155eef, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
          Arguments: -8@%rdx 8@%rax -4@12(%rsp)
        stapsdt              0x00000046	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: symbol__create
          Location: 0x0000000000168100, Base: 0x00000000002387a5, Semaphore: 0x0000000000489956
          Arguments: 8@%rdx 8@%rax -4@28(%rsp)
        stapsdt              0x00000046	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: symbol__create
          Location: 0x00000000001682e6, Base: 0x00000000002387a5, Semaphore: 0x0000000000489956
          Arguments: 8@%rdx 8@%rax -4@12(%rsp)
        stapsdt              0x0000004c	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: method__cache__clear
          Location: 0x00000000001933d1, Base: 0x00000000002387a5, Semaphore: 0x0000000000489948
          Arguments: 8@%rax 8@%r13 -4@12(%rsp)
        stapsdt              0x00000045	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: hash__create
          Location: 0x00000000001934d1, Base: 0x00000000002387a5, Semaphore: 0x000000000048995a
          Arguments: -8@%rdx 8@%rax -4@12(%rsp)
        stapsdt              0x0000005a	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__return
          Location: 0x0000000000193fe0, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
          Arguments: 8@48(%rsp) 8@56(%rsp) 8@64(%rsp) -4@72(%rsp)
        stapsdt              0x00000059	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__entry
          Location: 0x00000000001940b8, Base: 0x00000000002387a5, Semaphore: 0x0000000000489970
          Arguments: 8@48(%rsp) 8@56(%rsp) 8@64(%rsp) -4@72(%rsp)
        stapsdt              0x00000059	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: method__return
          Location: 0x0000000000194251, Base: 0x00000000002387a5, Semaphore: 0x0000000000489972
          Arguments: 8@16(%rsp) 8@24(%rsp) 8@32(%rsp) -4@40(%rsp)
        stapsdt              0x0000005a	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__return
          Location: 0x0000000000194348, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
          Arguments: 8@32(%rsp) 8@40(%rsp) 8@48(%rsp) -4@56(%rsp)
        stapsdt              0x00000049	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: hash__create
          Location: 0x000000000019cffb, Base: 0x00000000002387a5, Semaphore: 0x000000000048995a
          Arguments: 8@32(%rsp) 8@%rax -4@960(%rsp)
        stapsdt              0x0000005e	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__return
          Location: 0x000000000019d13d, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
          Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
        stapsdt              0x0000005d	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__entry
          Location: 0x000000000019d1b2, Base: 0x00000000002387a5, Semaphore: 0x0000000000489970
          Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
        stapsdt              0x0000005c	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: method__entry
          Location: 0x000000000019d1f0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489974
          Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
        stapsdt              0x0000005d	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: method__return
          Location: 0x000000000019d228, Base: 0x00000000002387a5, Semaphore: 0x0000000000489972
          Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
        stapsdt              0x0000005e	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__return
          Location: 0x000000000019dadd, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
          Arguments: 8@112(%rsp) 8@120(%rsp) 8@128(%rsp) -4@136(%rsp)
        stapsdt              0x00000059	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: method__return
          Location: 0x000000000019dccc, Base: 0x00000000002387a5, Semaphore: 0x0000000000489972
          Arguments: 8@16(%rsp) 8@24(%rsp) 8@32(%rsp) -4@40(%rsp)
        stapsdt              0x00000058	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: method__entry
          Location: 0x000000000019dd53, Base: 0x00000000002387a5, Semaphore: 0x0000000000489974
          Arguments: 8@16(%rsp) 8@24(%rsp) 8@32(%rsp) -4@40(%rsp)
        stapsdt              0x0000005a	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__return
          Location: 0x00000000001a27d6, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
          Arguments: 8@64(%rsp) 8@72(%rsp) 8@80(%rsp) -4@88(%rsp)
        stapsdt              0x00000059	NT_STAPSDT (SystemTap probe descriptors)
          Provider: ruby
          Name: cmethod__entry
          Location: 0x00000000001a28a5, Base: 0x00000000002387a5, Semaphore: 0x0000000000489970
          Arguments: 8@64(%rsp) 8@72(%rsp) 8@80(%rsp) -4@88(%rsp)
      

      Attachments

        Activity

          People

            sebastian.miclea Sebastian Miclea
            chuck Charlie Sharpsteen
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Zendesk Support