Asus tinker Board Samba transfer drop to 0 on high speed after few seconds

Creating a bug report/issue

Required Information

  • DietPi version | cat /boot/dietpi/.version
    G_DIETPI_VERSION_CORE=8
    G_DIETPI_VERSION_SUB=22
    G_DIETPI_VERSION_RC=3
    G_GITBRANCH=‘master’
    G_GITOWNER=‘MichaIng’

  • Distro version | echo $G_DISTRO_NAME $G_RASPBIAN
    Bookworm

  • Kernel version | uname -a
    Linux AsusTinkerBoard 6.1.50-current-rockchip #1 SMP PREEMPT Wed Aug 30 14:11:13 UTC 2023 armv7l GNU/Linux

  • Architecture | dpkg --print-architecture
    armhf

  • SBC model | echo $G_HW_MODEL_NAME or (EG: RPi3)
    ASUS Tinker Board (armv7l)

  • Power supply used | (EG: 5V 1A RAVpower)
    microusb 5v 2.5a

  • SD card used | (EG: SanDisk ultra)
    SanDisk ultra

Additional Information (if applicable)

  • Software title | Samba

  • Was the software title installed freshly or updated/migrated? Freshly

  • Can this issue be replicated on a fresh installation of DietPi? Yes

← If you sent a “dietpi-bugreport”, please paste the ID here →

  • Bug report ID | echo $G_HW_UUID

Steps to reproduce

  1. Connect to a samba share and try copying a file “huge file” video to my PC or mobile.

Expected behaviour

  • Files should transfer normaly without losing connection.

Actual behaviour

  • It start to transfer at high speed and after few seconds it drops to 0 and lost connection.

Extra details

  • I was able to have a stable connection but slow if I set my ethernet negotiate speed to 100 mbps. If I set ethernet negotiate speed to AUTO, I have this issues.

Maybe a drivers problem?

Does the drive you are reading/writing too work thru a USB hub on the board itself? Sometimes the USB hub is overheating after heavy reads/writes and cause slowdowns…
Which version of the tinkerboard??

Have you run a hdparm -tT /dev/sdX to see actual thruput?
Have you run a iperf test to see if the network, or the card is the bottleneck?

It’s a tinker Board (first model).

I tried both via sd card and usb hdd. It work well on original OS.

root@AsusTinkerBoard:/# hdparm -tT /dev/sda1

/dev/sda1:
 Timing cached reads:   1734 MB in  2.00 seconds = 867.32 MB/sec
 Timing buffered disk reads: 108 MB in  3.05 seconds =  35.43 MB/sec

I will try iperf

thank you

I tried Iperf between the tinker board to a raspberry pi 3b+.

