Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Mar 2017 13:30:19 -0700 (PDT)
From:      Don Lewis <truckman@FreeBSD.org>
To:        freebsd-amd64@FreeBSD.org
Subject:   FreeBSD on Ryzen
Message-ID:  <201703222030.v2MKUJJs026400@gw.catspoiler.org>

next in thread | raw e-mail | index | archive | help
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.

I do see that the reported total CPU time increases quite a bit at -j16
(~19900u) as compared to -j8 (~13600u) so it is running into some
hardware bottlenecks that are slowing down instruction execution.  It
could be the resources shared by both SMT threads that share each core,
or it could be cache or memory bandwidth related.  The Ryzen topology is
a bit complicated. There are two groups of four cores, where each group
of four cores shares half of the L3 cache, with a slowish interconnect
bus between the groups.  This probably causes some NUMA-like issues.  I
wonder if the ULE scheduler could be tweaked to handle this better.

% sysctl kern.sched.topology_spec
kern.sched.topology_spec: <groups>
 <group level="1" cache-level="0">
  <cpu count="16" mask="ffff,0,0,0">0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</cpu>
  <children>
   <group level="2" cache-level="3">
    <cpu count="8" mask="ff,0,0,0">0, 1, 2, 3, 4, 5, 6, 7</cpu>
    <children>
     <group level="3" cache-level="2">
      <cpu count="2" mask="3,0,0,0">0, 1</cpu>
     </group>
     <group level="3" cache-level="2">
      <cpu count="2" mask="c,0,0,0">2, 3</cpu>
     </group>
     <group level="3" cache-level="2">
      <cpu count="2" mask="30,0,0,0">4, 5</cpu>
     </group>
     <group level="3" cache-level="2">
      <cpu count="2" mask="c0,0,0,0">6, 7</cpu>
     </group>
    </children>
   </group>
   <group level="2" cache-level="3">
    <cpu count="8" mask="ff00,0,0,0">8, 9, 10, 11, 12, 13, 14, 15</cpu>
    <children>
     <group level="3" cache-level="2">
      <cpu count="2" mask="300,0,0,0">8, 9</cpu>
     </group>
     <group level="3" cache-level="2">
      <cpu count="2" mask="c00,0,0,0">10, 11</cpu>
     </group>
     <group level="3" cache-level="2">
      <cpu count="2" mask="3000,0,0,0">12, 13</cpu>
     </group>
     <group level="3" cache-level="2">
      <cpu count="2" mask="c000,0,0,0">14, 15</cpu>
     </group>
    </children>
   </group>
  </children>
 </group>
</groups>

I'll run some tests with SMT disabled when I get a chance.

The amdtemp driver doesn't attach to this CPU, so I can't monitor the
temperature at runtime.

I've got ECC RAM, but unfortunately the motherboard I'm using doesn't
enable ECC.

The chipset is the B350.


Copyright (c) 1992-2017 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-CURRENT #0 r315413: Thu Mar 16 17:23:31 UTC 2017
    root@releng3.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
WARNING: WITNESS option enabled, expect reduced performance.
SRAT: No memory found for CPU 0
VT(vga): resolution 640x480
CPU: AMD Ryzen 7 1700X Eight-Core Processor          (3393.71-MHz K8-class CPU)
  Origin="AuthenticAMD"  Id=0x800f11  Family=0x17  Model=0x1  Stepping=1
  Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x7ed8320b<SSE3,PCLMULQDQ,MON,SSSE3,FMA,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
  AMD Features=0x2e500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM>
  AMD Features2=0x35c233ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,SKINIT,WDT,TCE,Topology,PCXC,PNXC,DBE,PL2I,MWAITX>
  Structured Extended Features=0x209c01a9<FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA>
  XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
  SVM: NP,NRIP,VClean,AFlush,DAssist,NAsids=32768
  TSC: P-state invariant, performance statistics
