[Bug 235556] rctl(8) pcpu/cputime is too high
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Thu Feb 7 10:44:57 UTC 2019
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235556
--- Comment #2 from olevole at olevole.ru ---
RACCT pcpu metrics are incorrect when processes end quickly.
What i expect:
maximum value for 1-core process: 100
What i get:
100x256
It is not an artificial or abstract state. For example this behavior is easy to
see when working 'make config' for autotools with the launch of a lot of short
calls (e.g env BATCH=no make -C /usr/ports/misc/mc clean configure). This makes
it impossible to use any external billing based on RACCT.
How to reproduce ( we use cpuset here to create load on only one core. So we
should have pcpu=100 for jail assuming the jail does nothing else ):
1) Run jail1
2) Try to execute ant fast/light external command (e.g. /bin/ls ) in the loop.
For more convincing create a simple utility:
---
#include <stdio.h>
int main()
{
return 0;
}
---
Write execution loop and drop it into jail, e.g /root/run.sh:
---
#!/bin/sh
while [ 1 ]; do
/root/a.out > /dev/null
done
---
Run inside jail this script via cpuset:
cpuset -c -l 0 /bin/sh /root/run.sh
After this we can see on the 'top -P' something like:
---
182 processes: 2 running, 180 sleeping
CPU 0: 34.1% user, 0.0% nice, 65.9% system, 0.0% interrupt, 0.0% idle
CPU 1: 0.5% user, 0.0% nice, 0.0% system, 0.0% interrupt, 99.5% idle
CPU 2: 3.1% user, 0.0% nice, 1.2% system, 0.0% interrupt, 95.7% idle
CPU 3: 0.0% user, 0.0% nice, 0.4% system, 0.0% interrupt, 99.6% idle
CPU 4: 1.2% user, 0.0% nice, 0.8% system, 0.0% interrupt, 98.1% idle
CPU 5: 0.8% user, 0.0% nice, 0.4% system, 0.0% interrupt, 98.8% idle
CPU 6: 1.2% user, 0.0% nice, 0.0% system, 0.0% interrupt, 98.8% idle
CPU 7: 0.4% user, 0.0% nice, 0.4% system, 0.0% interrupt, 99.2% idle
...
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU
COMMAND
41437 root 1 76 0 11408K 2232K CPU0 0 0:07 12.79% sh
...
---
Only one core is busy. However if we look at the RACCT from the hoster side, we
see the following:
freebsd:~ # rctl -u jail:jail1 | grep pcpu
pcpu=25600
freebsd:~ # rctl -u jail:jail1 | grep pcpu
pcpu=25600
freebsd:~ # rctl -u jail:jail1 | grep pcpu
pcpu=25600
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list