Hi,

I'm presenting here what I proposed in a previous e-mail:
process name based instrumentation.

This is an experimental patch whose purpose is to display what a given
puppet application is currently doing by changing its process name.
This requires adding some "instrument" blocks to some of the more time
consuming part of the puppet code base.

This patch set covers:
* individual network requests
* transaction evaluation (up to the individual resources)
* the configurer
* the compiler

To add a probe it's as easy as:

class MyClass
  include Puppet::Util::Instrumentation
  ...
  def long_running_method
    instrument("I'm doing some long work") do
      ... long work here ...
    end
  end
end

Since most process tools (like ps or top) have a long refresh time, it doesn't 
mean anything
to add "instrument" probes to short job (and it would certainly be a 
performance hog).

This is not a generic instrumentation system (which I hope I will be able to
provide in the coming weeks as a base for instrumentation discussion).

I hope this patch would be useful to diagnose "stuck" processes issues.

Time for you to send comments and flames :)

Brice

Brice Figureau (2):
  Process name instrumentation infrastructure
  Some high-level process name probes

 lib/puppet/configurer.rb                           |   24 ++-
 lib/puppet/network/http/handler.rb                 |    6 +-
 lib/puppet/parser/compiler.rb                      |    6 +-
 lib/puppet/transaction.rb                          |    9 +-
 lib/puppet/util/instrumentation.rb                 |   12 ++
 lib/puppet/util/instrumentation/process_name.rb    |  129 ++++++++++++
 .../unit/util/instrumentation/process_name_spec.rb |  207 ++++++++++++++++++++
 7 files changed, 383 insertions(+), 10 deletions(-)
 create mode 100644 lib/puppet/util/instrumentation.rb
 create mode 100644 lib/puppet/util/instrumentation/process_name.rb
 create mode 100644 spec/unit/util/instrumentation/process_name_spec.rb

-- 
1.7.2.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to