real memory  = 68719476736 (65536 MB)
avail memory = 66671529984 (63582 MB)
Event timer "LAPIC" quality 100
ACPI APIC Table: <ALASKA A M I>
FreeBSD/SMP: Multiprocessor System Detected: 16 CPUs
FreeBSD/SMP: 1 package(s) x 16 core(s)
random: unblocking device.
ACPI BIOS Warning (bug): Optional FADT field Pm2ControlBlock has valid Length but zero Address: 0x0000000000000000/0x1 (20170303/tbfadt-796)
ioapic0: Changing APIC ID to 17
ioapic1: Changing APIC ID to 18
ioapic0 <Version 2.1> irqs 0-23 on motherboard
ioapic1 <Version 2.1> irqs 24-55 on motherboard
SMP: AP CPU #12 Launched!
SMP: AP CPU #1 Launched!
SMP: AP CPU #4 Launched!
SMP: AP CPU #7 Launched!
SMP: AP CPU #6 Launched!
SMP: AP CPU #3 Launched!
SMP: AP CPU #11 Launched!
SMP: AP CPU #5 Launched!
SMP: AP CPU #15 Launched!
SMP: AP CPU #9 Launched!
SMP: AP CPU #10 Launched!
SMP: AP CPU #8 Launched!
SMP: AP CPU #2 Launched!
SMP: AP CPU #14 Launched!
SMP: AP CPU #13 Launched!
Timecounter "TSC-low" frequency 1696854133 Hz quality 1000
random: entropy device external interface
netmap: loaded module
module_register_init: MOD_LOAD (vesa, 0xffffffff80f49c70, 0) error 19
random: registering fast source Intel Secure Key RNG
random: fast provider: "Intel Secure Key RNG"
kbd1 at kbdmux0
nexus0
vtvga0: <VT VGA driver> on motherboard
cryptosoft0: <software crypto> on motherboard
acpi0: <ALASKA A M I> on motherboard
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
cpu2: <ACPI CPU> on acpi0
cpu3: <ACPI CPU> on acpi0
cpu4: <ACPI CPU> on acpi0
cpu5: <ACPI CPU> on acpi0
cpu6: <ACPI CPU> on acpi0
cpu7: <ACPI CPU> on acpi0
cpu8: <ACPI CPU> on acpi0
cpu9: <ACPI CPU> on acpi0
cpu10: <ACPI CPU> on acpi0
cpu11: <ACPI CPU> on acpi0
cpu12: <ACPI CPU> on acpi0
cpu13: <ACPI CPU> on acpi0
cpu14: <ACPI CPU> on acpi0
cpu15: <ACPI CPU> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atrtc0: <AT realtime clock> port 0x70-0x71 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff irq 0,8 on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 350
Event timer "HPET1" frequency 14318180 Hz quality 350
Event timer "HPET2" frequency 14318180 Hz quality 350
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
pci0: <base peripheral, IOMMU> at device 0.2 (no driver attached)
pcib1: <ACPI PCI-PCI bridge> at device 1.3 on pci0
pci1: <ACPI PCI bus> on pcib1
xhci0: <XHCI (generic) USB 3.0 controller> mem 0xfd6a0000-0xfd6a7fff irq 32 at device 0.0 on pci1
xhci0: 32 bytes context size, 64-bit DMA
usbus0 on xhci0
usbus0: 5.0Gbps Super Speed USB v3.0
ahci0: <AHCI SATA controller> mem 0xfd680000-0xfd69ffff irq 33 at device 0.1 on pci1
ahci0: AHCI v1.31 with 8 6Gbps ports, Port Multiplier supported
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich1: <AHCI channel> at channel 1 on ahci0
ahcich4: <AHCI channel> at channel 4 on ahci0
ahcich5: <AHCI channel> at channel 5 on ahci0
pcib2: <ACPI PCI-PCI bridge> irq 34 at device 0.2 on pci1
pci2: <ACPI PCI bus> on pcib2
pcib3: <ACPI PCI-PCI bridge> irq 32 at device 0.0 on pci2
pci3: <ACPI PCI bus> on pcib3
re0: <RealTek 8168/8111 B/C/CP/D/DP/E/F/G PCIe Gigabit Ethernet> port 0xf000-0xf0ff mem 0xfd500000-0xfd500fff,0xf2100000-0xf2103fff irq 32 at device 0.0 on pci3
re0: Using 1 MSI-X message
re0: Chip rev. 0x4c000000
re0: MAC rev. 0x00000000
miibus0: <MII bus> on re0
rgephy0: <RTL8251/8153 1000BASE-T media interface> PHY 1 on miibus0
rgephy0:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
re0: Using defaults for TSO: 65518/35/2048
re0: Ethernet address: 1c:1b:0d:9a:99:cb
re0: netmap queues/slots: TX 1/256, RX 1/256
pcib4: <PCI-PCI bridge> irq 33 at device 1.0 on pci2
pci4: <PCI bus> on pcib4
pcib5: <PCI-PCI bridge> irq 32 at device 4.0 on pci2
pci5: <PCI bus> on pcib5
pcib6: <ACPI PCI-PCI bridge> at device 3.1 on pci0
pci6: <ACPI PCI bus> on pcib6
vgapci0: <VGA-compatible display> port 0xe000-0xe07f mem 0xfc000000-0xfcffffff,0xe0000000-0xefffffff,0xf0000000-0xf1ffffff irq 54 at device 0.0 on pci6
vgapci0: Boot video device
hdac0: <NVIDIA (0x0be3) HDA Controller> mem 0xfd080000-0xfd083fff irq 55 at device 0.1 on pci6
pcib7: <ACPI PCI-PCI bridge> at device 7.1 on pci0
pci7: <ACPI PCI bus> on pcib7
pci7: <unknown> at device 0.0 (no driver attached)
pci7: <encrypt/decrypt> at device 0.2 (no driver attached)
xhci1: <XHCI (generic) USB 3.0 controller> mem 0xfd200000-0xfd2fffff irq 37 at device 0.3 on pci7
xhci1: 64 bytes context size, 64-bit DMA
usbus1 on xhci1
usbus1: 5.0Gbps Super Speed USB v3.0
pcib8: <ACPI PCI-PCI bridge> at device 8.1 on pci0
pci8: <ACPI PCI bus> on pcib8
pci8: <unknown> at device 0.0 (no driver attached)
ahci1: <AHCI SATA controller> mem 0xfd708000-0xfd708fff irq 42 at device 0.2 on pci8
ahci1: AHCI v1.31 with 2 6Gbps ports, Port Multiplier supported with FBS
ahcich8: <AHCI channel> at channel 0 on ahci1
ahcich9: <AHCI channel> at channel 1 on ahci1
hdac1: <AMD (0x1457) HDA Controller> mem 0xfd700000-0xfd707fff irq 43 at device 0.3 on pci8
isab0: <PCI-ISA bridge> at device 20.3 on pci0
isa0: <ISA bus> on isab0
acpi_button0: <Power Button> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
ppc0: cannot reserve I/O port range
hwpstate0: <Cool`n'Quiet 2.0> on cpu0
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 1.000 msec
hdacc0: <NVIDIA GT21x HDA CODEC> at cad 0 on hdac0
hdaa0: <NVIDIA GT21x Audio Function Group> at nid 1 on hdacc0
pcm0: <NVIDIA GT21x (HDMI/DP 8ch)> at nid 5 on hdaa0
hdacc1: <NVIDIA GT21x HDA CODEC> at cad 1 on hdac0
hdaa1: <NVIDIA GT21x Audio Function Group> at nid 1 on hdacc1
pcm1: <NVIDIA GT21x (HDMI/DP 8ch)> at nid 5 on hdaa1
hdacc2: <NVIDIA GT21x HDA CODEC> at cad 2 on hdac0
hdaa2: <NVIDIA GT21x Audio Function Group> at nid 1 on hdacc2
pcm2: <NVIDIA GT21x (HDMI/DP 8ch)> at nid 5 on hdaa2
hdacc3: <NVIDIA GT21x HDA CODEC> at cad 3 on hdac0
hdaa3: <NVIDIA GT21x Audio Function Group> at nid 1 on hdacc3
pcm3: <NVIDIA GT21x (HDMI/DP 8ch)> at nid 5 on hdaa3
hdacc4: <Realtek ALC887 HDA CODEC> at cad 0 on hdac1
hdaa4: <Realtek ALC887 Audio Function Group> at nid 1 on hdacc4
pcm4: <Realtek ALC887 (Rear Analog)> at nid 20 and 24,26 on hdaa4
pcm5: <Realtek ALC887 (Front Analog)> at nid 27 and 25 on hdaa4
pcm6: <Realtek ALC887 (Onboard Digital)> at nid 17 on hdaa4
ugen1.1: <0x1022 XHCI root HUB> at usbus1
ugen0.1: <0x1022 XHCI root HUB> at usbus0
uhub0: <0x1022 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
uhub1: <0x1022 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <WDC WD10EACS-00ZJB0 01.01B01> ATA8-ACS SATA 2.x device
ada0: Serial Number WD-WCASJ1778605
ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 953869MB (1953525168 512 byte sectors)
WARNING: WITNESS option enabled, expect reduced performance.
Trying to mount root from zfs:zroot/ROOT/default []...
Root mount waiting for: usbus1 usbus0
uhub0: 8 ports with 8 removable, self powered
uhub1: 22 ports with 22 removable, self powered
ugen1.2: <vendor 0x058f Mass Storage> at usbus1
umass0 on uhub0
umass0: <vendor 0x058f Mass Storage, class 0/0, rev 2.00/1.12, addr 1> on usbus1
umass0:  SCSI over Bulk-Only; quirks = 0x4101
umass0:6:0: Attached to scbus6
da0 at umass-sim0 bus 0 scbus6 target 0 lun 0
da0: < USB Disk 8.07> Removable Direct Access SPC-2 SCSI device
da0: Serial Number 5E2CDC72
da0: 40.000MB/s transfers
da0: 3840MB (7864320 512 byte sectors)
da0: quirks=0x2<NO_6_BYTE>
GEOM: da0: the secondary GPT header is not in the last LBA.
Root mount waiting for: usbus1
ugen1.3: <vendor 0x04b3 product 0x3107> at usbus1
re0: link state changed to DOWN
ums0 on uhub0
ums0: <vendor 0x04b3 product 0x3107, class 0/0, rev 1.10/5.00, addr 2> on usbus1
ums0: 3 buttons and [XYZ] coordinates ID=0




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703222030.v2MKUJJs026400>