[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-1.0000 sec  24.1 MBytes   202 Mbits/sec
[  1] 1.0000-2.0000 sec  22.8 MBytes   191 Mbits/sec
[  1] 2.0000-3.0000 sec  23.0 MBytes   193 Mbits/sec
[  1] 3.0000-4.0000 sec  23.1 MBytes   194 Mbits/sec
[  1] 4.0000-5.0000 sec  23.1 MBytes   194 Mbits/sec
[  1] 5.0000-6.0000 sec  23.8 MBytes   199 Mbits/sec
[  1] 6.0000-7.0000 sec  24.4 MBytes   204 Mbits/sec
[  1] 7.0000-8.0000 sec  24.1 MBytes   202 Mbits/sec
[  1] 8.0000-9.0000 sec  22.2 MBytes   187 Mbits/sec
[  1] 9.0000-10.0000 sec  19.9 MBytes   167 Mbits/sec
[  1] 10.0000-11.0000 sec  22.1 MBytes   186 Mbits/sec
[  1] 11.0000-12.0000 sec  23.0 MBytes   193 Mbits/sec
[  1] 12.0000-13.0000 sec  23.9 MBytes   200 Mbits/sec
[  1] 13.0000-14.0000 sec  22.9 MBytes   192 Mbits/sec
[  1] 14.0000-15.0000 sec  23.2 MBytes   195 Mbits/sec
[  1] 15.0000-16.0000 sec  23.0 MBytes   193 Mbits/sec
[  1] 16.0000-17.0000 sec  22.6 MBytes   190 Mbits/sec
[  1] 17.0000-18.0000 sec  22.9 MBytes   192 Mbits/sec
[  1] 18.0000-19.0000 sec  22.9 MBytes   192 Mbits/sec
[  1] 19.0000-20.0000 sec  22.6 MBytes   190 Mbits/sec
[  1] 20.0000-21.0000 sec  23.0 MBytes   193 Mbits/sec
[  1] 21.0000-22.0000 sec  22.8 MBytes   191 Mbits/sec
[  1] 22.0000-23.0000 sec  22.6 MBytes   190 Mbits/sec
[  1] 23.0000-24.0000 sec  22.8 MBytes   191 Mbits/sec
[  1] 24.0000-25.0000 sec  22.6 MBytes   190 Mbits/sec
[  1] 25.0000-26.0000 sec  23.2 MBytes   195 Mbits/sec
[  1] 26.0000-27.0000 sec  23.2 MBytes   195 Mbits/sec
[  1] 27.0000-28.0000 sec  22.9 MBytes   192 Mbits/sec
[  1] 28.0000-29.0000 sec  22.6 MBytes   190 Mbits/sec
[  1] 29.0000-30.0000 sec  22.4 MBytes   188 Mbits/sec
[  1] 0.0000-30.0120 sec   688 MBytes   192 Mbits/sec

Odd…doesn’t look like network or read/write speed is a massive choke point, does it recover, like a cache is being filled and can’t keep up

Look at the kernel log
linux - Occasional HDD unmounted by systemd after kernel errors - Super User and see if something is disconnecting or having errors

I will try to mount on my raspberry the tinker board share see if it happen. I have mount a raspberry share on the tinker board and I was able to transfer without problem ( using the raspberry share on the tinker board to the usb hdd)

same problem with my raspberry. It crash when the tinker board is “uploading” a file via samba.

smartctl -a /dev/sda1
smartctl 7.3 2022-02-28 r5338 [armv7l-linux-6.1.50-current-rockchip] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               Samsung
Product:              STORY Station
Revision:             1302
Compliance:           SPC-4
User Capacity:        500,107,862,016 bytes [500 GB]
Logical block size:   512 bytes
Physical block size:  4096 bytes
LU is fully provisioned
Logical Unit id:      0x3057962792111719
Serial number:        E7962G921A17J9
Device type:          disk
Local Time is:        Tue Oct  3 16:53:39 2023 EDT
SMART support is:     Unavailable - device lacks SMART capability.

=== START OF READ SMART DATA SECTION ===
Current Drive Temperature:     0 C
Drive Trip Temperature:        0 C

Error Counter logging not supported

Device does not support Self Test logging

I tried forcing negotiate speed to 100. It works but initial speed transfer is 2 MB/s and go down to 0 and go back to initial speed 2 MB/s and go down again but connection is not lost and keep going.

Forcing ethernet speed 1000, it won’t connect.

Auto negotiate : Files transfer is fast but go down to 0 and freeze.

Via WIFI it’s stable too but a little bit slower than ethernet 100.

I try alot of thing and still crash. I tried armbian and it works fine. I will use armbian version.

Thanks for your help WarHawk

1 Like

I converted armbian version using the script to dietpi and it does the same thing after. Probably something in the conversion process.

Maybe @MichaIng has an idea why SAMBA is not stable for you running DietPi while it seems working on Armbian.

Did you compare SMB conf file settings between both systems?

I will try the /etc/samba/smb.conf from armbian on dietpi or he have another setting elsewhere?

at least for SMB it’s the only conf file.

Did you upgrade the kernel to latest version in Armbian as well?

uname -a

Since we use the same kernel package and Samba userspace tools, I can hardly imagine how they can behave any different, as long as the /etc/samba/smb.conf is the same.

One thing, can you check SMP affinities:

cat /proc/interrupts

And a little unrelated question. Can you please check this on the ASUS Tinker Board?

grep CONFIG_RD_ZSTD /boot/config-*

It is about whether we can ZSTD-compress the initramfs on this board/with this kernel. I am sure we can, but was never able to verify.

Thanks for your reply, I will take a look on your question sunday. I don’t have time this week.

1 Like

Test on armbian:

@tinkerboard:~$ uname -a
Linux tinkerboard 6.1.50-current-rockchip #1 SMP PREEMPT Wed Aug 30 14:11:13 UTC 2023 armv7l GNU/Linux
@tinkerboard:~$ cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 25:    6646732    4901219    5441361    1973419 GIC-0  29 Level     arch_timer
 26:          0          0          0          0 GIC-0  30 Level     arch_timer
 29:          0          0          0          0 GIC-0 104 Level     rk_timer
 30:          0          0          0          0 GIC-0 183 Level     arm-pmu
 31:          0          0          0          0 GIC-0 184 Level     arm-pmu
 32:          0          0          0          0 GIC-0 185 Level     arm-pmu
 33:          0          0          0          0 GIC-0 186 Level     arm-pmu
 34:          0          0          0          0 GIC-0  34 Level     ff250000.dma-controller
 35:          0          0          0          0 GIC-0  35 Level     ff250000.dma-controller
 36:          0          0          0          0 GIC-0  32 Level     ffb20000.dma-controller
 37:          0          0          0          0 GIC-0  33 Level     ffb20000.dma-controller
 38:       1128          0          0          0 GIC-0  87 Level     ttyS0
 40:        381          0          0          0 GIC-0  89 Level     ttyS2
 43:          0          0          0          0 GIC-0  49 Level     ff900800.iommu, ff900000.iep
 44:      59665          0          0          0 GIC-0  47 Level     ff930300.iommu, ff930000.vop
 45:          0          0          0          0 GIC-0  48 Level     ff940300.iommu, ff940000.vop
 46:          0          0          0          0 GIC-0  43 Level     ff9a0800.iommu
 47:          0          0          0          0 GIC-0 143 Level     ff9c0440.iommu
 48:          0          0          0          0 GIC-0  78 Level     ff130000.spi
 49:     158908 2345666368          0          0 GIC-0  57 Level     ff540000.usb, dwc2_hsotg:usb1
 50:          0          0          0          0 GIC-0  55 Level     ff580000.usb, ff580000.usb, dwc2_hsotg:usb2
 51:        341          0          4          0 GIC-0  56 Level     ehci_hcd:usb3
 52:          0          0          0          0 GIC-0  94 Level     ff140000.i2c
 53:          0          0          0          0 GIC-0  96 Level     ff160000.i2c
 54:        225          0          0          0 GIC-0  97 Level     ff170000.i2c
 55:      20382          0          0          0 GIC-0  92 Level     ff650000.i2c
 56:          0          0          0          0 GIC-0  93 Level     ff660000.i2c
 57:        107          0          0          0 GIC-0  67 Level     dw-mci
 58:         19          0          0          0 GIC-0 135 Level     ff980000.hdmi, dw-hdmi-cec
 60:          0          0          0          0  rockchip_gpio_irq   4 Level     rk808
 67:          0          0          0          0     rk808   5 Edge      RTC alarm
 78:     921049          0          0          0 GIC-0  64 Level     dw-mci
 79:    4701694          0          0          0 GIC-0  65 Level     dw-mci
 80:          0          0          0          0  rockchip_gpio_irq   5 Edge      GPIO Key Power
 81:          1          0          0          0 GIC-0  68 Level     ff100000.saradc
 82:    1257442          0          0          0 GIC-0  59 Level     end0
 83:          0          0          0          0 GIC-0  60 Level     end0
 84:          0          0          0          0 GIC-0  69 Level     rockchip_thermal
 85:          0          0          0          0 GIC-0 111 Edge      ff800000.watchdog
 86:          0          0          0          0 GIC-0  80 Level     rk-crypto
 87:          3          0          0          0 GIC-0  40 Level     panfrost-gpu
 88:          0          0          0          0 GIC-0  39 Level     panfrost-mmu
 89:          0          0          0          0 GIC-0  44 Level     ff9c0000.hevc
 90:          0          0          0          0 GIC-0  50 Level     ff920000.rga
 91:          0          0          0          0 GIC-0  38 Level     panfrost-job
 92:          0          0          0          0 GIC-0  41 Level     ff9a0000.video-codec
 93:          0          0          0          0 GIC-0  42 Level     ff9a0000.video-codec
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:       5630       6167       6786       6471  Rescheduling interrupts
IPI3:     418525    1662035    1488971    1016015  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:      69524     121907      40194    1186594  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts
Err:          0
r@tinkerboard:~$ grep CONFIG_RD_ZSTD /boot/config-*
CONFIG_RD_ZSTD=y

Test on dietpi :

root@DietPi:~# uname -a
Linux DietPi 6.1.50-current-rockchip #1 SMP PREEMPT Wed Aug 30 14:11:13 UTC 2023                                          armv7l GNU/Linux
root@DietPi:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
 25:       6660       5361       6791       5728 GIC-0  29 Level     arch_timer
 26:          0          0          0          0 GIC-0  30 Level     arch_timer
 29:          0          0          0          0 GIC-0 104 Level     rk_timer
 30:          0          0          0          0 GIC-0 183 Level     arm-pmu
 31:          0          0          0          0 GIC-0 184 Level     arm-pmu
 32:          0          0          0          0 GIC-0 185 Level     arm-pmu
 33:          0          0          0          0 GIC-0 186 Level     arm-pmu
 34:          0          0          0          0 GIC-0  34 Level     ff250000.dm                                         a-controller
 35:          0          0          0          0 GIC-0  35 Level     ff250000.dm                                         a-controller
 36:          0          0          0          0 GIC-0  32 Level     ffb20000.dm                                         a-controller
 37:          0          0          0          0 GIC-0  33 Level     ffb20000.dm                                         a-controller
 40:          2          0          0          0 GIC-0  89 Level     ttyS2
 43:          0          0          0          0 GIC-0  49 Level     ff900800.io                                         mmu, ff900000.iep
 44:       4125          0          0          0 GIC-0  47 Level     ff930300.io                                         mmu, ff930000.vop
 45:          0          0          0          0 GIC-0  48 Level     ff940300.io                                         mmu, ff940000.vop
 46:          0          0          0          0 GIC-0  43 Level     ff9a0800.io                                         mmu
 47:          0          0          0          0 GIC-0 143 Level     ff9c0440.io                                         mmu
 48:     538318          0          0          0 GIC-0  57 Level     ff540000.us                                         b, dwc2_hsotg:usb1
 49:          0          0          0          0 GIC-0  55 Level     ff580000.us                                         b, ff580000.usb, dwc2_hsotg:usb2
 50:        358          0          0          0 GIC-0  56 Level     ehci_hcd:us                                         b3
 51:         45          0          0          0 GIC-0  97 Level     ff170000.i2                                         c
 52:       1365          0          0          0 GIC-0  92 Level     ff650000.i2                                         c
 53:          0          0          0          0 GIC-0  93 Level     ff660000.i2                                         c
 54:         99          0          0          0 GIC-0  67 Level     dw-mci
 55:          1          0          0          0 GIC-0 135 Level     ff980000.hd                                         mi, dw-hdmi-cec
 58:          0          0          0          0  rockchip_gpio_irq   4 Level                                              rk808
 65:          0          0          0          0     rk808   5 Edge      RTC ala                                         rm
 75:       7289          0          0          0 GIC-0  64 Level     dw-mci
 76:       2379          0          0          0 GIC-0  65 Level     dw-mci
 77:          0          0          0          0 GIC-0  68 Level     ff100000.sa                                         radc
 78:          0          0          0          0  rockchip_gpio_irq   5 Edge                                               GPIO Key Power
 79:        356          0          0          0 GIC-0  59 Level     eth0
 80:          0          0          0          0 GIC-0  60 Level     eth0
 81:          0          0          0          0 GIC-0  69 Level     rockchip_th                                         ermal
 82:          0          0          0          0 GIC-0 111 Edge      ff800000.wa                                         tchdog
 83:          0          0          0          0 GIC-0  80 Level     rk-crypto
 84:          0          0          0          0 GIC-0  41 Level     ff9a0000.vi                                         deo-codec
 85:          0          0          0          0 GIC-0  42 Level     ff9a0000.vi                                         deo-codec
 86:          2          0          0          0 GIC-0  40 Level     panfrost-gp                                         u
 87:          0          0          0          0 GIC-0  39 Level     panfrost-mm                                         u
 88:          0          0          0          0 GIC-0  50 Level     ff920000.rg                                         a
 89:          0          0          0          0 GIC-0  38 Level     panfrost-jo                                         b
 90:          0          0          0          0 GIC-0  44 Level     ff9c0000.he                                         vc
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:        247        250        302        376  Rescheduling interrupts
IPI3:       4048       5209       5847       3948  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:        141        171        137        153  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts
Err:          0
root@DietPi:~# grep CONFIG_RD_ZSTD /boot/config-*
CONFIG_RD_ZSTD=y
1 Like

Thanks, so we can ship the ATB image with zstd-compressed initramfs as well: v8.23 · MichaIng/DietPi@8292733 · GitHub

Let’s go through some of the affinity changes Armbian applies:

echo 7 > /sys/class/net/eth0/queues/rx-0/rps_cpus

This sets the Receive Packet Steering CPUs to CPUs 0, 1 and 2. Can you test whether this fixes the Samba transfer speed?

For reference: https://github.com/armbian/build/blob/main/packages/bsp/common/usr/lib/armbian/armbian-hardware-optimization#L173-L181

I tried but it didn’t solve the issues.

FYI, the other day, when I converted armbian to dietpi, I needed to use this solution : [FAILED] DietPi-Installer | /var/lib/dpkg/info/base-files.postinst configure · Issue #6407 · MichaIng/DietPi · GitHub

Okay, does it help to only move Ethernet interrupts to another CPU?

echo 8 > "/proc/irq/$(mawk '/eth0/{print $1;exit}' /proc/interrupts | sed 's/://')/smp_affinity"

The dev version of the installer should have the base-files issue solved. There were two conflicting workarounds inside, an older and a recent one, which did not work well together.

nope, it doesn’t help :S

edit : It seems to be solve. I changed a parameter in dietpi-config setting cpu governor to : on demand.

Ah really? That is strange. The “ondemand” governor switches CPU clocks mostly from lowest to highest and back to lowest in a single step based on a given threshold. Our default “schedutil” aims to be the modern successor for “ondemand”, is directly tied to the CPU scheduling driver and does faster but smaller more fine grained frequency steps, i.e. uses all frequencies below lowest and highest as well, depending on CPU usage and other means given by the scheduling driver. Overall it is hence more efficient and should not reduce performance. But probably the scheduling driver does not work well with this governor on the ASUS Tinker Board for some reason :thinking:.