require 'pyroscope' puts "prestart #{Process.pid}" Pyroscope.configure do |config| config.app_name = "test.ruby.app{}" config.server_address = "http://localhost:4040/" config.log_level = "debug" end puts "start" puts "Pyroscope.test_logger 1" Pyroscope.test_logger Pyroscope.set_logger_level(:debug) puts "Pyroscope.test_logger 2" Pyroscope.test_logger def work(n) i = 0 while i < n i += 1 end end def job_0 work(rand()*1_000_000) end def job_1 work(rand()*2_000_000) end def sleep_job sleep(rand()*10) end def main_loop(b) puts "Starting main loop from: #{Process.pid}" Pyroscope.set_tag("pid", Process.pid.to_s) if b while true r = rand # if r > 0.9 # Pyroscope.set_logger_level(:test) # end if r < 0.1 sleep_job elsif r < 0.5 puts(" * test.ruby.app{job=0} #{Process.pid}") Pyroscope.set_tag("job", "0") if b job_0 Pyroscope.set_tag("job", "") if b else puts(" * test.ruby.app{job=1} #{Process.pid}") Pyroscope.set_tag("job", "1") if b job_1 Pyroscope.set_tag("job", "") if b end end end fork do puts "build_summary:" puts Pyroscope.build_summary # Pyroscope.configure do |config| # config.app_name = "test.ruby.app2{}" # config.server_address = "http://localhost:4040/" # end puts "Hello from fork pid: #{Process.pid}" sleep 15 main_loop(false) end # sleep 5 # if ARGV.first == "subprocess" # main_loop(true) # else # ssh_pid = Kernel.spawn("ruby", "test.rb", "subprocess") # puts "spawned #{ssh_pid}" # sleep(30) # puts "killing #{ssh_pid}" # Process.kill("TERM", ssh_pid) # end sleep 15 puts "The parent process just skips over it: #{Process.pid}" main_loop(true)