ThomasKaiser / sbc-bench

Simple benchmark for single board computers
BSD 3-Clause "New" or "Revised" License
675 stars 78 forks source link

Phytium D2000 benchmarks before and after RAM upgrade #48

Closed lanefu closed 2 years ago

lanefu commented 2 years ago

Hello.

I noticed the D2000 actually ships with a single 16GB SODIMM and left a slot free.. I was curious if there was memory performance left on the table by using both banks, so I ordered a similar-ish sodimm and installed.

tests were performed back to back.

TLDR

before

Memory performance:
memcpy: 2823.1 MB/s
memset: 6488.5 MB/s (2.4%)

after

Memory performance:
memcpy: 3476.9 MB/s
memset: 16114.8 MB/s (3.3%)
ThomasKaiser commented 2 years ago

I adjusted the 2nd link, removed the older D2000 numbers and added some explanations.

Also thinking about taking your D2000 numbers to compare with Rock 5B since while both share the same multi-threaded 7-zip score the latter will be faster with every real-world task...

ThomasKaiser commented 2 years ago

Can you please provide output from dmidecode --type 17? I'm wondering why configured speed lines are missing in the DIMM section. At least on x86 this works since lshw only reports DIMM's capabilities (2400MHz (0.4ns)) but not reality (what has been configured or negotiated based on SPD contents of the modules).

See at the bottom of http://ix.io/41Kb or http://ix.io/41Kl for example...

ThomasKaiser commented 2 years ago

BTW: Wrong thermal source: /etc/armbianmonitor/datasources/soctemp (nvme).

Armbian's 'algorithm' to report CPU thermals is broken since years but nobody cares. Same applies to IRQ affinity and also such basic stuff like cpufreq governor parametrization (broken on every big.LITTLE design after RK3399). Just a friendly reminder...

lanefu commented 2 years ago

dmidecode --type 17

Getting SMBIOS data from sysfs.
SMBIOS 3.2.0 present.

Handle 0x0009, DMI type 17, 84 bytes
Memory Device
        Array Handle: 0x0007
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 16 GB
        Form Factor: DIMM
        Set: None
        Locator: SOCKET 0 CHANNEL 0 DIMM 0
        Bank Locator: Bank0
        Type: DDR4
        Type Detail: Synchronous
        Speed: 2400 MT/s
        Manufacturer: Micron
        Serial Number: Not Set
        Asset Tag: Not Set
        Part Number: Not Set
        Rank: Unknown
        Configured Memory Speed: 2400 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V
        Memory Technology: <OUT OF SPEC>
        Memory Operating Mode Capability: None
        Firmware Version: Not Specified
        Module Manufacturer ID: Unknown
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: None
        Cache Size: None
        Logical Size: None

        Handle 0x000B, DMI type 17, 84 bytes
Memory Device
        Array Handle: 0x0007
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 16 GB
        Form Factor: DIMM
        Set: None
        Locator: SOCKET 0 CHANNEL 1 DIMM 0
        Bank Locator: Bank0
        Type: DDR4
        Type Detail: Synchronous
        Speed: 2400 MT/s
        Manufacturer: Micron
        Serial Number: Not Set
        Asset Tag: Not Set
        Part Number: Not Set
        Rank: Unknown
        Configured Memory Speed: 2400 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V
        Memory Technology: <OUT OF SPEC>
        Memory Operating Mode Capability: None
        Firmware Version: Not Specified
        Module Manufacturer ID: Unknown
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: None
        Cache Size: None
        Logical Size: None
lanefu commented 2 years ago

Just a friendly reminder...

seriously thank you for it.. We got some new folks that are pretty motivated... I've captured and am passing info along. I'll let you know if something meaningful happens.

ThomasKaiser commented 2 years ago

I'll let you know if something meaningful happens.

No need for that since about to write an article 'Why Armbian sucks these days'...

Just for the record:

