Re: Periodic rant about SCHED_ULE
- Reply: Mark Millard : "Re: Periodic rant about SCHED_ULE"
- Reply: Peter : "Re: Periodic rant about SCHED_ULE"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 25 Mar 2023 18:14:11 UTC
Peter <pmc_at_citylink.dinoex.sub.org> wrote on Date: Sat, 25 Mar 2023 15:47:42 UTC : > Quoting George Mitchell <george+freebsd@m5p.com>: > > >> https://forums.freebsd.org/threads/what-is-sysctl-kern-sched-preempt_thresh.85 > >> > >Thank you! -- George > > You're welcome. Can I get a success/failure report? > > > --------------------------------------------------------------------- > >> On 3/22/23, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote: > >>> > >>> I reported the issue with ULE some 15 to 20 years ago. > > Can I get the PR number, please? > > > --------------------------------------------------------------------- > Test usecase: > ============= > > Create two compute tasks competing for the same -otherwise unused- core, > one without, one with syscalls: > > # cpuset -l 13 sh -c "while true; do :; done" & > # tar cvf - / | cpuset -l 13 gzip -9 > /dev/null > > Within a few seconds the two task are balanced, running at nearly the > same PRI and using each 50% of the core: > > PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND > 5166 root 1 88 0 13M 3264K RUN 13 9:23 51.65% sh > 10675 root 1 87 0 13M 3740K CPU13 13 1:30 48.57% gzip > > This changes when the tar reaches /usr/include with it's many small > files. Now smaller blocks are delivered to gzip, it does more > syscalls, and things get ugly: > > PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND > 5166 root 1 94 0 13M 3264K RUN 13 18:07 95.10% sh > 19028 root 1 81 0 13M 3740K CPU13 13 1:23 4.87% gzip Why did PID 10675 change to 19028? > This does not happen because tar would be slow in moving data to > gzip: tar reads from SSD, or more likely from ARC, and this is > always faster than gzip-9. The imbalance is made by the scheduler. When I tried that tar line, I get lots of output to stderr: # tar cvf - / | cpuset -l 13 gzip -9 > /dev/null tar: Removing leading '/' from member names a . a root a wrkdirs a bin a usr . . . Was that an intentional part of the test? To avoid this I used: # tar cvf - / 2>/dev/null | cpuset -l 13 gzip -9 2>&1 > /dev/null At which point I get the likes of: 17129 root 1 68 0 14192Ki 3628Ki RUN 13 0:20 3.95% gzip -9 17128 root 1 20 0 58300Ki 13880Ki pipdwt 18 0:00 0.27% tar cvf - / (bsdtar) 17097 root 1 133 0 13364Ki 3060Ki CPU13 13 8:05 95.93% sh -c while true; do :; done up front. For reference, I also see the likes of the following from "gstat -spod" (it is a root on ZFS context with PCIe Optane media): dT: 1.063s w: 1.000s L(q) ops/s r/s kB kBps ms/r w/s kB kBps ms/w d/s kB kBps ms/d o/s ms/o %busy Name . . . 0 68 68 14 937 0.0 0 0 0 0.0 0 0 0 0.0 0 0.0 0.1| nvd2 . . . === Mark Millard marklmi at yahoo.com