> Date: Mon, 07 Oct 2019 01:30:19 +0000
> From: Zachary Buhman <[email protected]>
> 
> >Synopsis:    poor dwge performance
> >Category:    <PR category (one line)>
> >Environment:
>        System      : OpenBSD 6.6
>          Details     : OpenBSD 6.6 (GENERIC.MP) #0: Sun Oct  6 17:02:09 PDT 
> 2019
>                        buhman@mitis:/usr/src/sys/arch/arm64/compile/GENERIC.MP
> 
>       Architecture: OpenBSD.arm64
>       Machine     : arm64
> >Description:
>       dwge performance is much lower than the hardware's capabilities
> 
>         I did testing with curl to internet hosts, comparing with other 
> operating systems running on the same network. With curl->internet, the 
> effect of net.link.ifrxq.pressure_drop was profound, the default of 8 yielded 
> 1.89Mbyte/s, while 128 yielded 12.5Mbyte/s. Expected: >60Mbyte/s.
> 
>       To improve reproducibility, I also did testing with iperf with both UDP 
> and TCP, to other hosts on the same network switch. No test result was higher 
> than ~320Mbit/s. Expected: >900Mbit/s.
> 
> >How-To-Repeat:
>       - Hardkernel ODROID-N2
>       - install the latest snapshot (or compile -current with the 
> "ifq_restart() in dwxe/dwge" patch, which is what was booted for this sendbug)
>         - run iperf in client or server mode
>         - sysctl net.link.ifrxq.pressure_drop=8
>         - observe consistent ~290Mbit/s to/from a host on the same segment
>       - sysctl net.link.ifrxq.pressure_drop=128
>       - observe consistent ~320Mbit/s to/from a host on the same segment
>       - expected: >900Mbit/s
> >Fix:
>       unknown

Hi,

Please realize that the odroid-n2 support in OpenBSD is still very
new.  One of the reasons the maximum speed you achieve is lower than
expected is that the CPU cores are running at a "safe" low clock speed
(1.2 GHz).  I added support for running the cores at higher
frequencies a few days ago.  However that needs a device tree that
actually lists the operating points.  U-Boot doesn't provide such a
device tree.  The latest Linux mailine code does provide that
information, but we don't have that packaged yet.

Another issue is that OpenBSD doesn't distinguish between big and
LITTLE cores yet.  The network interrupt handlers will run on the
"slow" Cortex-A53 cores and other network stack code may run there as
well.

I'm not sure 900 Mbit/s is actually achievable on this hardware.
Allegedly the busses on ARM SoCs often are a bottle-neck.  Can you
achieve such rates with other OSes ib this hardware?

Cheers,

Mark