[1] Fix for both:

prefix="/sys/devices/system/cpu"
find "${prefix}" -name cpuinfo_cur_freq -exec chmod +r {} \;
grep -q ondemand /etc/default/cpufrequtils
if [ $? -eq 0 ]; then   
    CPUFreqPolicies=($(ls -d ${prefix}/cpufreq/policy? | sed 's/freq\/policy//'))
    if [ ${#CPUFreqPolicies[@]} -eq 1 -a -d "${prefix}/cpufreq" ]; then
        # if there's just a single cpufreq policy ondemand sysfs entries differ
        CPUFreqPolicies=${prefix}
    fi
    for i in ${CPUFreqPolicies[@]}; do
        affected_cpu=$(tr -d -c '[:digit:]' <<< ${i})
        echo ondemand >${prefix}/cpu${affected_cpu:-0}/cpufreq/scaling_governor
        echo 1 >${i}/cpufreq/ondemand/io_is_busy
        echo 25 >${i}/cpufreq/ondemand/up_threshold
        echo 10 >${i}/cpufreq/ondemand/sampling_down_factor
        echo 200000 >${i}/cpufreq/ondemand/sampling_rate
    done
fi
lanefu commented 2 years ago

thanks for sharing the fix.

  • Radxa sent you 10 Rock 5B, where's the feedback or anything in return so far? @amazingfate (not being part of this 10 board donation) added the board to a fork of the build system. That's all so far? Where does bring-up happen? Nothing in the forum, nothing in IRC log. You're hiding in a closed Discord channel?

Sent me 10 Rock 5B? 4 were sent to North America and then distributed. I received 1 earlier this week. Can't speak to the fate of the boards sent to Europe.

The #armbian-rockchip discord is bridged on libera with the same name. Other dialog has been on Radxa's Rock5 discord channel.

My personal contribution so far is emphasizing the futility of USB-PD with FUSB302B and most should just give up and use dumb 12VDC

  • Does anybody care for stuff like this any more? Does this get patched with recently added kernels?

People either don't care, don't understand, don't know, or don't have time.

  • Why don't you simply delete all of this and stop your claims about 'low level optimizations'?

Me? I make such claims? I'll take credit for attempting to write this unrealized mission statement but that's all.

  • Oh and you restructured the forum again so all deep links broken

I did this? No. Bummer about the links.

I didn't even know that repo existed, frankly. Looks like it's been reviewed and merged

amazingfate commented 2 years ago

@ThomasKaiser sorry about that pr delay. That review request is hiding in a mail flood and I just notice it yesterday. You can contact me on discord in case sometimes I miss some important mails.

lanefu commented 2 years ago

No need for that since about to write an article 'Why Armbian sucks these days'.

I'll gladly read it when published.

I'm sure this wisdom spread around the forum in lost links, but I wish there was a magic punch-list of things you advise looking at for optimizing an SBC. Aka TK's The Art of SBC Optimization

Imaging pieces like

ThomasKaiser commented 2 years ago

sorry about that pr delay.

Huh? It was the Armbian owner who left that PR rot for several days before requesting a review. But since he is confident dealing only with 'end-users' or average Joes his mindset might explain the delay.

@lanefu you're not stupid so you understand my rant was targeted at 'Armbian as a bunch of people with Igor being the owner of the project'. Seriously: remove all that low-level optimization stuff together with that silly advertising. It seems that was just a pet project of mine and I don't want to be associated with Armbian any more.

Since Armbian owner started to censor in the forum and there's no log of development activities this project can be treated as failed (no, I won't join any Discord crap to be able to record live conversations that might have happened).

5 Years ago everything happened in the open. Times have changed...

ThomasKaiser commented 2 years ago

Congratulations... the world gets more stupid every day. Just tried to join »Radxa's Rock5 discord channel« where $some magic might have happened...

Bildschirmfoto 2022-07-17 um 22 12 16 klein

Oh, this Discord crap wants to track users...

Seriously: if some people babble around there they really should think about stopping calling themselves involved into anything 'open source'. All the babbling that happens behind closed Discord doors is lost.

If you're not able to do open mailing lists and/or IRC with a fucking public log so that everything that happened is preserved for other potential contributors it's just dumb crap.

ThomasKaiser commented 2 years ago

My personal contribution so far is emphasizing the futility of USB-PD with FUSB302B and most should just give up and use dumb 12VDC

Where is the link to this so contributors can learn and save their own time?

lanefu commented 2 years ago

My personal contribution so far is emphasizing the futility of USB-PD with FUSB302B and most should just give up and use dumb 12VDC

Where is the link to this so contributors can learn and save their own time?

yes yes point taken.

ThomasKaiser commented 2 years ago

point taken

Which point?

Where does all of this happen? You know it's kinda stupid being part of a 'debug party' and not sharing your findings?

If Radxa has proposed a closed channel nobody except some elite Armbian warriors knows of then let's blame them. But any serious human being involved in open source would refuse to participate in such a shit show and tell the device maker that they're doing themselves damage by such a stupid move.

lanefu commented 2 years ago

If Radxa has proposed a closed channel nobody except some elite Armbian warriors knows of then let's blame them. But any serious human being involved in open source would refuse to participate in such a shit show and tell the device maker that they're doing themselves damage by such a stupid move.

Personally I've been participating in Raxda's #Rock5 discord channel and the #armbian-rockchip bridged channel.

I'll ask Werner to add the armbian-SOC channels to whitequark.

ThomasKaiser commented 2 years ago

As for getting the 'correct' thermal node. My first link mentioning this with examples pointed directly to sbc-bench's GetTempSensor and GetThermalZone functions that might be written more elegantly but I decided to not change anything here any more since the results that fly in do not allow for further checks (I have no idea who tested and as such can't ask any questions).

