In 10.9 it was a simple function of on-CPU time and wakeups with each wakeup counted as 500µs of CPU time, in 10.10 a bunch of new counters were added (with machine-specific conversions to CPU time estimates) variables were added to the mix: whether the process was in "background" QoS, the number of disk read/writes, GPU usage and network activity (in packets#)
In 10.9 it was a simple function of on-CPU time and wakeups with each wakeup counted as 500µs of CPU time, in 10.10 a bunch of new counters were added (with machine-specific conversions to CPU time estimates) variables were added to the mix: whether the process was in "background" QoS, the number of disk read/writes, GPU usage and network activity (in packets#)