FreeBSD on Ryzen

Don Lewis truckman at FreeBSD.org
Fri Mar 24 23:15:23 UTC 2017


On 22 Mar, Don Lewis wrote:
> I put together a Ryzen 1700X machine over the weekend and installed the
> 12.0-CURRENT r315413 snapshot on it a couple of days ago.  The RAM is
> DDR4 2400.
> 
> First impression is that it's pretty zippy.  Compared to my previous
> fastest machine:
>   CPU: AMD FX-8320E Eight-Core Processor (3210.84-MHz K8-class CPU)
> make -j8 buildworld using tmpfs is a bit more than 2x faster.  Since the
> Ryzen has SMT, it's eight cores look like 16 CPUs to FreeBSD, I get
> almost a 2.6x speedup with -j16 as compared to my old machine.

The reason that I put this machine together is for package building with
poudriere.  Unfortunately I don't see quite as much performance
improvement there, possibly because I set ALLOW_MAKE_JOBS=yes, which can
result in a *lot* of running processes at times and probably thrashes
the caches pretty badly:

 last pid: 78855;  load averages: 120.05, 106.95, 86.49  up 0+14:09:43  15:12:59
 413 processes: 123 running, 281 sleeping, 1 stopped, 8 zombie
 CPU: 92.3% user,  0.0% nice,  7.7% system,  0.0% interrupt,  0.0% idle
 Mem: 5873M Active, 3662M Inact, 36G Laundry, 13G Wired, 4316M Free
 ARC: 9564M Total, 2577M MFU, 6739M MRU, 14M Anon, 162M Header, 72M Other
 Swap: 80G Total, 5336M Used, 75G Free, 6% Inuse, 132K In

The high laundry and swap usage is due to cold data in tmpfs.  For much
of the run tmpfs helps avoid a lot of unnecessary I/O.

It looks like I get about a 2X improvement vs. my FX-8320E, but I
don't have an exact number because I'm seeing some consistent build
breakage in a few of the ports that I build.  I get SIGSEGV failures in
lang/go and lang/ghc.  I also get a compile failure in math/openblas due
to what looks like an undefined preprocessor symbol.  Continuing to
investigate ...

It would be nice if poudriere could balance threads between different
build jails like make can do with parallel submakes ...





More information about the freebsd-amd64 mailing list