FreeBSD 12.0RC1 desperately slow

Mark Millard marklmi at yahoo.com
Sun Nov 18 20:43:00 UTC 2018


[I should have mentioned: non-debug kernel, buildworld
and buildkernel using devel/powerpc64-xtoolchain-gcc
materials instead of gcc 4.2.1 . I add another comparison.]


On 2018-Nov-18, at 10:41, Mark Millard <marklmi at yahoo.com> wrote:

> On 2018-Nov-18, at 05:16, Dennis Clarke <dclarke at blastwave.org> wrote:
> 
>> I am seeing nearly 1980's type speeds :
>> 
>> 
>> eris# uname -a
>> FreeBSD eris 12.0-RC1 FreeBSD 12.0-RC1 r340470 GENERIC  powerpc
>> eris#
>> 
>> eris# /usr/bin/time -p /usr/sbin/portsnap fetch extract
>> .
>> .
>> .
>> Building new INDEX files... done.
>> real 4181.61
>> user 306.68
>> sys 2917.95
>> eris#
>> 
>> 
>> dmesg says :
>> 
>> ada0 at ata2 bus 0 scbus0 target 0 lun 0
>> ada0: <Hitachi HDS725050KLA360 K2ABC20A> ATA-7 SATA 1.x device
>> ada0: Serial Number KRVN23ZAHA5DBD
>> ada0: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)
>> ada0: 476940MB (976773168 512 byte sectors)
>> 
>> However performance in just about any trivial test is very very very
>> bad. Three "very" on purpose.  Better than serial interface speeds and
>> even better than old SCO ODT3 UNIX running with tape based swap. However
>> this is just like being back in mid 1980's on MFM/RLL disks :
>> 
>> eris# uname -a
>> FreeBSD eris 12.0-RC1 FreeBSD 12.0-RC1 r340470 GENERIC  powerpc
>> eris#
>> eris# /usr/bin/time -p dd if=/dev/urandom of=/var/tmp/root/random_8GB.dat bs=8192 count=1048576
>> 1048576+0 records in
>> 1048576+0 records out
>> 8589934592 bytes transferred in 498.075845 secs (17246238 bytes/sec)
>> real 498.11
>> user 0.99
>> sys 260.24
>> eris#
> 
> 
> For comparison: for head based on -r339076 on a G5 Quad Core (system
> total core count), 16 GiBytes RAM, SSD file system, SMP enabled (so
> Justin's change has been reverted):
> 
> # /usr/bin/time -p dd if=/dev/urandom of=/var/tmp/random_8GB.dat bs=8192 count=1048576
> 1048576+0 records in
> 1048576+0 records out
> 8589934592 bytes transferred in 206.345413 secs (41628910 bytes/sec)
> real 206.35
> user 1.03
> sys 201.34
> 
> # uname -apKU
> FreeBSD FBSDG5L 12.0-ALPHA8 FreeBSD 12.0-ALPHA8 #4 r339076M: Mon Oct 15 13:19:35 PDT 2018     markmi at FBSDG5L:/usr/obj/powerpc64vtsc_xtoolchain-gcc/powerpc.powerpc64/usr/src/powerpc.powerpc64/sys/GENERIC64vtsc-NODBG  powerpc powerpc64 1200084 1200084
> 
> The old SSD vs. old hardrive transfer rate differences might not
> be all that surprising.

I should have mentioned: non-debug kernel, buildworld
and buildkernel using devel/powerpc64-xtoolchain-gcc
materials instead of gcc 4.2.1 and its toolchain.

[I'll note that such experiments with alternate toolchains
end up with some aspects that do not work right, even if
things build. (I sometimes experiment in this area for more
modern compilers/toolchains.)]

I'll also provide one more item for comparison/contrast
to help isolate processor bottlenecks from I/O ones:

# /usr/bin/time -p dd if=/dev/zero of=/var/tmp/zero_8GB.dat bs=8192 count=1048576
1048576+0 records in
1048576+0 records out
8589934592 bytes transferred in 85.941324 secs (99951155 bytes/sec)
real 85.95
user 0.92
sys 30.48

So, in my context it looks like /dev/urandom use is the
bottleneck when it is in use for the dd. But it still
does around 40 MByte/s for storage I/O with /dev/urandom
--instead of around 17 MByte/s.

For reference, using the dd with /dev/urandom I see things
like the following for the top cpu usage:

  PID USERNAME    THR PRI NICE   SIZE    RES SWAP STATE    C   TIME     CPU COMMAND
   11 root          4 155 ki31      0   128K    0 RUN      0 1503.4 283.49% [idle]
49063 root          1 101    0    12M  2804K    0 CPU3     3   0:33  94.77% dd if=/dev/urandom of=/var/tmp/random_8GB.dat bs=8192 count=1048576
   12 root         22 -56    -      0   704K    0 WAIT    -1 159:20   6.87% [intr]
    2 root          2 -16    -      0    64K    0 -        0   5:17   5.81% [cam]
    0 root         23 -16    -      0   736K    0 swapin   1   1:53   5.72% [kernel]
   18 root          5  20    -      0   160K    0 qsleep   0   3:05   1.72% [bufdaemon]
   21 root          1 -16    -      0    32K    0 smu      3 179:44   1.33% [pmac_thermal]
    5 root          1 -16    -      0    32K    0 -        0   1:59   0.16% [rand_harvestq]
. . .


>> A small x86 boxen machine nearby says :
>> 
>> titan#
>> titan# uname -a
>> FreeBSD titan 12.0-RC1 FreeBSD 12.0-RC1 r340470 GENERIC  amd64
>> titan# /usr/bin/time -p dd if=/dev/urandom of=/var/tmp/root/random_8GB.dat bs=8192 count=1048576
>> 1048576+0 records in
>> 1048576+0 records out
>> 8589934592 bytes transferred in 116.799755 secs (73544115 bytes/sec)
>> real 116.80
>> user 0.40
>> sys 115.80
>> titan#
>> 
>> 
>> and ye old Solaris SPARC crate :
>> 
>> node000 $ uname -a
>> SunOS node000 5.10 Generic_150400-61 sun4u sparc SUNW,SPARC-Enterprise
>> node000 $ /usr/bin/time -p dd if=/dev/urandom of=random_8GB.dat bs=8192 count=1048576
>> 0+1048576 records in
>> 0+1048576 records out
>> 
>> real 161.95
>> user 1.01
>> sys 159.46
>> 
>> 
>> Sure /dev/urandom should be fed as fast as the system can make up
>> numbers from whatever noise sources it has but even a trivial copy
>> of that 8GB file is terribly slow.
>> 
>> eris# /usr/bin/time -p cp -p random_8GB.dat /home/dclarke/
>> real 727.43
>> user 0.05
>> sys 46.81
>> eris#
>> 
>> eris# echo "8k 8589934592 727.43 / pq" | dc
>> 11808606.45285457
>> 
>> So maybe 10 or 11MB/sec on the filesystem.
>> Would love ZFS but this is UFS here.
>> 
>> However I am running with kern.smp.disable=1 but that can't account for
>> this mess .. could it ?





===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-ppc mailing list