1#!/usr/local/bin/recon 2 3local ktrace = require 'ktrace' 4 5if arg[1] == '-h' then 6 io.stderr:write[[ 7usage: pirate [<trace-file-path>] 8 9pirate monitors for jetsam, on the high seas! 10]] 11 os.exit(0) 12end 13 14local sess = ktrace.Session.new(arg[1]) 15 16sess:add_callback_pair('MEMSTAT_jetsam', function (start, finish) 17 local pid = finish[2] 18 local reclaimed_kb = finish[4] / 1024 19 local duration_ns = sess:ns_from_abs(finish.abstime - start.abstime) 20 print(('%12f: %32s: duration = %gus, reclaimed = %gKB'):format( 21 sess:relns_from_abs(start.abstime) / 1e9, sess:procname_for_pid(pid), 22 duration_ns / 1000, reclaimed_kb)) 23end) 24 25local ok, err = sess:start() 26if not ok then 27 io.stderr:write('pirate: failed to start tracing: ', err, '\n') 28 os.exit(1) 29end 30