sbc-bench's current implementation seems to work well at least on the platforms supported by Armbian (even on Intel/AMD where there's absolutely no need to run Armbian).

tk@gaia:~/sbc-bench-results$ grep "^Thermal source:" *.txt | egrep -v -i "aml_thermal|cpu|soc|x86_pkg_temp"
3Lho.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3Lk8.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3LM6.txt:Thermal source: /sys/class/hwmon/hwmon0/ (w1_slave_temp)
3LvM.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3LZo.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3M1F.txt:Thermal source: /sys/class/hwmon/hwmon0/ (thermal-fan-est)
3MiR.txt:Thermal source: /sys/class/hwmon/hwmon0/ (iio_hwmon)
3Mt7.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3MyU.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3N7h.txt:Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (sunxi-therm-1)
3NDE.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3PWH.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3QLN.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3QM7.txt:Thermal source: /sys/class/hwmon/hwmon0/ (nvme)
3RLI.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3ROb.txt:Thermal source: /sys/class/hwmon/hwmon0/ (acpitz)
3SkY.txt:Thermal source: /sys/class/hwmon/hwmon0/ (acpitz)
3SUo.txt:Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (acpitz)
3TdI.txt:Thermal source: /sys/class/hwmon/hwmon0/ (iio_hwmon)
3Vtc.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3Wn0.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3XOd.txt:Thermal source: /sys/class/hwmon/hwmon0/ (scpi_sensors)
3XOt.txt:Thermal source: /sys/class/hwmon/hwmon0/ (thermal-fan-est)
3XvG.txt:Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (f10e4078.thermal)
3Y6x.txt:Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (f10e4078.thermal)
4132.txt:Thermal source: /sys/class/hwmon/hwmon0/ (imx_thermal_zone)

Maybe imx_thermal_zone could be added (see 4132.txt) but the better idea is of course to patch the kernel to use a more standardized name (though same could be said about aml_thermal which is used by some ancient Amlogic 3.10 kernel)