A porcentagem de uso da CPU é a relação entre o tempo total em que a CPU estava ativa e o tempo decorrido do relógio na sua parede. Se você tentar comparar um tempo de CPU com outro tempo de CPU, isso não é porcentagem de uso. Não há nome para isso, é apenas a razão de um tempo de CPU para outro tempo de CPU.
Você já declarou que sabe como obter o tempo de CPU decorrido (tomando a diferença de tempo de CPU antes de & após seu período), portanto, basta dividir isso por tempo de relógio de parede.
cgroup=$(awk -F: '$2 == "cpu,cpuacct" { print $3 }' /proc/self/cgroup)
tstart=$(date +%s%N)
cstart=$(cat /sys/fs/cgroup/cpu/$cgroup/cpuacct.usage)
sleep 5
tstop=$(date +%s%N)
cstop=$(cat /sys/fs/cgroup/cpu/$cgroup/cpuacct.usage)
bc -l <<EOF
($cstop - $cstart) / ($tstop - $tstart) * 100
EOF
Se você quiser evitar a chamada para date
(e cat
), use algo como: read tstart _ < /proc/uptime
.