> dmesg:
> OpenBSD 6.6 (GENERIC.MP) #0: Sun Oct  6 17:02:09 PDT 2019
>     buhman@mitis:/usr/src/sys/arch/arm64/compile/GENERIC.MP
> real mem  = 4043051008 (3855MB)
> avail mem = 3846066176 (3667MB)
> mainbus0 at root: Hardkernel ODROID-N2
> cpu0 at mainbus0 mpidr 0: ARM Cortex-A53 r0p4
> cpu0: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
> cpu0: 256KB 64b/line 16-way L2 cache
> efi0 at mainbus0: UEFI 2.8
> efi0: Das U-Boot rev 0x20191000
> apm0 at mainbus0
> psci0 at mainbus0: PSCI 1.0, SMCCC 1.1
> "audio-controller-1" at mainbus0 not configured
> "efuse" at mainbus0 not configured
> "reserved-memory" at mainbus0 not configured
> "secure-monitor" at mainbus0 not configured
> simplebus0 at mainbus0: "soc"
> ampintc0 at simplebus0 nirq 256, ncpu 8 ipi: 0, 1: "interrupt-controller"
> dwge0 at simplebus0: address 92:0e:3a:0a:27:c2
> rgephy0 at dwge0 phy 0: RTL8169S/8110S/8211 PHY, rev. 6
> simplebus1 at simplebus0: "bus"
> "hdmi-tx" at simplebus1 not configured
> simplebus2 at simplebus1: "bus"
> amlrng0 at simplebus2
> simplebus3 at simplebus1: "bus"
> amlpinctrl0 at simplebus3
> amlusbphy0 at simplebus1
> simplebus4 at simplebus1: "bus"
> "video-lut" at simplebus4 not configured
> amlusbphy1 at simplebus1
> simplebus5 at simplebus1: "bus"
> syscon0 at simplebus5: "system-controller"
> amlclock0 at syscon0
> simplebus6 at simplebus1: "bus"
> "clock-controller" at simplebus6 not configured
> "audio-controller" at simplebus6 not configured
> "audio-controller" at simplebus6 not configured
> "audio-controller" at simplebus6 not configured
> "reset-controller" at simplebus6 not configured
> "audio-controller" at simplebus6 not configured
> "audio-controller" at simplebus6 not configured
> amlpciephy0 at simplebus1
> "mdio-multiplexer" at simplebus1 not configured
> simplebus7 at simplebus0: "bus"
> syscon1 at simplebus7: "sys-ctrl"
> "clock-controller" at syscon1 not configured
> "power-controller-vpu" at syscon1 not configured
> "pinctrl" at syscon1 not configured
> syscon2 at simplebus7: "ao-secure"
> "cec" at simplebus7 not configured
> amluart0 at simplebus7: console
> "ir" at simplebus7 not configured
> "vpu" at simplebus0 not configured
> simplebus8 at simplebus0: "bus"
> amlreset0 at simplebus8
> "interrupt-controller" at simplebus8 not configured
> "clock-measure" at simplebus8 not configured
> amlmmc0 at simplebus0
> sdmmc0 at amlmmc0: 4-bit, sd high-speed, dma
> amlmmc1 at simplebus0
> sdmmc1 at amlmmc1: 8-bit, mmc high-speed, dma
> amldwusb0 at simplebus0: "usb"
> "usb" at amldwusb0 not configured
> xhci0 at amldwusb0, xHCI 1.10
> usb0 at xhci0: USB revision 3.0
> uhub0 at usb0 configuration 1 interface 0 "Generic xHCI root hub" rev 
> 3.00/1.00 addr 1
> "gpu" at simplebus0 not configured
> agtimer0 at mainbus0: tick rate 24000 KHz
> "xtal-clk" at mainbus0 not configured
> "emmc-pwrseq" at mainbus0 not configured
> "leds" at mainbus0 not configured
> "regulator-tflash_vdd" at mainbus0 not configured
> "gpio-regulator-tf_io" at mainbus0 not configured
> "regulator-flash_1v8" at mainbus0 not configured
> "regulator-main_12v" at mainbus0 not configured
> "regulator-vcc_5v" at mainbus0 not configured
> "regulator-vcc_1v8" at mainbus0 not configured
> "regulator-vcc_3v3" at mainbus0 not configured
> "regulator-hub_5v" at mainbus0 not configured
> "regulator-usb_pwr_en" at mainbus0 not configured
> "regulator-vddao_1v8" at mainbus0 not configured
> "regulator-vddao_3v3" at mainbus0 not configured
> "hdmi-connector" at mainbus0 not configured
> "sound" at mainbus0 not configured
> cpu1 at mainbus0 mpidr 1: ARM Cortex-A53 r0p4
> cpu1: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
> cpu1: 256KB 64b/line 16-way L2 cache
> cpu2 at mainbus0 mpidr 100: ARM Cortex-A73 r0p2
> cpu2: 64KB 64b/line 4-way L1 VIPT I-cache, 32KB 64b/line 8-way L1 D-cache
> cpu2: 1024KB 64b/line 16-way L2 cache
> cpu3 at mainbus0 mpidr 101: ARM Cortex-A73 r0p2
> cpu3: 64KB 64b/line 4-way L1 VIPT I-cache, 32KB 64b/line 8-way L1 D-cache
> cpu3: 1024KB 64b/line 16-way L2 cache
> cpu4 at mainbus0 mpidr 102: ARM Cortex-A73 r0p2
> cpu4: 64KB 64b/line 4-way L1 VIPT I-cache, 32KB 64b/line 8-way L1 D-cache
> cpu4: 1024KB 64b/line 16-way L2 cache
> cpu5 at mainbus0 mpidr 103: ARM Cortex-A73 r0p2
> cpu5: 64KB 64b/line 4-way L1 VIPT I-cache, 32KB 64b/line 8-way L1 D-cache
> cpu5: 1024KB 64b/line 16-way L2 cache
> scsibus0 at sdmmc1: 2 targets, initiator 0
> sd0 at scsibus0 targ 1 lun 0: <Samsung, CJTD4R, 0000> removable
> sd0: 59640MB, 512 bytes/sector, 122142720 sectors
> uhub1 at uhub0 port 1 configuration 1 interface 0 "GenesysLogic USB2.1 Hub" 
> rev 2.10/93.04 addr 2
> vscsi0 at root
> scsibus1 at vscsi0: 256 targets
> softraid0 at root
> scsibus2 at softraid0: 256 targets
> bootfile: sd0a:/bsd
> boot device: sd0
> root on sd0a (ae346f4589526e56.a) swap on sd0b dump on sd0b
> WARNING: CHECK AND RESET THE DATE!
> 
> usbdevs:
> Controller /dev/usb0:
> addr 01: 0000:0000 Generic, xHCI root hub
>        super speed, self powered, config 1, rev 1.00
>        driver: uhub0
> addr 02: 05e3:0610 GenesysLogic, USB2.1 Hub
>        high speed, self powered, config 1, rev 93.04
>        driver: uhub1
> 
> 

Reply via email to