Sindbad~EG File Manager
#!/usr/bin/stap
probe perf.sw.cpu_clock!, timer.profile {
// NB: To avoid contention on SMP machines, no global scalars/arrays used,
// only contention-free statistics aggregates.
tid=tid(); e=execname()
if (!user_mode())
kticks[e,tid] <<< 1
else
uticks[e,tid] <<< 1
ticks <<< 1
tids[e,tid] <<< 1
}
global uticks%, kticks%, ticks
global tids%
probe timer.s(5), end {
allticks = @count(ticks)
printf ("%16s %5s %7s %7s (of %d ticks)\n",
"comm", "tid", "%user", "%kernel", allticks)
foreach ([e,tid] in tids- limit 20) {
// SystemTap only performs integer arithmetic.
// To avoid losing precision the decimal point is shifted
// to the right four places (*100000). Think of this as
// the original result value x.xxyy becoming xxxyy.0.
// The integer percentage xxx is obtained
// by dividing by 100 and the fractional percentage
// is obtained with a modulo 100 operation.
uscaled = @count(uticks[e,tid])*10000/allticks
kscaled = @count(kticks[e,tid])*10000/allticks
printf ("%16s %5d %3d.%02d%% %3d.%02d%%\n",
e, tid, uscaled/100, uscaled%100, kscaled/100, kscaled%100)
}
printf("\n")
delete uticks
delete kticks
delete ticks
delete tids
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists