From dd7d3edef37e2349475c0778d79455b10fe53f21 Mon Sep 17 00:00:00 2001 From: Thomas Kaiser Date: Mon, 12 Dec 2022 11:24:19 +0100 Subject: [PATCH] Cpufreq reporting improvements and ARM SoC guessing --- Results.md | 5 +- results/4hOp.txt | 485 ++++++++++++ results/4ijy.txt | 720 ++++++++++++++++++ results/4ioj.txt | 500 ++++++++++++ results/ARMv8-Crypto-Extensions.md | 1 + results/Sorted-Results.md | 30 +- .../amlogic-sm1-5.10.156-AMedia_X96_Max+.txt | 24 + .../amlogic-sm1-5.9.0-VONTAR_X3.txt | 24 + .../exynos5-6.0.8-Hardkernel_Odroid_XU4.txt | 129 ++++ ...imx8mp-5.15.5-NXP_i.MX8MPlus_EVK_board.txt | 4 + .../rk3328-6.0.6-Rockchip_RK3318_BOX.txt | 21 + .../opp-tables/rk3399-6.0.11-OrangePi_4.txt | 31 + ...k3588-5.10.110-FriendlyElec_NanoPi_R6S.txt | 67 ++ ...-RK3588_EDGE_LP4x_V1.0_BlueBerry_Board.txt | 45 ++ .../rtd1395-4.9.119-Sinovoip_Bananapi_M4.txt | 10 + ...-h2-plus-5.15.69-Banana_Pi_BPI-M2-Zero.txt | 20 + ...un8i-r40-6.0.10-Banana_Pi_BPI-M2-Ultra.txt | 6 + results/results.tar.xz | Bin 548900 -> 555608 bytes results/validation.md | 5 +- sbc-bench.sh | 79 +- 20 files changed, 2157 insertions(+), 49 deletions(-) create mode 100644 results/4hOp.txt create mode 100644 results/4ijy.txt create mode 100644 results/4ioj.txt create mode 100644 results/opp-tables/amlogic-sm1-5.10.156-AMedia_X96_Max+.txt create mode 100644 results/opp-tables/amlogic-sm1-5.9.0-VONTAR_X3.txt create mode 100644 results/opp-tables/exynos5-6.0.8-Hardkernel_Odroid_XU4.txt create mode 100644 results/opp-tables/imx8mp-5.15.5-NXP_i.MX8MPlus_EVK_board.txt create mode 100644 results/opp-tables/rk3328-6.0.6-Rockchip_RK3318_BOX.txt create mode 100644 results/opp-tables/rk3399-6.0.11-OrangePi_4.txt create mode 100644 results/opp-tables/rk3588-5.10.110-FriendlyElec_NanoPi_R6S.txt create mode 100644 results/opp-tables/rk3588-5.10.110-RK3588_EDGE_LP4x_V1.0_BlueBerry_Board.txt create mode 100644 results/opp-tables/rtd1395-4.9.119-Sinovoip_Bananapi_M4.txt create mode 100644 results/opp-tables/sun8i-h2-plus-5.15.69-Banana_Pi_BPI-M2-Zero.txt create mode 100644 results/opp-tables/sun8i-r40-6.0.10-Banana_Pi_BPI-M2-Ultra.txt diff --git a/Results.md b/Results.md index f5fc927..b19558e 100644 --- a/Results.md +++ b/Results.md @@ -86,11 +86,12 @@ So do **not** rely on collected numbers unless you carefully read through all th | [Nintendo Switch](http://ix.io/3Di2) | 2060 MHz | 4.9 | Bionic arm64 | 6720 | 1901 | 746680 | 2370 | 3670 | 9.25 | | [ODROID-C1](http://ix.io/4eg5) | 1500 MHz | 5.19 | Jammy armhf | 3010 | 878 | 29260 | 390 | 2910 | - | | [ODROID-C2](http://ix.io/1ixI) | 1750 MHz | 3.14 | **Xenial** arm64 | 4070 | 1128 | 48500 | 1750 | 3100 | - | -| [ODROID-C2](http://ix.io/3N6Q) | 1530 MHz | 5.10 | Bullseye arm64 | 4010 | 1186 | 51490 | 1600 | 2730 | - | +| [ODROID-C2](http://ix.io/4hOp) | 1530 MHz | 5.19 | Jammy arm64 | 4020 | 1187 | 51390 | 1590 | 2730 | - | | [ODROID-C4](http://ix.io/2kaS) | 2010 MHz | 4.9 | Focal arm64 | 5450 | 1459 | 941590 | 3310 | 6270 | 7.71 | | [ODROID-C4](http://ix.io/3TQ2) | 2100 MHz | 5.10 | Buster arm64 | 5770 | 1679 | 981940 | 3540 | 5150 | - | | [ODROID-HC4](http://ix.io/3Na5) | 2100 MHz | 5.10 | Buster arm64 | 5730 | 1672 | 980970 | 3540 | 5150 | - | | [ODROID-M1](http://ix.io/3Ug9) | 1930 MHz | 4.19 | Focal arm64 | 5010 | 1450 | 898610 | 3070 | 6220 | 7.14 | +| [ODROID-M1](http://ix.io/4ijy) | 2060 MHz | 5.18 | Bullseye arm64 | 5430 | 1567 | 961090 | 3310 | 5960 | 7.76 | | [ODROID-N2](http://ix.io/1BsF) | 1800/1900 MHz | 4.9 | Bionic arm64 | 8140 | 1669 | 1024680 | 4120 | 8610 | 11.39 | | [ODROID-N2](http://ix.io/3MuT) | 2000/1900 MHz | 5.10 | Buster arm64 | 9090 | 2012 | 1085350 | 4260 | 9080 | - | | [ODROID-N2+](http://ix.io/3R1a) | 2400/2015 MHz | 5.10 | Focal arm64 | 9680 | 2372 | 1366730 | 4030 | 7120 | - | @@ -105,6 +106,7 @@ So do **not** rely on collected numbers unless you carefully read through all th | [Orange Pi PC 2](http://ix.io/3MQJ) | 1370 MHz | 5.10 | Focal arm64 | 3500 | 1023 | 637410 | 1070 | 3680 | - | | [Orange Pi Plus 2](http://ix.io/1iX4) | 1300 MHz | 4.14 | Stretch armhf | 2890 | 812 | 25250 | 830 | 3240 | - | | [Orange Pi Prime](http://ix.io/2kTH) | 1370 MHz | 5.4 | Buster | 3590 | 984 | 637980 | 1180 | 3540 | - | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | 2600 MHz | 5.15 | Bullseye arm64 | 10020 | 2755 | 936740 | 3760 | 14540 | - | | [Phytium D2000 1xSO-DIMM](http://ix.io/445T) | 2300 MHz | 5.19 | Jammy arm64 | 16390 | 2220 | 827090 | 2820 | 6490 | - | | [Phytium D2000 2xSO-DIMM](http://ix.io/446h) | 2300 MHz | 5.19 | Jammy arm64 | 16670 | 2252 | 828130 | 3480 | 16110 | - | | [PineH64](http://ix.io/1jEr) | 1800 MHz | 4.18 | Stretch arm64 | 4650 | 1274 | 836900 | 1380 | 5530 | 5.62 | @@ -121,6 +123,7 @@ So do **not** rely on collected numbers unless you carefully read through all th | [Raspberry Pi Zero](http://ix.io/3Njz) | 1000 MHz | 5.10 | Bullseye armv6l/armhf | 460 | 460 | 17060 | 430 | 1670 | - | | [Raspberry Pi 2 B+](http://ix.io/1iFf) | 900 MHz | 4.14 | **Debian** Stretch | 2070 | 592 | 17450 | 615 | 1175 | - | | [Raspberry Pi 2 B+](http://ix.io/3MGs) | 900 MHz | 5.10 | Raspberry Pi OS Bullseye | 2150 | 620 | 16500 | 1000 | 1180 | - | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | 1200 MHz | 5.15 | Raspbian Sid | 2970 | 977 | 36230 | 1110 | 1700 | 2.89 | | [Raspberry Pi 3 B+](http://ix.io/1iI5) | original | 4.9 | Raspbian Stretch | 3600 | 1076 | 42700 | 1230 | 1640 | - | | [Raspberry Pi 3 B+](http://ix.io/1ism) | normal | 4.14 | Raspbian Stretch | 3240 | 914 | 36600 | 1130 | 1530 | - | | [Raspberry Pi 3 B+](http://ix.io/1iGM) | normal | 4.14 | Raspbian Stretch | 3040 | 856 | 36600 | 1050 | 1500 | - | diff --git a/results/4hOp.txt b/results/4hOp.txt new file mode 100644 index 0000000..929f0b9 --- /dev/null +++ b/results/4hOp.txt @@ -0,0 +1,485 @@ +sbc-bench v0.9.9 Hardkernel ODROID-C2 (Mon, 05 Dec 2022 15:49:52 +0100) + +Distributor ID: Ubuntu +Description: Ubuntu 22.04.1 LTS +Release: 22.04 +Codename: jammy +Armbian info: Odroid C2, meson-gxbb, meson64, 22.11.1, https://github.com/armbian/build + +/usr/bin/gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 + +Uptime: 15:49:52 up 6 min, 1 user, load average: 1.02, 0.52, 0.24, 29.0°C, 315360080 + +Linux 5.19.17-meson64 (odroidc2) 12/05/22 _aarch64_ (4 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 6.21 0.01 2.16 3.04 0.00 88.58 + +Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd +mmcblk0 26.06 1232.15 671.43 0.00 463546 252600 0 +zram0 1.60 6.38 0.01 0.00 2400 4 0 +zram1 0.66 1.28 5.59 0.00 480 2104 0 + + total used free shared buff/cache available +Mem: 1.9Gi 154Mi 1.6Gi 3.0Mi 127Mi 1.7Gi +Swap: 965Mi 0B 965Mi + +Filename Type Size Used Priority +/dev/zram0 partition 989160 0 5 + +########################################################################## + +Checking cpufreq OPP (Cortex-A53): + +Cpufreq OPP: 1536 Measured: 1533 (1534.039/1533.968/1533.896) +Cpufreq OPP: 1296 Measured: 1293 (1294.164/1294.006/1293.658) +Cpufreq OPP: 1000 Measured: 997 (998.184/998.113/997.008) +Cpufreq OPP: 500 Measured: 497 (498.158/497.495/497.403) +Cpufreq OPP: 250 Measured: 247 (247.952/247.648/247.526) (-1.2%) +Cpufreq OPP: 100 Measured: 98 (98.378/98.378/98.376) (-2.0%) + +########################################################################## + +Hardware sensors: + +scpi_sensors-isa-0000 +aml_thermal: +28.0 C + +########################################################################## + +Executing benchmark on cpu0 (Cortex-A53): + +tinymembench v0.4.9 (simple benchmark for memory throughput and latency) + +========================================================================== +== Memory bandwidth tests == +== == +== Note 1: 1MB = 1000000 bytes == +== Note 2: Results for 'copy' tests show how many bytes can be == +== copied per second (adding together read and writen == +== bytes would have provided twice higher numbers) == +== Note 3: 2-pass copy means that we are using a small temporary buffer == +== to first fetch data into it, and only then write it to the == +== destination (source -> L1 cache, L1 cache -> destination) == +== Note 4: If sample standard deviation exceeds 0.1%, it is shown in == +== brackets == +========================================================================== + + C copy backwards : 1577.3 MB/s (1.5%) + C copy backwards (32 byte blocks) : 1563.9 MB/s (1.5%) + C copy backwards (64 byte blocks) : 1585.4 MB/s (1.2%) + C copy : 1566.6 MB/s (1.5%) + C copy prefetched (32 bytes step) : 1179.8 MB/s (0.2%) + C copy prefetched (64 bytes step) : 1373.4 MB/s + C 2-pass copy : 1336.4 MB/s (0.4%) + C 2-pass copy prefetched (32 bytes step) : 808.6 MB/s (0.5%) + C 2-pass copy prefetched (64 bytes step) : 573.4 MB/s + C fill : 2731.1 MB/s + C fill (shuffle within 16 byte blocks) : 2731.6 MB/s + C fill (shuffle within 32 byte blocks) : 2731.0 MB/s + C fill (shuffle within 64 byte blocks) : 2731.6 MB/s + --- + standard memcpy : 1591.6 MB/s (0.8%) + standard memset : 2732.5 MB/s (0.4%) + --- + NEON LDP/STP copy : 1610.0 MB/s (0.3%) + NEON LDP/STP copy pldl2strm (32 bytes step) : 1075.7 MB/s (0.7%) + NEON LDP/STP copy pldl2strm (64 bytes step) : 1307.0 MB/s + NEON LDP/STP copy pldl1keep (32 bytes step) : 1994.1 MB/s + NEON LDP/STP copy pldl1keep (64 bytes step) : 1994.7 MB/s + NEON LD1/ST1 copy : 1620.4 MB/s (0.7%) + NEON STP fill : 2733.1 MB/s + NEON STNP fill : 2683.4 MB/s + ARM LDP/STP copy : 1621.7 MB/s (0.5%) + ARM STP fill : 2732.1 MB/s + ARM STNP fill : 2683.8 MB/s + +========================================================================== +== Memory latency test == +== == +== Average time is measured for random memory accesses in the buffers == +== of different sizes. The larger is the buffer, the more significant == +== are relative contributions of TLB, L1/L2 cache misses and SDRAM == +== accesses. For extremely large buffer sizes we are expecting to see == +== page table walk with several requests to SDRAM for almost every == +== memory access (though 64MiB is not nearly large enough to experience == +== this effect to its fullest). == +== == +== Note 1: All the numbers are representing extra time, which needs to == +== be added to L1 cache latency. The cycle timings for L1 cache == +== latency can be usually found in the processor documentation. == +== Note 2: Dual random read means that we are simultaneously performing == +== two independent memory accesses at a time. In the case if == +== the memory subsystem can't handle multiple outstanding == +== requests, dual random read has the same timings as two == +== single reads performed one after another. == +========================================================================== + +block size : single random read / dual random read, [MADV_NOHUGEPAGE] + 1024 : 0.0 ns / 0.0 ns + 2048 : 0.0 ns / 0.0 ns + 4096 : 0.0 ns / 0.0 ns + 8192 : 0.0 ns / 0.0 ns + 16384 : 0.0 ns / 0.0 ns + 32768 : 0.0 ns / 0.0 ns + 65536 : 4.4 ns / 7.5 ns + 131072 : 6.8 ns / 10.4 ns + 262144 : 8.1 ns / 11.6 ns + 524288 : 14.2 ns / 22.6 ns + 1048576 : 81.1 ns / 123.8 ns + 2097152 : 115.5 ns / 157.0 ns + 4194304 : 139.5 ns / 175.6 ns + 8388608 : 152.3 ns / 184.9 ns + 16777216 : 160.1 ns / 190.5 ns + 33554432 : 164.9 ns / 194.0 ns + 67108864 : 167.3 ns / 196.6 ns + +block size : single random read / dual random read, [MADV_HUGEPAGE] + 1024 : 0.0 ns / 0.0 ns + 2048 : 0.0 ns / 0.0 ns + 4096 : 0.0 ns / 0.0 ns + 8192 : 0.0 ns / 0.0 ns + 16384 : 0.0 ns / 0.0 ns + 32768 : 0.0 ns / 0.0 ns + 65536 : 4.4 ns / 7.5 ns + 131072 : 6.8 ns / 10.4 ns + 262144 : 8.1 ns / 11.6 ns + 524288 : 9.6 ns / 13.4 ns + 1048576 : 81.0 ns / 125.0 ns + 2097152 : 114.7 ns / 159.2 ns + 4194304 : 132.2 ns / 171.5 ns + 8388608 : 141.1 ns / 172.9 ns + 16777216 : 145.3 ns / 173.8 ns + 33554432 : 147.4 ns / 179.4 ns + 67108864 : 148.5 ns / 175.0 ns + +########################################################################## + +Executing ramlat on cpu0 (Cortex-A53), results in ns: + + size: 1x32 2x32 1x64 2x64 1xPTR 2xPTR 4xPTR 8xPTR + 4k: 2.608 2.608 1.956 1.956 1.956 1.956 2.690 5.460 + 8k: 2.609 2.608 1.956 1.956 1.959 1.956 2.690 5.461 + 16k: 2.609 2.608 1.956 1.956 1.956 1.957 2.690 5.462 + 32k: 2.614 2.613 1.961 1.966 1.961 1.961 2.696 5.469 + 64k: 22.02 20.34 17.73 19.76 17.73 19.69 24.32 44.01 + 128k: 22.75 22.92 20.99 22.04 20.99 22.13 26.11 50.11 + 256k: 23.16 23.38 22.62 23.10 22.63 23.08 26.52 51.55 + 512k: 27.18 24.56 24.05 24.45 24.31 24.30 27.91 52.67 + 1024k: 140.3 148.4 137.5 145.7 143.5 144.9 210.6 401.4 + 2048k: 155.5 156.0 150.2 151.0 150.2 153.6 217.9 430.3 + 4096k: 155.6 156.2 150.3 151.0 150.5 150.7 217.2 436.3 + 8192k: 155.5 155.9 150.4 150.7 150.3 150.6 219.3 427.5 + 16384k: 157.7 157.7 150.2 150.5 150.2 150.6 218.0 427.7 + +########################################################################## + +Executing benchmark twice on cluster 0 (Cortex-A53) + +OpenSSL 3.0.2, built on 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) +type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes +aes-128-cbc 45963.79k 62274.69k 68796.50k 70643.37k 71193.94k 71215.79k +aes-128-cbc 45976.07k 62273.47k 68796.50k 70644.39k 71177.56k 71139.33k +aes-192-cbc 40813.78k 53340.48k 58053.21k 59366.74k 59744.26k 59774.29k +aes-192-cbc 40815.21k 53343.57k 58057.05k 59360.60k 59757.91k 59774.29k +aes-256-cbc 36772.73k 46648.21k 50206.89k 51191.13k 51478.53k 51291.17k +aes-256-cbc 36725.74k 46580.91k 50358.37k 51190.44k 51483.99k 51489.45k + +########################################################################## + +Executing benchmark single-threaded on cpu0 (Cortex-A53) + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: 64000000 64000000 - - - - 512000000 - - + +RAM size: 1931 MB, # CPU hardware threads: 4 +RAM usage: 435 MB, # Benchmark threads: 1 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 933 99 917 909 | 16757 100 1435 1431 +23: 914 99 940 931 | 16373 100 1422 1417 +24: 906 99 983 975 | 16055 100 1414 1409 +25: 898 99 1035 1026 | 15710 100 1403 1398 +---------------------------------- | ------------------------------ +Avr: 99 969 960 | 100 1419 1414 +Tot: 99 1194 1187 + +########################################################################## + +Executing benchmark 3 times multi-threaded on CPUs 0-3 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: 64000000 64000000 - - - - - - - + +RAM size: 1931 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 2535 318 775 2467 | 64503 396 1390 5503 +23: 2469 320 786 2516 | 63136 396 1379 5463 +24: 2454 322 820 2640 | 61562 395 1369 5404 +25: 2440 323 863 2787 | 60652 396 1362 5398 +---------------------------------- | ------------------------------ +Avr: 321 811 2602 | 396 1375 5442 +Tot: 358 1093 4022 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: 64000000 - - - - - - - - + +RAM size: 1931 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 2545 318 778 2476 | 64336 395 1389 5489 +23: 2482 318 795 2529 | 63107 396 1380 5460 +24: 2465 321 825 2650 | 61651 395 1369 5412 +25: 2435 322 865 2781 | 60709 396 1363 5403 +---------------------------------- | ------------------------------ +Avr: 320 816 2609 | 396 1376 5441 +Tot: 358 1096 4025 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 1931 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 2536 318 775 2468 | 64335 396 1387 5489 +23: 2486 321 789 2533 | 63047 396 1379 5455 +24: 2462 321 825 2648 | 61616 395 1369 5409 +25: 2443 322 867 2790 | 60579 396 1362 5391 +---------------------------------- | ------------------------------ +Avr: 321 814 2610 | 396 1374 5436 +Tot: 358 1094 4023 + +Compression: 2602,2609,2610 +Decompression: 5442,5441,5436 +Total: 4022,4025,4023 + +########################################################################## + +Testing maximum cpufreq again, still under full load. System health now: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +16:08:57: 1536MHz 3.63 79% 1% 77% 0% 0% 0% 47.0°C + +Checking cpufreq OPP (Cortex-A53): + +Cpufreq OPP: 1536 Measured: 1534 (1534.039/1534.003/1533.968) + +########################################################################## + +Hardware sensors: + +scpi_sensors-isa-0000 +aml_thermal: +42.0 C + +########################################################################## + +Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (cpu-thermal) + (Armbian wants to use /sys/class/hwmon/hwmon0 instead, that + zone is named scpi_sensors. Please check and if wrong + file a bug here: https://github.com/armbian/build/issues/) + +System health while running tinymembench: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:50:14: 1536MHz 1.23 12% 1% 7% 0% 3% 0% 31.0°C +15:50:54: 1536MHz 1.12 25% 0% 24% 0% 0% 0% 34.0°C +15:51:34: 1536MHz 1.06 25% 0% 24% 0% 0% 0% 34.0°C +15:52:14: 1536MHz 1.03 25% 0% 24% 0% 0% 0% 36.0°C +15:52:55: 1536MHz 1.01 25% 0% 24% 0% 0% 0% 34.0°C +15:53:35: 1536MHz 1.01 25% 0% 24% 0% 0% 0% 34.0°C +15:54:15: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 34.0°C +15:54:55: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +15:55:35: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +15:56:15: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +15:56:55: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 34.0°C +15:57:35: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +15:58:15: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +15:58:55: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +15:59:35: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C + +System health while running ramlat: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:59:36: 1536MHz 1.00 19% 0% 17% 0% 1% 0% 37.0°C +15:59:40: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 34.0°C +15:59:43: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 34.0°C +15:59:46: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +15:59:49: 1536MHz 1.00 25% 0% 25% 0% 0% 0% 36.0°C +15:59:52: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +15:59:55: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +15:59:58: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:00:01: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C + +System health while running OpenSSL benchmark: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +16:00:04: 1536MHz 1.00 20% 0% 17% 0% 1% 0% 38.0°C +16:00:20: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 38.0°C +16:00:36: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:00:52: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:01:08: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:01:24: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:01:40: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C + +System health while running 7-zip single core benchmark: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +16:01:52: 1536MHz 1.00 20% 0% 18% 0% 1% 0% 37.0°C +16:02:02: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:02:12: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +16:02:22: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 36.0°C +16:02:32: 1536MHz 1.00 25% 0% 24% 0% 0% 0% 35.0°C +16:02:42: 1536MHz 1.15 25% 0% 24% 0% 0% 0% 35.0°C +16:02:52: 1536MHz 1.18 25% 0% 24% 0% 0% 0% 36.0°C +16:03:02: 1536MHz 1.15 25% 0% 24% 0% 0% 0% 35.0°C +16:03:12: 1536MHz 1.13 25% 0% 24% 0% 0% 0% 35.0°C +16:03:23: 1536MHz 1.11 25% 0% 24% 0% 0% 0% 35.0°C +16:03:33: 1536MHz 1.09 25% 0% 24% 0% 0% 0% 35.0°C +16:03:43: 1536MHz 1.08 25% 0% 24% 0% 0% 0% 36.0°C +16:03:53: 1536MHz 1.06 25% 0% 24% 0% 0% 0% 35.0°C + +System health while running 7-zip multi core benchmark: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +16:03:56: 1536MHz 1.06 21% 0% 19% 0% 1% 0% 36.0°C +16:04:19: 1536MHz 1.97 91% 0% 89% 0% 0% 0% 42.0°C +16:04:39: 1536MHz 2.72 90% 0% 89% 0% 0% 0% 40.0°C +16:05:01: 1536MHz 2.96 88% 1% 86% 0% 0% 0% 44.0°C +16:05:21: 1536MHz 2.95 79% 1% 77% 0% 0% 0% 43.0°C +16:05:43: 1536MHz 3.38 92% 1% 90% 0% 0% 0% 45.0°C +16:06:05: 1536MHz 3.52 90% 0% 89% 0% 0% 0% 45.0°C +16:06:25: 1536MHz 3.53 90% 0% 89% 0% 0% 0% 42.0°C +16:06:49: 1536MHz 3.73 88% 1% 86% 0% 0% 0% 46.0°C +16:07:10: 1536MHz 3.47 79% 1% 77% 0% 0% 0% 45.0°C +16:07:30: 1536MHz 3.75 92% 0% 90% 0% 0% 0% 45.0°C +16:07:52: 1536MHz 3.68 91% 0% 90% 0% 0% 0% 47.0°C +16:08:12: 1536MHz 3.76 90% 0% 89% 0% 0% 0% 42.0°C +16:08:36: 1536MHz 3.63 88% 1% 86% 0% 0% 0% 48.0°C +16:08:57: 1536MHz 3.63 79% 1% 77% 0% 0% 0% 47.0°C + +########################################################################## + +Linux 5.19.17-meson64 (odroidc2) 12/05/22 _aarch64_ (4 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 33.08 0.01 1.10 0.86 0.00 64.95 + +Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd +mmcblk0 6.85 304.64 203.46 0.00 470190 314028 0 +zram0 0.39 1.55 0.00 0.00 2400 4 0 +zram1 0.18 0.33 1.44 0.00 508 2220 0 + + total used free shared buff/cache available +Mem: 1.9Gi 156Mi 1.6Gi 3.0Mi 133Mi 1.7Gi +Swap: 965Mi 0B 965Mi + +Filename Type Size Used Priority +/dev/zram0 partition 989160 0 5 + +CPU sysfs topology (clusters, cpufreq members, clockspeeds) + cpufreq min max + CPU cluster policy speed speed core type + 0 0 0 100 1536 Cortex-A53 / r0p4 + 1 0 0 100 1536 Cortex-A53 / r0p4 + 2 0 0 100 1536 Cortex-A53 / r0p4 + 3 0 0 100 1536 Cortex-A53 / r0p4 + +Architecture: aarch64 +CPU op-mode(s): 32-bit, 64-bit +Byte Order: Little Endian +CPU(s): 4 +On-line CPU(s) list: 0-3 +Vendor ID: ARM +Model name: Cortex-A53 +Model: 4 +Thread(s) per core: 1 +Core(s) per cluster: 4 +Socket(s): - +Cluster(s): 1 +Stepping: r0p4 +CPU max MHz: 1536.0000 +CPU min MHz: 100.0000 +BogoMIPS: 48.00 +Flags: fp asimd evtstrm crc32 cpuid +NUMA node(s): 1 +NUMA node0 CPU(s): 0-3 +Vulnerability Itlb multihit: Not affected +Vulnerability L1tf: Not affected +Vulnerability Mds: Not affected +Vulnerability Meltdown: Not affected +Vulnerability Mmio stale data: Not affected +Vulnerability Retbleed: Not affected +Vulnerability Spec store bypass: Not affected +Vulnerability Spectre v1: Mitigation; __user pointer sanitization +Vulnerability Spectre v2: Not affected +Vulnerability Srbds: Not affected +Vulnerability Tsx async abort: Not affected + +SoC guess: Amlogic Meson GXBB (S905) Revision 1f:c (0:1) +DT compat: hardkernel,odroid-c2 + amlogic,meson-gxbb + Compiler: /usr/bin/gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 / aarch64-linux-gnu + Userland: arm64 + Kernel: 5.19.17-meson64/aarch64 + CONFIG_HZ=250 + CONFIG_HZ_250=y + CONFIG_PREEMPTION=y + CONFIG_PREEMPT=y + CONFIG_PREEMPT_BUILD=y + CONFIG_PREEMPT_COUNT=y + CONFIG_PREEMPT_NOTIFIERS=y + CONFIG_PREEMPT_RCU=y + raid6: neonx8 gen() 2748 MB/s + raid6: neonx4 gen() 2808 MB/s + raid6: neonx2 gen() 2618 MB/s + raid6: neonx1 gen() 2316 MB/s + raid6: int64x8 gen() 1908 MB/s + raid6: int64x4 gen() 2130 MB/s + raid6: int64x2 gen() 1814 MB/s + raid6: int64x1 gen() 1349 MB/s + raid6: using algorithm neonx4 gen() 2808 MB/s + raid6: .... xor() 2023 MB/s, rmw enabled + raid6: using neon recovery algorithm + xor: measuring software checksum speed + xor: using function: 32regs (3229 MB/sec) + +########################################################################## + + opp-table: + 125 MHz 950.0 mV + 250 MHz 950.0 mV + 286 MHz 950.0 mV + 400 MHz 950.0 mV + 500 MHz 950.0 mV + 667 MHz 950.0 mV + 744 MHz 950.0 mV + +| Hardkernel ODROID-C2 | 1536 MHz | 5.19 | Armbian 22.11.1 Jammy arm64 | 4020 | 1187 | 51390 | 1590 | 2730 | - | \ No newline at end of file diff --git a/results/4ijy.txt b/results/4ijy.txt new file mode 100644 index 0000000..f2b7190 --- /dev/null +++ b/results/4ijy.txt @@ -0,0 +1,720 @@ +sbc-bench v0.9.9 Hardkernel ODROID-M1 (Sun, 11 Dec 2022 15:21:17 +0100) + +Distributor ID: Debian +Description: Debian GNU/Linux 11 (bullseye) +Release: 11 +Codename: bullseye + +/usr/bin/gcc (Debian 10.2.1-6) 10.2.1 20210110 + +Uptime: 15:21:17 up 19 min, 2 users, load average: 1.22, 1.03, 0.59, 32.5°C, 277511737 + +Linux 5.18.0-odroid-arm64 (debian-emmc) 12/11/22 _aarch64_ (4 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 9.54 0.01 2.62 0.16 0.00 87.67 + +Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd +mmcblk0 42.84 1063.03 614.11 0.00 1263707 730040 0 +nvme0n1 0.19 4.90 0.00 0.00 5828 0 0 + + total used free shared buff/cache available +Mem: 3.6Gi 255Mi 3.3Gi 10Mi 102Mi 3.3Gi +Swap: 0B 0B 0B + +########################################################################## + +Checking cpufreq OPP (Cortex-A55): + +Cpufreq OPP: 1992 Measured: 2070 (2070.532/2070.491/2070.117) (+3.9%) +Cpufreq OPP: 1800 Measured: 1891 (1891.563/1891.347/1891.217) (+5.1%) +Cpufreq OPP: 1608 Measured: 1666 (1666.648/1666.446/1666.379) (+3.6%) +Cpufreq OPP: 1416 Measured: 1439 (1439.984/1439.859/1439.733) (+1.6%) +Cpufreq OPP: 1104 Measured: 1368 (1368.197/1367.942/1367.914) (+23.9%) +Cpufreq OPP: 816 Measured: 813 (813.086/813.028/812.910) +Cpufreq OPP: 600 Measured: 597 (597.274/597.142/597.011) +Cpufreq OPP: 408 Measured: 405 (405.579/405.048/404.878) + +########################################################################## + +Hardware sensors: + +cpu_thermal-virtual-0 +CPU Temp: +32.5 C (crit = +95.0 C) + +gpu_thermal-virtual-0 +temp1: +31.2 C (crit = +95.0 C) + +/dev/nvme0n1: 24°C + +########################################################################## + +Executing benchmark on cpu0 (Cortex-A55): + +tinymembench v0.4.9 (simple benchmark for memory throughput and latency) + +========================================================================== +== Memory bandwidth tests == +== == +== Note 1: 1MB = 1000000 bytes == +== Note 2: Results for 'copy' tests show how many bytes can be == +== copied per second (adding together read and writen == +== bytes would have provided twice higher numbers) == +== Note 3: 2-pass copy means that we are using a small temporary buffer == +== to first fetch data into it, and only then write it to the == +== destination (source -> L1 cache, L1 cache -> destination) == +== Note 4: If sample standard deviation exceeds 0.1%, it is shown in == +== brackets == +========================================================================== + + C copy backwards : 2151.3 MB/s (2.1%) + C copy backwards (32 byte blocks) : 2132.3 MB/s + C copy backwards (64 byte blocks) : 2002.4 MB/s (0.7%) + C copy : 3316.2 MB/s + C copy prefetched (32 bytes step) : 1979.2 MB/s (0.3%) + C copy prefetched (64 bytes step) : 2563.5 MB/s (0.1%) + C 2-pass copy : 2415.6 MB/s + C 2-pass copy prefetched (32 bytes step) : 1452.9 MB/s (1.0%) + C 2-pass copy prefetched (64 bytes step) : 1639.7 MB/s (0.3%) + C fill : 5959.0 MB/s + C fill (shuffle within 16 byte blocks) : 5961.2 MB/s + C fill (shuffle within 32 byte blocks) : 5959.4 MB/s + C fill (shuffle within 64 byte blocks) : 5957.5 MB/s + --- + standard memcpy : 3312.2 MB/s + standard memset : 5961.5 MB/s + --- + NEON LDP/STP copy : 3315.5 MB/s + NEON LDP/STP copy pldl2strm (32 bytes step) : 2556.8 MB/s + NEON LDP/STP copy pldl2strm (64 bytes step) : 3168.7 MB/s + NEON LDP/STP copy pldl1keep (32 bytes step) : 2441.2 MB/s + NEON LDP/STP copy pldl1keep (64 bytes step) : 3366.1 MB/s + NEON LD1/ST1 copy : 3315.0 MB/s + NEON STP fill : 5960.2 MB/s + NEON STNP fill : 3522.7 MB/s (0.6%) + ARM LDP/STP copy : 3315.1 MB/s + ARM STP fill : 5959.5 MB/s + ARM STNP fill : 3537.2 MB/s (0.4%) + +========================================================================== +== Framebuffer read tests. == +== == +== Many ARM devices use a part of the system memory as the framebuffer, == +== typically mapped as uncached but with write-combining enabled. == +== Writes to such framebuffers are quite fast, but reads are much == +== slower and very sensitive to the alignment and the selection of == +== CPU instructions which are used for accessing memory. == +== == +== Many x86 systems allocate the framebuffer in the GPU memory, == +== accessible for the CPU via a relatively slow PCI-E bus. Moreover, == +== PCI-E is asymmetric and handles reads a lot worse than writes. == +== == +== If uncached framebuffer reads are reasonably fast (at least 100 MB/s == +== or preferably >300 MB/s), then using the shadow framebuffer layer == +== is not necessary in Xorg DDX drivers, resulting in a nice overall == +== performance improvement. For example, the xf86-video-fbturbo DDX == +== uses this trick. == +========================================================================== + + NEON LDP/STP copy (from framebuffer) : 3119.5 MB/s + NEON LDP/STP 2-pass copy (from framebuffer) : 2373.0 MB/s + NEON LD1/ST1 copy (from framebuffer) : 3123.0 MB/s + NEON LD1/ST1 2-pass copy (from framebuffer) : 2357.3 MB/s + ARM LDP/STP copy (from framebuffer) : 3116.3 MB/s + ARM LDP/STP 2-pass copy (from framebuffer) : 2377.2 MB/s (0.1%) + +========================================================================== +== Memory latency test == +== == +== Average time is measured for random memory accesses in the buffers == +== of different sizes. The larger is the buffer, the more significant == +== are relative contributions of TLB, L1/L2 cache misses and SDRAM == +== accesses. For extremely large buffer sizes we are expecting to see == +== page table walk with several requests to SDRAM for almost every == +== memory access (though 64MiB is not nearly large enough to experience == +== this effect to its fullest). == +== == +== Note 1: All the numbers are representing extra time, which needs to == +== be added to L1 cache latency. The cycle timings for L1 cache == +== latency can be usually found in the processor documentation. == +== Note 2: Dual random read means that we are simultaneously performing == +== two independent memory accesses at a time. In the case if == +== the memory subsystem can't handle multiple outstanding == +== requests, dual random read has the same timings as two == +== single reads performed one after another. == +========================================================================== + +block size : single random read / dual random read, [MADV_NOHUGEPAGE] + 1024 : 0.0 ns / 0.0 ns + 2048 : 0.0 ns / 0.0 ns + 4096 : 0.0 ns / 0.0 ns + 8192 : 0.0 ns / 0.0 ns + 16384 : 0.5 ns / 1.1 ns + 32768 : 3.8 ns / 5.9 ns + 65536 : 9.3 ns / 13.2 ns + 131072 : 12.1 ns / 15.9 ns + 262144 : 14.4 ns / 17.2 ns + 524288 : 23.9 ns / 33.7 ns + 1048576 : 77.9 ns / 115.9 ns + 2097152 : 111.3 ns / 148.2 ns + 4194304 : 129.2 ns / 159.9 ns + 8388608 : 144.3 ns / 174.1 ns + 16777216 : 153.0 ns / 182.6 ns + 33554432 : 158.4 ns / 188.9 ns + 67108864 : 162.0 ns / 193.2 ns + +block size : single random read / dual random read, [MADV_HUGEPAGE] + 1024 : 0.0 ns / 0.0 ns + 2048 : 0.0 ns / 0.0 ns + 4096 : 0.0 ns / 0.0 ns + 8192 : 0.0 ns / 0.0 ns + 16384 : 0.5 ns / 0.9 ns + 32768 : 2.3 ns / 5.6 ns + 65536 : 9.3 ns / 13.1 ns + 131072 : 12.1 ns / 15.9 ns + 262144 : 14.4 ns / 17.3 ns + 524288 : 16.7 ns / 19.0 ns + 1048576 : 77.9 ns / 115.8 ns + 2097152 : 111.2 ns / 148.0 ns + 4194304 : 128.0 ns / 158.9 ns + 8388608 : 136.3 ns / 162.8 ns + 16777216 : 140.6 ns / 164.3 ns + 33554432 : 142.6 ns / 164.9 ns + 67108864 : 143.6 ns / 165.1 ns + +########################################################################## + +Executing ramlat on cpu0 (Cortex-A55), results in ns: + + size: 1x32 2x32 1x64 2x64 1xPTR 2xPTR 4xPTR 8xPTR + 4k: 1.466 1.474 1.480 1.472 0.975 1.476 1.984 3.994 + 8k: 1.489 1.477 1.453 1.461 0.975 1.485 1.983 3.996 + 16k: 1.454 1.471 1.471 1.469 0.975 1.479 1.984 3.998 + 32k: 1.499 1.474 1.499 1.471 0.975 1.474 1.989 4.008 + 64k: 14.42 16.73 14.41 16.71 14.09 16.70 26.92 49.01 + 128k: 17.14 17.68 17.14 17.57 16.13 17.56 30.70 59.11 + 256k: 17.59 17.88 17.55 17.88 16.83 17.89 30.35 62.96 + 512k: 18.69 19.19 18.75 18.96 18.20 18.98 31.49 65.74 + 1024k: 101.0 121.5 103.4 120.4 116.3 122.0 182.6 320.0 + 2048k: 130.3 141.6 134.3 142.1 130.6 144.2 208.3 376.9 + 4096k: 146.3 150.2 145.2 150.4 144.7 151.2 214.2 380.2 + 8192k: 153.8 153.5 151.6 153.4 150.8 153.7 215.3 382.8 + 16384k: 153.9 155.6 154.1 154.6 152.7 154.4 215.7 384.2 + +########################################################################## + +Executing benchmark twice on cluster 0 (Cortex-A55) + +OpenSSL 1.1.1n, built on 15 Mar 2022 +type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes +aes-128-cbc 187942.84k 552605.91k 1073051.39k 1404581.55k 1543107.93k 1554415.62k +aes-128-cbc 187251.54k 548392.62k 1066708.99k 1401595.22k 1541799.94k 1553077.59k +aes-192-cbc 178548.47k 486112.26k 861921.62k 1075258.71k 1158591.83k 1165066.24k +aes-192-cbc 178689.09k 490462.46k 867543.04k 1078972.76k 1160667.14k 1167015.94k +aes-256-cbc 173345.93k 447140.71k 746261.33k 900483.41k 957672.11k 961871.87k +aes-256-cbc 172711.15k 449572.31k 749065.39k 900256.43k 956413.27k 960304.47k + +########################################################################## + +Executing benchmark single-threaded on cpu0 (Cortex-A55) + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 3734 MB, # CPU hardware threads: 4 +RAM usage: 435 MB, # Benchmark threads: 1 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 1135 99 1115 1104 | 23274 99 1999 1987 +23: 1116 99 1148 1138 | 22761 99 1982 1970 +24: 1102 99 1196 1185 | 22268 99 1967 1955 +25: 1091 99 1257 1246 | 21931 99 1963 1952 +---------------------------------- | ------------------------------ +Avr: 99 1179 1168 | 99 1978 1966 +Tot: 99 1579 1567 + +########################################################################## + +Executing benchmark 3 times multi-threaded on CPUs 0-3 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: 64000000 64000000 - - - - - - - + +RAM size: 3734 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 3248 341 927 3160 | 90121 396 1942 7689 +23: 3076 334 939 3135 | 88213 396 1928 7633 +24: 3103 340 980 3336 | 86451 396 1915 7589 +25: 3030 340 1016 3460 | 84772 396 1906 7545 +---------------------------------- | ------------------------------ +Avr: 339 966 3273 | 396 1923 7614 +Tot: 367 1444 5443 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - 64000000 - - - - - - - + +RAM size: 3734 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 3161 336 915 3076 | 88320 390 1930 7535 +23: 3161 342 943 3221 | 86862 391 1921 7516 +24: 3135 343 983 3371 | 86003 395 1912 7550 +25: 3069 342 1025 3505 | 84688 396 1903 7537 +---------------------------------- | ------------------------------ +Avr: 341 966 3293 | 393 1916 7534 +Tot: 367 1441 5414 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 3734 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 3153 333 922 3068 | 90238 396 1942 7699 +23: 3162 341 943 3222 | 87854 395 1924 7602 +24: 3098 340 981 3331 | 86215 396 1912 7568 +25: 3085 343 1027 3523 | 84990 397 1906 7564 +---------------------------------- | ------------------------------ +Avr: 339 968 3286 | 396 1921 7608 +Tot: 368 1445 5447 + +Compression: 3273,3293,3286 +Decompression: 7614,7534,7608 +Total: 5443,5414,5447 + +########################################################################## + +** cpuminer-multi 1.3.7 by tpruvot@github ** +BTC donation address: 1FhDPLPpw18X4srecguG3MxJYe4a1JsZnd (tpruvot) + +[2022-12-11 15:37:20] 4 miner threads started, using 'scrypt' algorithm. +[2022-12-11 15:37:20] CPU #0: 1.81 kH/s +[2022-12-11 15:37:20] CPU #1: 1.71 kH/s +[2022-12-11 15:37:20] CPU #3: 1.67 kH/s +[2022-12-11 15:37:20] CPU #2: 1.72 kH/s +[2022-12-11 15:37:25] Total: 7.17 kH/s +[2022-12-11 15:37:30] CPU #3: 1.95 kH/s +[2022-12-11 15:37:30] Total: 7.73 kH/s +[2022-12-11 15:37:30] CPU #1: 1.95 kH/s +[2022-12-11 15:37:30] CPU #2: 1.91 kH/s +[2022-12-11 15:37:30] CPU #0: 1.95 kH/s +[2022-12-11 15:37:35] Total: 7.76 kH/s +[2022-12-11 15:37:40] CPU #3: 1.95 kH/s +[2022-12-11 15:37:40] Total: 7.77 kH/s +[2022-12-11 15:37:40] CPU #1: 1.95 kH/s +[2022-12-11 15:37:40] CPU #2: 1.92 kH/s +[2022-12-11 15:37:40] CPU #0: 1.95 kH/s +[2022-12-11 15:37:45] Total: 7.77 kH/s +[2022-12-11 15:37:50] CPU #3: 1.95 kH/s +[2022-12-11 15:37:50] Total: 7.77 kH/s +[2022-12-11 15:37:50] CPU #1: 1.95 kH/s +[2022-12-11 15:37:50] CPU #2: 1.92 kH/s +[2022-12-11 15:37:50] CPU #0: 1.95 kH/s +[2022-12-11 15:37:55] Total: 7.77 kH/s +[2022-12-11 15:38:00] CPU #3: 1.95 kH/s +[2022-12-11 15:38:00] Total: 7.77 kH/s +[2022-12-11 15:38:00] CPU #1: 1.95 kH/s +[2022-12-11 15:38:00] CPU #2: 1.92 kH/s +[2022-12-11 15:38:00] CPU #0: 1.95 kH/s +[2022-12-11 15:38:05] Total: 7.77 kH/s +[2022-12-11 15:38:10] CPU #3: 1.94 kH/s +[2022-12-11 15:38:10] Total: 7.76 kH/s +[2022-12-11 15:38:10] CPU #1: 1.94 kH/s +[2022-12-11 15:38:10] CPU #2: 1.90 kH/s +[2022-12-11 15:38:10] CPU #0: 1.94 kH/s +[2022-12-11 15:38:15] Total: 7.74 kH/s +[2022-12-11 15:38:20] CPU #3: 1.95 kH/s +[2022-12-11 15:38:20] Total: 7.75 kH/s +[2022-12-11 15:38:20] CPU #1: 1.95 kH/s +[2022-12-11 15:38:20] CPU #2: 1.92 kH/s +[2022-12-11 15:38:20] CPU #0: 1.95 kH/s +[2022-12-11 15:38:25] Total: 7.77 kH/s +[2022-12-11 15:38:30] CPU #3: 1.95 kH/s +[2022-12-11 15:38:30] Total: 7.77 kH/s +[2022-12-11 15:38:30] CPU #1: 1.95 kH/s +[2022-12-11 15:38:30] CPU #2: 1.92 kH/s +[2022-12-11 15:38:30] CPU #0: 1.95 kH/s +[2022-12-11 15:38:35] Total: 7.77 kH/s +[2022-12-11 15:38:40] CPU #3: 1.95 kH/s +[2022-12-11 15:38:40] Total: 7.77 kH/s +[2022-12-11 15:38:40] CPU #1: 1.95 kH/s +[2022-12-11 15:38:40] CPU #2: 1.92 kH/s +[2022-12-11 15:38:40] CPU #0: 1.95 kH/s +[2022-12-11 15:38:45] Total: 7.77 kH/s +[2022-12-11 15:38:50] CPU #3: 1.95 kH/s +[2022-12-11 15:38:50] Total: 7.77 kH/s +[2022-12-11 15:38:50] CPU #1: 1.95 kH/s +[2022-12-11 15:38:50] CPU #2: 1.92 kH/s +[2022-12-11 15:38:50] CPU #0: 1.95 kH/s +[2022-12-11 15:38:55] Total: 7.76 kH/s +[2022-12-11 15:39:00] CPU #3: 1.94 kH/s +[2022-12-11 15:39:00] Total: 7.73 kH/s +[2022-12-11 15:39:00] CPU #1: 1.95 kH/s +[2022-12-11 15:39:00] CPU #2: 1.91 kH/s +[2022-12-11 15:39:00] CPU #0: 1.95 kH/s +[2022-12-11 15:39:05] Total: 7.75 kH/s +[2022-12-11 15:39:10] CPU #3: 1.95 kH/s +[2022-12-11 15:39:10] Total: 7.77 kH/s +[2022-12-11 15:39:10] CPU #1: 1.95 kH/s +[2022-12-11 15:39:10] CPU #2: 1.92 kH/s +[2022-12-11 15:39:10] CPU #0: 1.95 kH/s +[2022-12-11 15:39:15] Total: 7.77 kH/s +[2022-12-11 15:39:20] CPU #3: 1.95 kH/s +[2022-12-11 15:39:20] Total: 7.77 kH/s +[2022-12-11 15:39:20] CPU #1: 1.95 kH/s +[2022-12-11 15:39:20] CPU #2: 1.92 kH/s +[2022-12-11 15:39:20] CPU #0: 1.95 kH/s +[2022-12-11 15:39:25] Total: 7.77 kH/s +[2022-12-11 15:39:30] CPU #3: 1.95 kH/s +[2022-12-11 15:39:30] Total: 7.77 kH/s +[2022-12-11 15:39:30] CPU #1: 1.95 kH/s +[2022-12-11 15:39:30] CPU #2: 1.92 kH/s +[2022-12-11 15:39:30] CPU #0: 1.95 kH/s +[2022-12-11 15:39:35] Total: 7.77 kH/s +[2022-12-11 15:39:40] CPU #3: 1.94 kH/s +[2022-12-11 15:39:40] Total: 7.76 kH/s +[2022-12-11 15:39:40] CPU #1: 1.94 kH/s +[2022-12-11 15:39:40] CPU #2: 1.90 kH/s +[2022-12-11 15:39:40] CPU #0: 1.95 kH/s +[2022-12-11 15:39:45] Total: 7.74 kH/s +[2022-12-11 15:39:50] CPU #3: 1.95 kH/s +[2022-12-11 15:39:50] Total: 7.74 kH/s +[2022-12-11 15:39:50] CPU #1: 1.95 kH/s +[2022-12-11 15:39:50] CPU #2: 1.92 kH/s +[2022-12-11 15:39:50] CPU #0: 1.95 kH/s +[2022-12-11 15:39:55] Total: 7.77 kH/s +[2022-12-11 15:40:00] CPU #3: 1.95 kH/s +[2022-12-11 15:40:00] Total: 7.77 kH/s +[2022-12-11 15:40:00] CPU #1: 1.95 kH/s +[2022-12-11 15:40:00] CPU #2: 1.92 kH/s +[2022-12-11 15:40:00] CPU #0: 1.95 kH/s +[2022-12-11 15:40:05] Total: 7.77 kH/s +[2022-12-11 15:40:10] CPU #3: 1.95 kH/s +[2022-12-11 15:40:10] Total: 7.76 kH/s +[2022-12-11 15:40:10] CPU #1: 1.95 kH/s +[2022-12-11 15:40:10] CPU #2: 1.91 kH/s +[2022-12-11 15:40:10] CPU #0: 1.95 kH/s +[2022-12-11 15:40:15] Total: 7.77 kH/s +[2022-12-11 15:40:20] CPU #3: 1.95 kH/s +[2022-12-11 15:40:20] Total: 7.76 kH/s +[2022-12-11 15:40:20] CPU #1: 1.95 kH/s +[2022-12-11 15:40:20] CPU #2: 1.91 kH/s +[2022-12-11 15:40:20] CPU #0: 1.95 kH/s +[2022-12-11 15:40:25] Total: 7.76 kH/s +[2022-12-11 15:40:30] CPU #3: 1.94 kH/s +[2022-12-11 15:40:30] Total: 7.74 kH/s +[2022-12-11 15:40:30] CPU #1: 1.94 kH/s +[2022-12-11 15:40:30] CPU #2: 1.90 kH/s +[2022-12-11 15:40:30] CPU #0: 1.95 kH/s +[2022-12-11 15:40:35] Total: 7.74 kH/s +[2022-12-11 15:40:40] CPU #3: 1.95 kH/s +[2022-12-11 15:40:40] Total: 7.76 kH/s +[2022-12-11 15:40:40] CPU #1: 1.95 kH/s +[2022-12-11 15:40:40] CPU #2: 1.91 kH/s +[2022-12-11 15:40:40] CPU #0: 1.95 kH/s +[2022-12-11 15:40:45] Total: 7.76 kH/s +[2022-12-11 15:40:50] CPU #3: 1.95 kH/s +[2022-12-11 15:40:50] Total: 7.76 kH/s +[2022-12-11 15:40:50] CPU #1: 1.95 kH/s +[2022-12-11 15:40:50] CPU #2: 1.91 kH/s +[2022-12-11 15:40:50] CPU #0: 1.95 kH/s +[2022-12-11 15:40:55] Total: 7.76 kH/s +[2022-12-11 15:41:00] CPU #3: 1.95 kH/s +[2022-12-11 15:41:00] Total: 7.76 kH/s +[2022-12-11 15:41:00] CPU #1: 1.95 kH/s +[2022-12-11 15:41:00] CPU #2: 1.91 kH/s +[2022-12-11 15:41:00] CPU #0: 1.95 kH/s +[2022-12-11 15:41:05] Total: 7.76 kH/s +[2022-12-11 15:41:10] CPU #3: 1.95 kH/s +[2022-12-11 15:41:10] Total: 7.76 kH/s +[2022-12-11 15:41:10] CPU #1: 1.95 kH/s +[2022-12-11 15:41:10] CPU #2: 1.91 kH/s +[2022-12-11 15:41:10] CPU #0: 1.95 kH/s +[2022-12-11 15:41:15] Total: 7.74 kH/s +[2022-12-11 15:41:20] CPU #3: 1.95 kH/s +[2022-12-11 15:41:20] Total: 7.73 kH/s +[2022-12-11 15:41:20] CPU #1: 1.95 kH/s +[2022-12-11 15:41:20] CPU #2: 1.91 kH/s +[2022-12-11 15:41:20] CPU #0: 1.95 kH/s +[2022-12-11 15:41:25] Total: 7.76 kH/s +[2022-12-11 15:41:30] CPU #3: 1.95 kH/s +[2022-12-11 15:41:30] Total: 7.76 kH/s +[2022-12-11 15:41:30] CPU #1: 1.95 kH/s +[2022-12-11 15:41:30] CPU #2: 1.91 kH/s +[2022-12-11 15:41:30] CPU #0: 1.95 kH/s +[2022-12-11 15:41:35] Total: 7.76 kH/s +[2022-12-11 15:41:40] CPU #3: 1.95 kH/s +[2022-12-11 15:41:40] Total: 7.76 kH/s +[2022-12-11 15:41:40] CPU #1: 1.95 kH/s +[2022-12-11 15:41:40] CPU #2: 1.91 kH/s +[2022-12-11 15:41:40] CPU #0: 1.95 kH/s +[2022-12-11 15:41:45] Total: 7.76 kH/s +[2022-12-11 15:41:50] CPU #3: 1.95 kH/s +[2022-12-11 15:41:50] Total: 7.76 kH/s +[2022-12-11 15:41:50] CPU #1: 1.95 kH/s +[2022-12-11 15:41:50] CPU #2: 1.91 kH/s +[2022-12-11 15:41:50] CPU #0: 1.95 kH/s +[2022-12-11 15:41:55] Total: 7.76 kH/s +[2022-12-11 15:42:00] CPU #3: 1.94 kH/s +[2022-12-11 15:42:00] Total: 7.74 kH/s +[2022-12-11 15:42:00] CPU #1: 1.93 kH/s +[2022-12-11 15:42:00] CPU #2: 1.90 kH/s +[2022-12-11 15:42:00] CPU #0: 1.94 kH/s +[2022-12-11 15:42:05] Total: 7.72 kH/s +[2022-12-11 15:42:10] CPU #3: 1.95 kH/s +[2022-12-11 15:42:10] Total: 7.76 kH/s +[2022-12-11 15:42:10] CPU #1: 1.95 kH/s +[2022-12-11 15:42:10] CPU #2: 1.91 kH/s +[2022-12-11 15:42:10] CPU #0: 1.95 kH/s +[2022-12-11 15:42:15] Total: 7.76 kH/s +[2022-12-11 15:42:20] CPU #3: 1.95 kH/s +[2022-12-11 15:42:20] Total: 7.76 kH/s +[2022-12-11 15:42:20] CPU #1: 1.95 kH/s +[2022-12-11 15:42:20] CPU #2: 1.91 kH/s +[2022-12-11 15:42:20] CPU #0: 1.95 kH/s + +Total Scores: 7.77,7.76,7.75,7.74,7.73,7.72,7.17 + +########################################################################## + +Testing maximum cpufreq again, still under full load. System health now: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:41:58: 1992MHz 4.10 100% 0% 99% 0% 0% 0% 48.3°C + +Checking cpufreq OPP (Cortex-A55): + +Cpufreq OPP: 1992 Measured: 2058 (2058.700/2058.239/2058.187) (+3.3%) + +########################################################################## + +Hardware sensors: + +cpu_thermal-virtual-0 +CPU Temp: +40.6 C (crit = +95.0 C) + +gpu_thermal-virtual-0 +temp1: +38.3 C (crit = +95.0 C) + +/dev/nvme0n1: 24°C + +########################################################################## + +Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (cpu-thermal) + +System health while running tinymembench: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:21:46: 1992MHz 1.30 12% 2% 9% 0% 0% 0% 35.0°C +15:22:26: 1992MHz 1.15 25% 0% 24% 0% 0% 0% 35.6°C +15:23:06: 1992MHz 1.13 25% 0% 24% 0% 0% 0% 36.1°C +15:23:46: 1992MHz 1.07 25% 0% 24% 0% 0% 0% 35.6°C +15:24:27: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 35.0°C +15:25:07: 1992MHz 1.02 25% 0% 24% 0% 0% 0% 35.0°C +15:25:47: 1992MHz 1.07 25% 0% 24% 0% 0% 0% 35.0°C +15:26:27: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 35.0°C +15:27:07: 1992MHz 1.02 25% 0% 24% 0% 0% 0% 36.1°C +15:27:47: 1992MHz 1.01 25% 0% 24% 0% 0% 0% 35.0°C +15:28:27: 1992MHz 1.00 25% 0% 24% 0% 0% 0% 35.6°C +15:29:07: 1992MHz 1.05 25% 0% 24% 0% 0% 0% 35.6°C + +System health while running ramlat: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:29:26: 1992MHz 1.04 16% 1% 14% 0% 0% 0% 37.2°C +15:29:29: 1992MHz 1.04 25% 0% 24% 0% 0% 0% 36.1°C +15:29:32: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 36.7°C +15:29:35: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 36.1°C +15:29:38: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 37.2°C +15:29:41: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 35.6°C +15:29:44: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 35.6°C +15:29:47: 1992MHz 1.03 25% 0% 24% 0% 0% 0% 36.1°C +15:29:50: 1992MHz 1.02 25% 0% 24% 0% 0% 0% 35.0°C + +System health while running OpenSSL benchmark: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:29:52: 1992MHz 1.02 16% 1% 14% 0% 0% 0% 37.2°C +15:30:08: 1992MHz 1.10 25% 0% 24% 0% 0% 0% 36.1°C +15:30:24: 1992MHz 1.08 25% 0% 24% 0% 0% 0% 38.9°C +15:30:40: 1992MHz 1.05 25% 0% 24% 0% 0% 0% 38.3°C +15:30:56: 1992MHz 1.11 25% 0% 24% 0% 0% 0% 39.4°C +15:31:12: 1992MHz 1.09 25% 0% 24% 0% 0% 0% 38.9°C +15:31:28: 1992MHz 1.07 25% 0% 24% 0% 0% 0% 38.3°C + +System health while running 7-zip single core benchmark: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:31:40: 1992MHz 1.28 16% 1% 14% 0% 0% 0% 38.3°C +15:31:49: 1992MHz 1.25 25% 0% 24% 0% 0% 0% 36.7°C +15:31:58: 1992MHz 1.21 25% 0% 24% 0% 0% 0% 37.8°C +15:32:08: 1992MHz 1.18 25% 0% 24% 0% 0% 0% 37.2°C +15:32:17: 1992MHz 1.15 25% 0% 24% 0% 0% 0% 37.2°C +15:32:26: 1992MHz 1.13 25% 0% 24% 0% 0% 0% 36.7°C +15:32:35: 1992MHz 1.12 25% 0% 24% 0% 0% 0% 37.2°C +15:32:44: 1992MHz 1.10 25% 0% 24% 0% 0% 0% 36.7°C +15:32:53: 1992MHz 1.08 25% 0% 24% 0% 0% 0% 36.7°C +15:33:02: 1992MHz 1.07 25% 0% 24% 0% 0% 0% 36.7°C +15:33:11: 1992MHz 1.06 25% 0% 24% 0% 0% 0% 37.8°C + +System health while running 7-zip multi core benchmark: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:33:18: 1992MHz 1.13 17% 1% 15% 0% 0% 0% 37.8°C +15:33:36: 1992MHz 1.88 91% 0% 90% 0% 0% 0% 40.6°C +15:33:54: 1992MHz 2.19 90% 0% 89% 0% 0% 0% 40.6°C +15:34:12: 1992MHz 2.56 89% 0% 87% 0% 0% 0% 40.6°C +15:34:30: 1992MHz 2.81 88% 1% 86% 0% 0% 0% 40.6°C +15:34:52: 1992MHz 3.16 91% 0% 90% 0% 0% 0% 45.6°C +15:35:11: 1992MHz 3.26 92% 0% 91% 0% 0% 0% 41.9°C +15:35:29: 1992MHz 3.35 92% 0% 91% 0% 0% 0% 41.2°C +15:35:47: 1992MHz 3.45 82% 1% 80% 0% 0% 0% 41.9°C +15:36:06: 1992MHz 3.63 92% 0% 90% 0% 0% 0% 41.9°C +15:36:28: 1992MHz 3.71 93% 0% 92% 0% 0% 0% 46.1°C +15:36:50: 1992MHz 4.00 92% 0% 90% 0% 0% 0% 46.1°C +15:37:08: 1992MHz 3.75 84% 1% 82% 0% 0% 0% 41.9°C + +System health while running cpuminer: + +Time CPU load %cpu %sys %usr %nice %io %irq Temp +15:37:25: 1992MHz 3.88 25% 1% 23% 0% 0% 0% 46.7°C +15:38:10: 1992MHz 3.99 100% 0% 99% 0% 0% 0% 47.2°C +15:38:56: 1992MHz 4.03 100% 0% 99% 0% 0% 0% 47.8°C +15:39:42: 1992MHz 4.11 100% 0% 99% 0% 0% 0% 47.8°C +15:40:27: 1992MHz 4.09 100% 0% 99% 0% 0% 0% 47.8°C +15:41:13: 1992MHz 4.14 100% 0% 99% 0% 0% 0% 47.8°C +15:41:58: 1992MHz 4.10 100% 0% 99% 0% 0% 0% 48.3°C + +########################################################################## + +Linux 5.18.0-odroid-arm64 (debian-emmc) 12/11/22 _aarch64_ (4 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 32.89 0.01 1.59 0.08 0.00 65.43 + +Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd +mmcblk0 21.18 518.73 299.36 0.00 1273527 734956 0 +nvme0n1 0.09 2.37 0.00 0.00 5828 0 0 + + total used free shared buff/cache available +Mem: 3.6Gi 262Mi 3.3Gi 10Mi 112Mi 3.3Gi +Swap: 0B 0B 0B + +CPU sysfs topology (clusters, cpufreq members, clockspeeds) + cpufreq min max + CPU cluster policy speed speed core type + 0 0 0 408 1992 Cortex-A55 / r2p0 + 1 0 0 408 1992 Cortex-A55 / r2p0 + 2 0 0 408 1992 Cortex-A55 / r2p0 + 3 0 0 408 1992 Cortex-A55 / r2p0 + +Architecture: aarch64 +CPU op-mode(s): 32-bit, 64-bit +Byte Order: Little Endian +CPU(s): 4 +On-line CPU(s) list: 0-3 +Thread(s) per core: 1 +Core(s) per socket: 4 +Socket(s): 1 +NUMA node(s): 1 +Vendor ID: ARM +Model: 0 +Model name: Cortex-A55 +Stepping: r2p0 +CPU max MHz: 1992.0000 +CPU min MHz: 408.0000 +BogoMIPS: 48.00 +NUMA node0 CPU(s): 0-3 +Vulnerability Itlb multihit: Not affected +Vulnerability L1tf: Not affected +Vulnerability Mds: Not affected +Vulnerability Meltdown: Not affected +Vulnerability Spec store bypass: Not affected +Vulnerability Spectre v1: Mitigation; __user pointer sanitization +Vulnerability Spectre v2: Not affected +Vulnerability Srbds: Not affected +Vulnerability Tsx async abort: Not affected +Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp + +SoC guess: Rockchip RK3568 +DT compat: rockchip,rk3568-odroid-m1 + rockchip,rk3568 + Compiler: /usr/bin/gcc (Debian 10.2.1-6) 10.2.1 20210110 / aarch64-linux-gnu + Userland: arm64 + Kernel: 5.18.0-odroid-arm64/aarch64 + CONFIG_HZ=250 + CONFIG_HZ_250=y + CONFIG_PREEMPTION=y + CONFIG_PREEMPT=y + CONFIG_PREEMPT_BUILD=y + CONFIG_PREEMPT_COUNT=y + CONFIG_PREEMPT_NOTIFIERS=y + CONFIG_PREEMPT_RCU=y + raid6: neonx8 gen() 1408 MB/s + raid6: neonx4 gen() 1439 MB/s + raid6: neonx2 gen() 1284 MB/s + raid6: neonx1 gen() 1091 MB/s + raid6: int64x8 gen() 957 MB/s + raid6: int64x4 gen() 1046 MB/s + raid6: int64x2 gen() 937 MB/s + raid6: int64x1 gen() 697 MB/s + raid6: using algorithm neonx4 gen() 1439 MB/s + raid6: .... xor() 1099 MB/s, rmw enabled + raid6: using neon recovery algorithm + xor: measuring software checksum speed + xor: using function: 8regs (1719 MB/sec) + +########################################################################## + + vcc_ddr: 500 mV (0 mV max) + vdd_cpu: 1150 mV (1150 mV max) + vdd_gpu: 825 mV (1350 mV max) + vdd_npu: 900 mV (1350 mV max) + + opp-table-0: + 408 MHz 900.0 mV + 600 MHz 900.0 mV + 816 MHz 900.0 mV + 1104 MHz 900.0 mV + 1416 MHz 900.0 mV + 1608 MHz 975.0 mV + 1800 MHz 1050.0 mV + 1992 MHz 1150.0 mV + + opp-table-1: + 200 MHz 825.0 mV + 300 MHz 825.0 mV + 400 MHz 825.0 mV + 600 MHz 825.0 mV + 700 MHz 900.0 mV + 800 MHz 1000.0 mV + +| Hardkernel ODROID-M1 | 1992 MHz | 5.18 | Debian GNU/Linux 11 (bullseye) arm64 | 5430 | 1567 | 961090 | 3310 | 5960 | 7.76 | \ No newline at end of file diff --git a/results/4ioj.txt b/results/4ioj.txt new file mode 100644 index 0000000..8ae0730 --- /dev/null +++ b/results/4ioj.txt @@ -0,0 +1,500 @@ +sbc-bench v0.9.9 WEIBU F20A V1000 (Mon, 12 Dec 2022 13:26:23 +0800) + +Distributor ID: Debian +Description: Debian GNU/Linux 11 (bullseye) +Release: 11 +Codename: bullseye + +Device Info: + Manufacturer: WEIBU + Product Name: F20A + Version: V1000 + +BIOS/UEFI: + Vendor: Byosoft + Version: 0.0.1_ + Release Date: 2022-07-04_13:43:29 + BIOS Revision: 1.77 + Firmware Revision: 1.22 + +/usr/bin/gcc (Debian 10.2.1-6) 10.2.1 20210110 + +Uptime: 13:26:23 up 24 min, 2 users, load average: 0.10, 0.08, 0.09, 0°C, 109123675 + +Linux 5.15.0-5-arm64 (acosail2) 12/12/22 _aarch64_ (4 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 3.58 0.00 0.56 0.04 0.00 95.82 + +Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd +nvme0n1 19.25 274.72 218.17 162408.36 410221 325771 242509785 + + total used free shared buff/cache available +Mem: 15Gi 331Mi 15Gi 1.0Mi 146Mi 15Gi +Swap: 0B 0B 0B + +########################################################################## + +Checking cpufreq OPP (Phytium FTC663): + +No cpufreq support available. Measured on cpu1: 2598 MHz (2598.893/2598.893/2598.736) + +########################################################################## + +Hardware sensors: + +nvme-pci-0100 +Composite: +40.9 C (low = -273.1 C, high = +82.8 C) + (crit = +84.8 C) + +radeon-pci-0400 +temp1: +37.0 C (crit = +120.0 C, hyst = +90.0 C) + +########################################################################## + +Executing benchmark on cpu0 (Phytium FTC663): + +tinymembench v0.4.9 (simple benchmark for memory throughput and latency) + +========================================================================== +== Memory bandwidth tests == +== == +== Note 1: 1MB = 1000000 bytes == +== Note 2: Results for 'copy' tests show how many bytes can be == +== copied per second (adding together read and writen == +== bytes would have provided twice higher numbers) == +== Note 3: 2-pass copy means that we are using a small temporary buffer == +== to first fetch data into it, and only then write it to the == +== destination (source -> L1 cache, L1 cache -> destination) == +== Note 4: If sample standard deviation exceeds 0.1%, it is shown in == +== brackets == +========================================================================== + + C copy backwards : 3674.3 MB/s (0.1%) + C copy backwards (32 byte blocks) : 3648.4 MB/s + C copy backwards (64 byte blocks) : 3651.0 MB/s + C copy : 3654.7 MB/s + C copy prefetched (32 bytes step) : 3881.0 MB/s + C copy prefetched (64 bytes step) : 3876.5 MB/s + C 2-pass copy : 3446.4 MB/s + C 2-pass copy prefetched (32 bytes step) : 3644.0 MB/s + C 2-pass copy prefetched (64 bytes step) : 3655.6 MB/s + C fill : 14560.7 MB/s (2.0%) + C fill (shuffle within 16 byte blocks) : 14262.1 MB/s (0.8%) + C fill (shuffle within 32 byte blocks) : 14154.3 MB/s (0.5%) + C fill (shuffle within 64 byte blocks) : 14168.3 MB/s (0.6%) + --- + standard memcpy : 3764.2 MB/s + standard memset : 14540.3 MB/s (1.6%) + --- + NEON LDP/STP copy : 3665.8 MB/s + NEON LDP/STP copy pldl2strm (32 bytes step) : 1876.9 MB/s + NEON LDP/STP copy pldl2strm (64 bytes step) : 1876.2 MB/s + NEON LDP/STP copy pldl1keep (32 bytes step) : 4127.8 MB/s + NEON LDP/STP copy pldl1keep (64 bytes step) : 4113.7 MB/s + NEON LD1/ST1 copy : 3661.4 MB/s + NEON STP fill : 14818.4 MB/s (2.1%) + NEON STNP fill : 14008.2 MB/s (1.6%) + ARM LDP/STP copy : 3666.8 MB/s + ARM STP fill : 14678.3 MB/s (1.9%) + ARM STNP fill : 13992.2 MB/s (0.5%) + +========================================================================== +== Framebuffer read tests. == +== == +== Many ARM devices use a part of the system memory as the framebuffer, == +== typically mapped as uncached but with write-combining enabled. == +== Writes to such framebuffers are quite fast, but reads are much == +== slower and very sensitive to the alignment and the selection of == +== CPU instructions which are used for accessing memory. == +== == +== Many x86 systems allocate the framebuffer in the GPU memory, == +== accessible for the CPU via a relatively slow PCI-E bus. Moreover, == +== PCI-E is asymmetric and handles reads a lot worse than writes. == +== == +== If uncached framebuffer reads are reasonably fast (at least 100 MB/s == +== or preferably >300 MB/s), then using the shadow framebuffer layer == +== is not necessary in Xorg DDX drivers, resulting in a nice overall == +== performance improvement. For example, the xf86-video-fbturbo DDX == +== uses this trick. == +========================================================================== + + NEON LDP/STP copy (from framebuffer) : 79.5 MB/s (1.2%) + NEON LDP/STP 2-pass copy (from framebuffer) : 88.7 MB/s (0.2%) + NEON LD1/ST1 copy (from framebuffer) : 156.7 MB/s + NEON LD1/ST1 2-pass copy (from framebuffer) : 154.3 MB/s (0.1%) + ARM LDP/STP copy (from framebuffer) : 43.9 MB/s (0.5%) + ARM LDP/STP 2-pass copy (from framebuffer) : 47.6 MB/s (0.1%) + +========================================================================== +== Memory latency test == +== == +== Average time is measured for random memory accesses in the buffers == +== of different sizes. The larger is the buffer, the more significant == +== are relative contributions of TLB, L1/L2 cache misses and SDRAM == +== accesses. For extremely large buffer sizes we are expecting to see == +== page table walk with several requests to SDRAM for almost every == +== memory access (though 64MiB is not nearly large enough to experience == +== this effect to its fullest). == +== == +== Note 1: All the numbers are representing extra time, which needs to == +== be added to L1 cache latency. The cycle timings for L1 cache == +== latency can be usually found in the processor documentation. == +== Note 2: Dual random read means that we are simultaneously performing == +== two independent memory accesses at a time. In the case if == +== the memory subsystem can't handle multiple outstanding == +== requests, dual random read has the same timings as two == +== single reads performed one after another. == +========================================================================== + +block size : single random read / dual random read, [MADV_NOHUGEPAGE] + 1024 : 0.0 ns / 0.0 ns + 2048 : 0.0 ns / 0.0 ns + 4096 : 0.0 ns / 0.0 ns + 8192 : 0.0 ns / 0.0 ns + 16384 : 0.0 ns / 0.0 ns + 32768 : 0.0 ns / 0.0 ns + 65536 : 3.5 ns / 5.4 ns + 131072 : 5.2 ns / 7.2 ns + 262144 : 7.5 ns / 9.5 ns + 524288 : 8.6 ns / 10.8 ns + 1048576 : 9.3 ns / 11.5 ns + 2097152 : 11.4 ns / 14.7 ns + 4194304 : 18.6 ns / 24.7 ns + 8388608 : 59.2 ns / 91.7 ns + 16777216 : 99.4 ns / 141.0 ns + 33554432 : 120.2 ns / 160.3 ns + 67108864 : 136.0 ns / 178.5 ns + +block size : single random read / dual random read, [MADV_HUGEPAGE] + 1024 : 0.0 ns / 0.0 ns + 2048 : 0.0 ns / 0.0 ns + 4096 : 0.0 ns / 0.0 ns + 8192 : 0.0 ns / 0.0 ns + 16384 : 0.0 ns / 0.0 ns + 32768 : 0.0 ns / 0.0 ns + 65536 : 3.5 ns / 5.4 ns + 131072 : 5.2 ns / 7.2 ns + 262144 : 6.1 ns / 7.8 ns + 524288 : 6.6 ns / 8.0 ns + 1048576 : 6.8 ns / 8.2 ns + 2097152 : 7.7 ns / 8.9 ns + 4194304 : 15.5 ns / 20.8 ns + 8388608 : 49.3 ns / 74.0 ns + 16777216 : 85.9 ns / 115.4 ns + 33554432 : 105.0 ns / 128.1 ns + 67108864 : 116.0 ns / 133.2 ns + +########################################################################## + +Executing benchmark twice on cluster 0 (Phytium FTC663) + +OpenSSL 1.1.1n, built on 15 Mar 2022 +type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes +aes-128-cbc 467141.56k 911633.02k 1196227.24k 1283702.78k 1328463.87k 1331467.61k +aes-128-cbc 466872.34k 911606.36k 1196115.29k 1283473.07k 1328201.73k 1328917.16k +aes-192-cbc 437668.46k 800345.43k 1009514.84k 1070540.46k 1100327.59k 1102817.96k +aes-192-cbc 437562.03k 800214.27k 1009408.85k 1070004.57k 1101075.80k 1103178.41k +aes-256-cbc 406987.51k 707652.10k 867878.14k 913013.08k 934245.72k 936558.59k +aes-256-cbc 407026.66k 707539.29k 867841.54k 911707.82k 935231.49k 936913.58k + +########################################################################## + +Executing benchmark single-threaded on cpu0 (Phytium FTC663) + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 15905 MB, # CPU hardware threads: 4 +RAM usage: 435 MB, # Benchmark threads: 1 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 2808 100 2733 2732 | 32275 100 2756 2756 +23: 2635 100 2686 2685 | 31923 100 2763 2763 +24: 2543 100 2735 2735 | 31480 100 2764 2764 +25: 2492 100 2846 2846 | 31031 100 2762 2762 +---------------------------------- | ------------------------------ +Avr: 100 2750 2749 | 100 2761 2761 +Tot: 100 2756 2755 + +########################################################################## + +Executing benchmark 3 times multi-threaded on CPUs 0-3 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 15905 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 9149 344 2589 8900 | 124585 396 2684 10629 +23: 9492 359 2692 9672 | 122831 397 2680 10628 +24: 8558 348 2641 9202 | 120556 397 2668 10583 +25: 8814 355 2837 10064 | 118439 396 2662 10541 +---------------------------------- | ------------------------------ +Avr: 352 2690 9460 | 396 2673 10595 +Tot: 374 2682 10027 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 15905 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 9222 343 2619 8972 | 126469 397 2715 10790 +23: 8670 343 2576 8835 | 124740 398 2712 10793 +24: 8994 357 2707 9671 | 122273 397 2700 10734 +25: 8738 354 2822 9977 | 120548 399 2690 10728 +---------------------------------- | ------------------------------ +Avr: 349 2681 9364 | 398 2704 10761 +Tot: 373 2693 10063 + +7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 +p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE) + +LE +CPU Freq: - - - - - - - - - + +RAM size: 15905 MB, # CPU hardware threads: 4 +RAM usage: 882 MB, # Benchmark threads: 4 + + Compressing | Decompressing +Dict Speed Usage R/U Rating | Speed Usage R/U Rating + KiB/s % MIPS MIPS | KiB/s % MIPS MIPS + +22: 9214 345 2595 8963 | 124161 394 2689 10593 +23: 9124 352 2642 9297 | 122360 394 2685 10587 +24: 8731 352 2668 9388 | 119621 393 2675 10501 +25: 8721 354 2816 9958 | 117673 393 2666 10473 +---------------------------------- | ------------------------------ +Avr: 351 2680 9401 | 393 2679 10538 +Tot: 372 2680 9970 + +Compression: 9460,9364,9401 +Decompression: 10595,10761,10538 +Total: 10027,10063,9970 + +########################################################################## + +Testing maximum cpufreq again, still under full load. System health now: + +Time CPU n/a load %cpu %sys %usr %nice %io %irq Temp +13:36:14: --- 3.51 96% 0% 95% 0% 0% 0% 0°C + +Checking cpufreq OPP (Phytium FTC663): + +No cpufreq support available. Measured on cpu1: 2598 MHz (2598.318/2598.266/2598.213) + +########################################################################## + +Hardware sensors: + +nvme-pci-0100 +Composite: +40.9 C (low = -273.1 C, high = +82.8 C) + (crit = +84.8 C) + +radeon-pci-0400 +temp1: +37.5 C (crit = +120.0 C, hyst = +90.0 C) + +########################################################################## + +System health while running tinymembench: + +Time CPU n/a load %cpu %sys %usr %nice %io %irq Temp +13:26:27: --- 0.17 4% 0% 3% 0% 0% 0% -- +13:27:07: --- 0.58 25% 0% 25% 0% 0% 0% -- +13:27:47: --- 0.78 25% 0% 25% 0% 0% 0% -- +13:28:27: --- 0.89 25% 0% 25% 0% 0% 0% -- +13:29:07: --- 0.94 25% 0% 25% 0% 0% 0% -- +13:29:47: --- 0.97 25% 0% 25% 0% 0% 0% -- +13:30:27: --- 0.99 25% 0% 25% 0% 0% 0% -- +13:31:07: --- 1.00 25% 0% 25% 0% 0% 0% -- + +System health while running OpenSSL benchmark: + +Time CPU n/a load %cpu %sys %usr %nice %io %irq Temp +13:31:32: --- 1.00 7% 0% 7% 0% 0% 0% -- +13:31:48: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:32:04: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:32:20: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:32:36: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:32:52: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:33:08: --- 1.00 25% 0% 25% 0% 0% 0% -- + +System health while running 7-zip single core benchmark: + +Time CPU n/a load %cpu %sys %usr %nice %io %irq Temp +13:33:20: --- 1.00 8% 0% 8% 0% 0% 0% -- +13:33:25: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:33:30: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:33:35: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:33:40: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:33:45: --- 1.00 25% 0% 24% 0% 0% 0% -- +13:33:50: --- 1.00 25% 0% 25% 0% 0% 0% -- +13:33:55: --- 1.00 25% 0% 24% 0% 0% 0% -- +13:34:00: --- 1.00 25% 0% 24% 0% 0% 0% -- +13:34:05: --- 1.00 25% 0% 24% 0% 0% 0% -- +13:34:10: --- 1.00 25% 0% 25% 0% 0% 0% -- + +System health while running 7-zip multi core benchmark: + +Time CPU n/a load %cpu %sys %usr %nice %io %irq Temp +13:34:11: --- 1.00 9% 0% 8% 0% 0% 0% -- +13:34:22: --- 1.31 93% 0% 93% 0% 0% 0% -- +13:34:33: --- 1.98 93% 0% 93% 0% 0% 0% -- +13:34:43: --- 2.37 89% 0% 89% 0% 0% 0% -- +13:34:53: --- 2.62 95% 0% 95% 0% 0% 0% -- +13:35:03: --- 2.83 93% 0% 93% 0% 0% 0% -- +13:35:14: --- 3.01 94% 0% 93% 0% 0% 0% -- +13:35:24: --- 3.08 89% 0% 88% 0% 0% 0% -- +13:35:34: --- 3.30 96% 1% 95% 0% 0% 0% -- +13:35:44: --- 3.41 93% 0% 93% 0% 0% 0% -- +13:35:54: --- 3.50 93% 0% 92% 0% 0% 0% -- +13:36:04: --- 3.42 89% 0% 88% 0% 0% 0% -- +13:36:14: --- 3.51 96% 0% 95% 0% 0% 0% -- + +########################################################################## + +Linux 5.15.0-5-arm64 (acosail2) 12/12/22 _aarch64_ (4 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 13.57 0.00 0.47 0.03 0.00 85.92 + +Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd +nvme0n1 14.61 201.08 159.88 116138.41 419877 333843 242509785 + + total used free shared buff/cache available +Mem: 15Gi 332Mi 15Gi 1.0Mi 158Mi 15Gi +Swap: 0B 0B 0B + +CPU sysfs topology (clusters, cpufreq members, clockspeeds) + cpufreq min max + CPU cluster policy speed speed core type + 0 0 0 - - Phytium FTC663 / r1p3 + 1 0 0 - - Phytium FTC663 / r1p3 + 2 0 0 - - Phytium FTC663 / r1p3 + 3 0 0 - - Phytium FTC663 / r1p3 + +Architecture: aarch64 +CPU op-mode(s): 32-bit, 64-bit +Byte Order: Little Endian +CPU(s): 4 +On-line CPU(s) list: 0-3 +Thread(s) per core: 1 +Core(s) per socket: 4 +Socket(s): 1 +NUMA node(s): 1 +Vendor ID: 0x70 +Model: 3 +Stepping: 0x1 +BogoMIPS: 96.00 +NUMA node0 CPU(s): 0-3 +Vulnerability Itlb multihit: Not affected +Vulnerability L1tf: Not affected +Vulnerability Mds: Not affected +Vulnerability Meltdown: Mitigation; PTI +Vulnerability Mmio stale data: Not affected +Vulnerability Retbleed: Not affected +Vulnerability Spec store bypass: Not affected +Vulnerability Spectre v1: Mitigation; __user pointer sanitization +Vulnerability Spectre v2: Not affected +Vulnerability Srbds: Not affected +Vulnerability Tsx async abort: Not affected +Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid + +Processor Information + Socket Designation: FT2000_CPU + Type: Central Processor + Family: ARM + Manufacturer: Phytium + ID: 33 66 1F 70 00 00 00 00 + Signature: Implementor 0x70, Variant 0x1, Architecture 15, Part 0x663, Revision 3 + Version: FT-2000/4 + Voltage: 0.8 V + External Clock: 48 MHz + Max Speed: 2600 MHz + Current Speed: 2600 MHz + Status: Populated, Enabled + L1 Cache Handle: 0x0001 + L2 Cache Handle: 0x0002 + L3 Cache Handle: 0x0003 + Asset Tag: 57324D8F + Part Number: 14 + Core Count: 4 + Core Enabled: 4 + Thread Count: 4 + Characteristics: + 64-bit capable + Multi-Core + Execute Protection + Enhanced Virtualization + Power/Performance Control + +Signature: 00Phytiumr1p300Phytiumr1p300Phytiumr1p300Phytiumr1p3 + Compiler: /usr/bin/gcc (Debian 10.2.1-6) 10.2.1 20210110 / aarch64-linux-gnu + Userland: arm64 + Kernel: 5.15.0-5-arm64/aarch64 + CONFIG_HZ=250 + CONFIG_HZ_250=y + CONFIG_PREEMPT_NOTIFIERS=y + CONFIG_PREEMPT_VOLUNTARY=y + raid6: neonx8 gen() 8082 MB/s + raid6: neonx8 xor() 6096 MB/s + raid6: neonx4 gen() 8343 MB/s + raid6: neonx4 xor() 6527 MB/s + raid6: neonx2 gen() 7026 MB/s + raid6: neonx2 xor() 5758 MB/s + raid6: neonx1 gen() 5354 MB/s + raid6: neonx1 xor() 4750 MB/s + raid6: int64x8 gen() 4485 MB/s + raid6: int64x8 xor() 2579 MB/s + raid6: int64x4 gen() 4645 MB/s + raid6: int64x4 xor() 2598 MB/s + raid6: int64x2 gen() 4287 MB/s + raid6: int64x2 xor() 2255 MB/s + raid6: int64x1 gen() 3163 MB/s + raid6: int64x1 xor() 1690 MB/s + raid6: using algorithm neonx4 gen() 8343 MB/s + raid6: .... xor() 6527 MB/s, rmw enabled + raid6: using neon recovery algorithm + xor: measuring software checksum speed + xor: using function: 32regs (11813 MB/sec) + +DIMM configuration: + *-bank:0 + description: DIMM DDR4 Synchronous 2666 MHz (0.4 ns) + product: KBM16024UDX821-2666 + vendor: KingboMars Technology Co. Ltd. + physical id: 0 + configured speed: 2666MT/s + size: 16GiB + width: 64 bits + clock: 2666MHz (0.4ns) + *-bank:1 + description: [empty] + product: NO DIMM + vendor: NO DIMM + physical id: 1 + slot: DIMM1 + +| WEIBU F20A V1000 | ~2600 MHz | 5.15 | Debian GNU/Linux 11 (bullseye) arm64 | 10020 | 2755 | 936740 | 3760 | 14540 | - | \ No newline at end of file diff --git a/results/ARMv8-Crypto-Extensions.md b/results/ARMv8-Crypto-Extensions.md index 44a5101..fefe2bb 100644 --- a/results/ARMv8-Crypto-Extensions.md +++ b/results/ARMv8-Crypto-Extensions.md @@ -66,6 +66,7 @@ Crawling through [sbc-bench results collection](../Results.md) comparing +30 dif | [Nintendo Switch](http://ix.io/3Di2) | 2090 | 746680 | 357 | | FTC663 | | | | | [Phytium D2000](http://ix.io/3Sl9) | 2300 | 828520 | 360 | +| [Phytium FT-2000](http://ix.io/4ioj) | 2600 | 936740 | 360 | | Carmel | | | | | [Jetson Xavier NX](http://ix.io/3YWp) | 1890 | 706280 | 374 | | Apple Icestorm | | | | diff --git a/results/Sorted-Results.md b/results/Sorted-Results.md index ca0480d..c6664ad 100644 --- a/results/Sorted-Results.md +++ b/results/Sorted-Results.md @@ -32,6 +32,7 @@ | [Loongson-3A5000-HV](http://ix.io/4dzX) | 2500 MHz | 4.19 | Loongnix 20 loongarch64 | **11120** | 2990 | 116900 | 6930 | 19170 | - | | [Pentium N6005](http://ix.io/4f3I) | 3300/2000 MHz | 6.0 | Jammy amd64 | **10810** | 3485 | 922000 | 9600 | 11300 | 20.15 | | [Celeron N5100](http://ix.io/3IlQ) | 2800/1100 MHz | 5.13 | Focal amd64 | **10550** | 3088 | 783800 | 7750 | 8090 | 19.22 | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | 2600 MHz | 5.15 | Bullseye arm64 | **10020** | 2755 | 936740 | 3760 | 14540 | - | | [OnePlus 5](http://ix.io/4fdD) | 2360/1900 MHz | 6.1 | Jammy arm64 | **9800** | 2474 | 883330 | 9720 | 14070 | 12.58 | | [ODROID-N2+](http://ix.io/3DtN) | 2400/2015 MHz | 5.14 | Impish arm64 | **9790** | 2253 | 1366930 | 4300 | 7480 | - | | [ODROID-N2+](http://ix.io/3LoH) | 2400/2015 MHz | 5.14 | Hirsute arm64 | **9780** | 2386 | 1366090 | 4030 | 7120 | - | @@ -102,6 +103,7 @@ | [ODROID-C4](http://ix.io/2kaS) | 2010 MHz | 4.9 | Focal arm64 | **5450** | 1459 | 941590 | 3310 | 6270 | 7.71 | | [Khadas VIM2](http://ix.io/1iJ7) | 1415/1000 MHz | 4.17 | Bionic arm64 | **5450** | 993 | 659600 | 1920 | 5920 | 8.59 | | [Tinkerboard](http://ix.io/3Lir) | 1800 MHz | 4.4 | Buster armhf | **5440** | 1693 | 66300 | 1340 | 3510 | - | +| [ODROID-M1](http://ix.io/4ijy) | 2060 MHz | 5.18 | Bullseye arm64 | **5430** | 1567 | 961090 | 3310 | 5960 | 7.76 | | [Tinkerboard](http://ix.io/1iSX) | 1730 MHz | 4.14 | Stretch armhf | **5350** | 1563 | 66600 | 1480 | 3900 | - | | [AMedia X96 Max+](http://ix.io/3QOj) | 2100 MHz | 5.15 | Focal arm64 | **5270** | 1330 | 981830 | 2630 | 5150 | - | | [Khadas VIM3L](http://ix.io/26Wy) | 1900 MHz | 4.9 | Bionic arm64 | **5160** | 1399 | 892110 | 3670 | 6360 | 7.29 | @@ -126,7 +128,7 @@ | [MangoPi Mcore](http://ix.io/4bSf) | 1800 MHz | 5.19 | Jammy arm64 | **4100** | 1218 | 840270 | 990 | 2380 | - | | [ODROID-C2](http://ix.io/1ixI) | 1750 MHz | 3.14 | Xenial arm64 | **4070** | 1128 | 48500 | 1750 | 3100 | - | | [Celeron 5205U](http://ix.io/4eiM) | 1900 MHz | 5.15 | Jammy amd64 | **4060** | 2171 | 521090 | 7350 | 16020 | 11.20 | -| [ODROID-C2](http://ix.io/3N6Q) | 1530 MHz | 5.10 | Bullseye arm64 | **4010** | 1186 | 51490 | 1600 | 2730 | - | +| [ODROID-C2](http://ix.io/4hOp) | 1530 MHz | 5.19 | Jammy arm64 | **4020** | 1187 | 51390 | 1590 | 2730 | - | | [Khadas VIM1S](http://ix.io/4bbv) | 2000 MHz | 5.4 | Jammy arm64 | **4000** | 1148 | 436540 | 1970 | 7530 | - | | [x5-Z8300](http://ix.io/1lgD) | 1420 MHz | 4.9 | Stretch amd64 | **3900** | 950 | 178010 | 2380 | 2380 | 7.81 | | [Tronsmart MXIII Plus](http://ix.io/3S5U) | 1560 MHz | 5.10 | Buster armhf | **3880** | 1113 | 42570 | 1470 | 3430 | - | @@ -164,6 +166,7 @@ | [NanoPi M1 Plus](http://ix.io/3N2z) | 1370 MHz | 4.19 | Bionic armhf | **3030** | 881 | 26660 | 830 | 3450 | - | | [ODROID-C1](http://ix.io/4eg5) | 1500 MHz | 5.19 | Jammy armhf | **3010** | 878 | 29260 | 390 | 2910 | - | | [BPi R2](http://ix.io/4dO7) | 1300 MHz | 4.19 | Focal armhf | **2990** | 854 | 25260 | 1550 | 3220 | - | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | 1200 MHz | 5.15 | Raspbian Sid | **2970** | 977 | 36230 | 1110 | 1700 | 2.89 | | [MT6580 K9M1](http://ix.io/466y) | 1300 MHz | 5.19 | Sid armhf | **2930** | 860 | 25300 | 1250 | 3300 | - | | [Orange Pi Plus 2](http://ix.io/1iX4) | 1300 MHz | 4.14 | Stretch armhf | **2890** | 812 | 25250 | 830 | 3240 | - | | [Teres-I](http://ix.io/1tJg) | 1050 MHz | 4.19 | Stretch arm64 | **2785** | 780 | 491590 | 1080 | 2820 | - | @@ -214,6 +217,7 @@ | [Celeron N5105](http://ix.io/3Qf7) | 2900/2000 MHz | 5.13 | Focal amd64 | 11450 | **3059** | 811760 | 7710 | 9290 | 21.79 | | [Loongson-3A5000-HV](http://ix.io/4dzX) | 2500 MHz | 4.19 | Loongnix 20 loongarch64 | 11120 | **2990** | 116900 | 6930 | 19170 | - | | [Ryzen R1606G](http://ix.io/2tQQ) | 2600/1400 MHz | 5.4 | Focal amd64 | 7970 | **2854** | 700780 | 8230 | 5970 | 16.45 | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | 2600 MHz | 5.15 | Bullseye arm64 | 10020 | **2755** | 936740 | 3760 | 14540 | - | | [Jetson Xavier AGX](http://ix.io/4ebH) | 2250 MHz | 4.9 | Bionic arm64 | 21590 | **2742** | 853250 | 10910 | 22520 | 26.57 | | [Athlon II X3 420e](http://ix.io/4eOo) | 2600 MHz | 4.19 | Buster amd64 | 4780 | **2566** | 98840 | 4120 | 3870 | - | | [OnePlus 5](http://ix.io/4fdD) | 2360/1900 MHz | 6.1 | Jammy arm64 | 9800 | **2474** | 883330 | 9720 | 14070 | 12.58 | @@ -281,6 +285,7 @@ | [Raspberry Pi 4 B](http://ix.io/1MFf) | 1500 MHz | 4.19 | Raspbian Buster | 5500 | **1606** | 64860 | 2460 | 3170 | - | | [ODROID-XU4](http://ix.io/3GnC) | 2000/1400 MHz | 5.4 | Focal armhf | 8980 | **1604** | 72020 | 2280 | 4910 | - | | [RockPro64](http://ix.io/1lBC) | 1800/1400 MHz | 4.4 | Stretch arm64 | 6140 | **1580** | 1015600 | 2770 | 4850 | 8.14 | +| [ODROID-M1](http://ix.io/4ijy) | 2060 MHz | 5.18 | Bullseye arm64 | 5430 | **1567** | 961090 | 3310 | 5960 | 7.76 | | [Tinkerboard](http://ix.io/1iSX) | 1730 MHz | 4.14 | Stretch armhf | 5350 | **1563** | 66600 | 1480 | 3900 | - | | [Jetson Nano](http://ix.io/1I4j) | 1430 MHz | 4.9 | Bionic arm64 | 5060 | **1473** | 513700 | 3680 | 8560 | 6.64 | | [ODROID-C4](http://ix.io/2kaS) | 2010 MHz | 4.9 | Focal arm64 | 5450 | **1459** | 941590 | 3310 | 6270 | 7.71 | @@ -307,7 +312,7 @@ | [MangoPi Mcore](http://ix.io/4bSf) | 1800 MHz | 5.19 | Jammy arm64 | 4100 | **1218** | 840270 | 990 | 2380 | - | | [Helios4](http://ix.io/1jCy) | 1600 MHz | 4.14 | Stretch armhf | 2210 | **1215** | 42500 *98560 | 910 | 4840 | - | | [HummingBoard Pulse i.MX8M Quad](http://ix.io/27FC) | 1500 MHz | 4.19 | Buster arm64 | 4330 | **1201** | 695540 | 2230 | 9900 | - | -| [ODROID-C2](http://ix.io/3N6Q) | 1530 MHz | 5.10 | Bullseye arm64 | 4010 | **1186** | 51490 | 1600 | 2730 | - | +| [ODROID-C2](http://ix.io/4hOp) | 1530 MHz | 5.19 | Jammy arm64 | 4020 | **1187** | 51390 | 1590 | 2730 | - | | [NanoPi K2](http://ix.io/3Qve) | 1480 MHz | 5.10 | Bullseye arm64 | 3880 | **1154** | 51490 | 1850 | 3790 | - | | [Khadas VIM1S](http://ix.io/4bbv) | 2000 MHz | 5.4 | Jammy arm64 | 4000 | **1148** | 436540 | 1970 | 7530 | - | | [Khadas VIM1](http://ix.io/3QLN) | 1415 MHz | 5.1 | Buster arm64 | 3860 | **1136** | 659460 | 1930 | 5900 | - | @@ -340,6 +345,7 @@ | [Ugoos UT2](http://ix.io/408h) | 1560 MHz | 5.10 | Jammy armhf | 3320 | **994** | 43250 | 320 | 2020 | - | | [Khadas VIM2](http://ix.io/1iJ7) | 1415/1000 MHz | 4.17 | Bionic arm64 | 5450 | **993** | 659600 | 1920 | 5920 | 8.59 | | [Orange Pi Prime](http://ix.io/2kTH) | 1370 MHz | 5.4 | Buster | 3590 | **984** | 637980 | 1180 | 3540 | - | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | 1200 MHz | 5.15 | Raspbian Sid | 2970 | **977** | 36230 | 1110 | 1700 | 2.89 | | [Rock64](http://ix.io/1iHo) | 1300 MHz | 4.4 | Stretch arm64 | 3430 | **952** | 601000 | 1350 | 5680 | 3.64 | | [Marvell PXA1908](http://ix.io/46hs) | 1245 MHz | 3.14 | Bullseye arm64 | 3180 | **951** | 581840 | 740 | 2220 | - | | [x5-Z8300](http://ix.io/1lgD) | 1420 MHz | 4.9 | Stretch amd64 | 3900 | **950** | 178010 | 2380 | 2380 | 7.81 | @@ -434,7 +440,9 @@ | [ODROID-C4](http://ix.io/3TQ2) | 2100 MHz | 5.10 | Buster arm64 | 5770 | 1679 | **981940** | 3540 | 5150 | - | | [AMedia X96 Max+](http://ix.io/3QOj) | 2100 MHz | 5.15 | Focal arm64 | 5270 | 1330 | **981830** | 2630 | 5150 | - | | [ODROID-HC4](http://ix.io/3Na5) | 2100 MHz | 5.10 | Buster arm64 | 5730 | 1672 | **980970** | 3540 | 5150 | - | +| [ODROID-M1](http://ix.io/4ijy) | 2060 MHz | 5.18 | Bullseye arm64 | 5430 | 1567 | **961090** | 3310 | 5960 | 7.76 | | [ODROID-C4](http://ix.io/2kaS) | 2010 MHz | 4.9 | Focal arm64 | 5450 | 1459 | **941590** | 3310 | 6270 | 7.71 | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | 2600 MHz | 5.15 | Bullseye arm64 | 10020 | 2755 | **936740** | 3760 | 14540 | - | | [Radxa ROCK 3A](http://ix.io/40TX) | 2000 MHz | 5.18 | Bullseye arm64 | 5110 | 1450 | **935920** | 3150 | 6250 | 7.58 | | [Pentium N6005](http://ix.io/4f3I) | 3300/2000 MHz | 6.0 | Jammy amd64 | 10810 | 3485 | **922000** | 9600 | 11300 | 20.15 | | [NanoPi M4v2](http://ix.io/3MAK) | 2015/1510 MHz | 5.10 | Bullseye arm64 | 6680 | 1855 | **921980** | 3110 | 7640 | - | @@ -522,8 +530,8 @@ | [Tinkerboard](http://ix.io/3Lir) | 1800 MHz | 4.4 | Buster armhf | 5440 | 1693 | **66300** | 1340 | 3510 | - | | [Raspberry Pi 4 B](http://ix.io/3EgS) | 1500 MHz | 5.10 | Raspberry Pi OS Buster | 5750 | 1661 | **64930** | 2550 | 3430 | - | | [Raspberry Pi 4 B](http://ix.io/1MFf) | 1500 MHz | 4.19 | Raspbian Buster | 5500 | 1606 | **64860** | 2460 | 3170 | - | -| [ODROID-C2](http://ix.io/3N6Q) | 1530 MHz | 5.10 | Bullseye arm64 | 4010 | 1186 | **51490** | 1600 | 2730 | - | | [NanoPi K2](http://ix.io/3Qve) | 1480 MHz | 5.10 | Bullseye arm64 | 3880 | 1154 | **51490** | 1850 | 3790 | - | +| [ODROID-C2](http://ix.io/4hOp) | 1530 MHz | 5.19 | Jammy arm64 | 4020 | 1187 | **51390** | 1590 | 2730 | - | | [NanoPi K2](http://ix.io/1iT1) | 1480 MHz | 4.14 | Stretch arm64 | 3850 | 1095 | **50370** | 1660 | 3870 | 4.61 | | [ODROID-C2](http://ix.io/1ixI) | 1750 MHz | 3.14 | Xenial arm64 | 4070 | 1128 | **48500** | 1750 | 3100 | - | | [Clearfog A1](http://ix.io/4d1U) | 1600 MHz | 5.15 | Bullseye armhf | 2230 | 1239 | **44080** | 910 | 5060 | - | @@ -541,6 +549,7 @@ | [Raspberry Pi 4 B](http://ix.io/3OBF) | 1800 MHz | 5.10 | Raspberry Pi OS Bullseye arm64 | 5790 | 1769 | **36260** | 2330 | 3120 | 8.74 | | [Raspberry Pi 4 B](http://ix.io/3InF) | 1800 MHz | 5.15 | Armbian Jammy arm64 | 5640 | 1752 | **36260** | 2580 | 3110 | - | | [Raspberry Pi 4 B](http://ix.io/3F9C) | 1800 MHz | 5.10 | Raspberry Pi OS Buster arm64 | 5760 | 1741 | **36240** | 2240 | 3120 | 9.46 | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | 1200 MHz | 5.15 | Raspbian Sid | 2970 | 977 | **36230** | 1110 | 1700 | 2.89 | | [Celeron J1900](http://ix.io/4hKV) | 2415/1333 MHz | 5.4 | Focal amd64 | 6560 | 1806 | **34900** | 3780 | 3390 | - | | [SBC2D70 (SSD202D)](http://ix.io/3N1U) | 1700 MHz | 5.16 | Sid armhf | 1960 | 1094 | **33120** | 770 | 3190 | - | | [Akaso M8S](http://ix.io/3R3N) | 1200 MHz | 5.10 | Buster armhf | 3050 | 885 | **32120** | 1160 | 3330 | - | @@ -624,6 +633,7 @@ | [ODROID-N2+](http://ix.io/3R1a) | 2400/2015 MHz | 5.10 | Focal arm64 | 9680 | 2372 | 1366730 | **4030** | 7120 | - | | [ODROID-N2+](http://ix.io/3LoH) | 2400/2015 MHz | 5.14 | Hirsute arm64 | 9780 | 2386 | 1366090 | **4030** | 7120 | - | | [Celeron J1900](http://ix.io/4hKV) | 2415/1333 MHz | 5.4 | Focal amd64 | 6560 | 1806 | 34900 | **3780** | 3390 | - | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | 2600 MHz | 5.15 | Bullseye arm64 | 10020 | 2755 | 936740 | **3760** | 14540 | - | | [RockPro64](http://ix.io/1ub9) | 1800/1400 MHz | 4.4 | Stretch arm64 | 6420 | 1673 | 1018480 | **3720** | 8400 | 8.24 | | [RockPro64](http://ix.io/2sZH) | 2010/1510 MHz | 5.4 | Focal arm64 | 6920 | 1826 | 1145300 | **3700** | 8430 | 11.55 | | [Khadas VIM3L](http://ix.io/3Vdt) | 1900 MHz | 5.16 | Bullseye arm64 | 5110 | 1403 | 890730 | **3700** | 5140 | - | @@ -637,6 +647,7 @@ | [Phytium D2000 2xSO-DIMM](http://ix.io/446h) | 2300 MHz | 5.19 | Jammy arm64 | 16670 | 2252 | 828130 | **3480** | 16110 | - | | [Rock Pi 4](http://ix.io/3Q2q) | 2000/1500 MHz | 5.10 | Focal arm64 | 6900 | 1899 | 1146500 | **3430** | 8260 | - | | [T-HEAD C910 RVB-ICE](http://ix.io/41AB) | 1200 MHz | 5.10 | Sid riscv64 | 1760 | 1007 | 26930 | **3340** | 6470 | - | +| [ODROID-M1](http://ix.io/4ijy) | 2060 MHz | 5.18 | Bullseye arm64 | 5430 | 1567 | 961090 | **3310** | 5960 | 7.76 | | [ODROID-C4](http://ix.io/2kaS) | 2010 MHz | 4.9 | Focal arm64 | 5450 | 1459 | 941590 | **3310** | 6270 | 7.71 | | [x5-Z8350](http://ix.io/2Jdb) | 1920/1680 MHz | 5.4 | Focal amd64 | 4790 | 1454 | 237230 | **3170** | 2960 | 9.38 | | [Radxa ROCK 3A](http://ix.io/40TX) | 2000 MHz | 5.18 | Bullseye arm64 | 5110 | 1450 | 935920 | **3150** | 6250 | 7.58 | @@ -689,7 +700,7 @@ | [Radxa Zero](http://ix.io/3PlT) | 1800 MHz | 5.10 | Buster arm64 | 4570 | 1373 | 839080 | **1610** | 5250 | 6.82 | | [Radxa Zero](http://ix.io/3wZn) | 1800 MHz | 5.10 | Focal arm64 | 4610 | 1267 | 840080 | **1600** | 5370 | - | | [Radxa Zero](http://ix.io/3JCm) | 1800 MHz | 5.10 | Bullseye arm64 | 4580 | 1353 | 838360 | **1600** | 5360 | 7.13 | -| [ODROID-C2](http://ix.io/3N6Q) | 1530 MHz | 5.10 | Bullseye arm64 | 4010 | 1186 | 51490 | **1600** | 2730 | - | +| [ODROID-C2](http://ix.io/4hOp) | 1530 MHz | 5.19 | Jammy arm64 | 4020 | 1187 | 51390 | **1590** | 2730 | - | | [Renegade](http://ix.io/1iFx) | 1400 MHz | 4.4 | Stretch arm64 | 3710 | 1069 | 644200 | **1565** | 7435 | 3.92 | | [NanoPi Fire3](http://ix.io/1jjm) | 1400 MHz | 4.14 | Bionic arm64 | 7440 | 1052 | 653000 | **1560** | 4600 | 10.96 | | [BPi R2](http://ix.io/4dO7) | 1300 MHz | 4.19 | Focal armhf | 2990 | 854 | 25260 | **1550** | 3220 | - | @@ -723,6 +734,7 @@ | [Akaso M8S](http://ix.io/3R3N) | 1200 MHz | 5.10 | Buster armhf | 3050 | 885 | 32120 | **1160** | 3330 | - | | [Raspberry Pi 3 B+](http://ix.io/1ism) | normal | 4.14 | Raspbian Stretch | 3240 | 914 | 36600 | **1130** | 1530 | - | | [Raspberry Pi 3 B+](http://ix.io/1isD) | with fan | 4.14 | Raspbian Stretch | 3670 | 1046 | 42600 | **1120** | 1600 | - | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | 1200 MHz | 5.15 | Raspbian Sid | 2970 | 977 | 36230 | **1110** | 1700 | 2.89 | | [Teres-I](http://ix.io/1tJg) | 1050 MHz | 4.19 | Stretch arm64 | 2785 | 780 | 491590 | **1080** | 2820 | - | | [Orange Pi PC 2](http://ix.io/3MQJ) | 1370 MHz | 5.10 | Focal arm64 | 3500 | 1023 | 637410 | **1070** | 3680 | - | | [NanoPi K1 Plus](http://ix.io/3N7H) | 1370 MHz | 5.10 | Focal arm64 | 3520 | 1022 | 638880 | **1070** | 3680 | 5.50 | @@ -781,6 +793,7 @@ | [Honeycomb LX2](http://ix.io/3Y4f) | 2200 MHz | 5.16 | Fedora 35 aarch64 | 30690 | 2288 | 1251710 | 5050 | **16220** | 46.09 | | [Phytium D2000 2xSO-DIMM](http://ix.io/446h) | 2300 MHz | 5.19 | Jammy arm64 | 16670 | 2252 | 828130 | 3480 | **16110** | - | | [Celeron 5205U](http://ix.io/4eiM) | 1900 MHz | 5.15 | Jammy amd64 | 4060 | 2171 | 521090 | 7350 | **16020** | 11.20 | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | 2600 MHz | 5.15 | Bullseye arm64 | 10020 | 2755 | 936740 | 3760 | **14540** | - | | [Amazon a1.xlarge](http://ix.io/2iFY) | 2300 MHz | 4.15 | Bionic arm64 | 8610 | 2406 | 1297960 | 4280 | **14220** | - | | [OnePlus 5](http://ix.io/4fdD) | 2360/1900 MHz | 6.1 | Jammy arm64 | 9800 | 2474 | 883330 | 9720 | **14070** | 12.58 | | [i.MX8MPlus EVK board](http://ix.io/4hx0) | 1800 MHz | 5.15 | Focal arm64 | 4990 | 1348 | 837680 | 2740 | **12420** | 7.02 | @@ -829,6 +842,7 @@ | [NanoPi NEO4](http://ix.io/1p3T) | 2000/1500 MHz | 4.19 | Stretch arm64 | 6750 | 1814 | 1139850 | 2370 | **6110** | 8.84 | | [Ryzen R1606G](http://ix.io/2tQQ) | 2600/1400 MHz | 5.4 | Focal amd64 | 7970 | 2854 | 700780 | 8230 | **5970** | 16.45 | | [Hugsun X99](http://ix.io/2ICt) | 2088/1800 MHz | 5.9 | Focal arm64 | 7710 | 1927 | 1184306 | 2270 | **5970** | - | +| [ODROID-M1](http://ix.io/4ijy) | 2060 MHz | 5.18 | Bullseye arm64 | 5430 | 1567 | 961090 | 3310 | **5960** | 7.76 | | [Khadas VIM2](http://ix.io/1iJ7) | 1415/1000 MHz | 4.17 | Bionic arm64 | 5450 | 993 | 659600 | 1920 | **5920** | 8.59 | | [Khadas VIM1](http://ix.io/3QLN) | 1415 MHz | 5.1 | Buster arm64 | 3860 | 1136 | 659460 | 1930 | **5900** | - | | [Rock64](http://ix.io/1iHB) | 1300 MHz | 4.18 | Stretch arm64 | 3560 | 1002 | 603800 | 1340 | **5770** | 3.80 | @@ -912,7 +926,7 @@ | [Atom N270](http://ix.io/461n) | 1600 MHz | 4.19 | Buster i386 | 1220 | 824 | 18760 | 1420 | **2840** | - | | [Teres-I](http://ix.io/1tJg) | 1050 MHz | 4.19 | Stretch arm64 | 2785 | 780 | 491590 | 1080 | **2820** | - | | [Atom E3826](http://ix.io/44pd) | 1460 MHz | 5.18 | Jammy amd64 | 2140 | 1112 | 182190 | 2840 | **2760** | - | -| [ODROID-C2](http://ix.io/3N6Q) | 1530 MHz | 5.10 | Bullseye arm64 | 4010 | 1186 | 51490 | 1600 | **2730** | - | +| [ODROID-C2](http://ix.io/4hOp) | 1530 MHz | 5.19 | Jammy arm64 | 4020 | 1187 | 51390 | 1590 | **2730** | - | | [Raspberry Pi 4 B](http://ix.io/3N94) | 1800 MHz | 5.10 | Raspberry Pi OS Bullseye | 5940 | 1738 | 77670 | 2310 | **2690** | - | | [ClockworkPi R-01](http://ix.io/40BJ) | 1000 MHz | 5.4 | Focal riscv64 | 450 | 450 | 9040 | 1220 | **2640** | - | | [BPi M2U](http://ix.io/3TKh) | 1010 Mhz | 5.16 | Buster armhf | 2230 | 654 | 19540 | 790 | **2540** | - | @@ -930,6 +944,7 @@ | [Raspberry Pi Zero 2](http://ix.io/3DeL) | 1200 MHz | 5.10 | Raspberry Pi OS Buster | 3640 | 1007 | 36300 | 1320 | **1790** | - | | [Raspberry Pi 3 B+](http://ix.io/1iGz) | OC/normal | 4.14 | Raspbian Stretch | 3130 | 843 | 36620 | 1230 | **1780** | - | | [AMD E-450 APU](http://ix.io/4hwl) | 1650 MHz | 5.15 | Jammy amd64 | 2430 | 1258 | 27450 | 1710 | **1740** | - | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | 1200 MHz | 5.15 | Raspbian Sid | 2970 | 977 | 36230 | 1110 | **1700** | 2.89 | | [Raspberry Pi Zero](http://ix.io/3Njz) | 1000 MHz | 5.10 | Bullseye armv6l/armhf | 460 | 460 | 17060 | 430 | **1670** | - | | [Raspberry Pi 3 B+](http://ix.io/1iI5) | original | 4.9 | Raspbian Stretch | 3600 | 1076 | 42700 | 1230 | **1640** | - | | [Raspberry Pi 3 B+](http://ix.io/1isD) | with fan | 4.14 | Raspbian Stretch | 3670 | 1046 | 42600 | 1120 | **1600** | - | @@ -965,6 +980,7 @@ | [Celeron N4500](http://ix.io/3HUU) | **2800/1100** MHz| 5.13 | Impish amd64 | 6300 | 3091 | 783840 | 8100 | 8350 | - | | [Pentium J5005](http://ix.io/21rE) | **2700/1500** MHz| 5.0 | Bionic amd64 | 9230 | 2455 | 778360 | 5530 | 7130 | 20.74 | | [Ryzen R1606G](http://ix.io/2tQQ) | **2600/1400** MHz| 5.4 | Focal amd64 | 7970 | 2854 | 700780 | 8230 | 5970 | 16.45 | +| [Phytium FT-2000/4 1xSO-DIMM](http://ix.io/4ioj) | **2600** MHz| 5.15 | Bullseye arm64 | 10020 | 2755 | 936740 | 3760 | 14540 | - | | [Athlon II X3 420e](http://ix.io/4eOo) | **2600** MHz| 4.19 | Buster amd64 | 4780 | 2566 | 98840 | 4120 | 3870 | - | | [Pentium N4200](http://ix.io/1ngq) | **2560/1100** MHz| 4.14 | Bionic amd64 | 7469 | 1976 | 468008 | 4682 | 4997 | 18.75 | | [Pentium J4205](http://ix.io/1m5t) | **2560/1500** MHz| 4.17 | Stretch amd64 | 7570 | 2146 | 480640 | 5070 | 5170 | 18.82 | @@ -995,6 +1011,7 @@ | [ODROID-C4](http://ix.io/3TQ2) | **2100** MHz| 5.10 | Buster arm64 | 5770 | 1679 | 981940 | 3540 | 5150 | - | | [AMedia X96 Max+](http://ix.io/3QOj) | **2100** MHz| 5.15 | Focal arm64 | 5270 | 1330 | 981830 | 2630 | 5150 | - | | [Hugsun X99](http://ix.io/2ICt) | **2088/1800** MHz| 5.9 | Focal arm64 | 7710 | 1927 | 1184306 | 2270 | 5970 | - | +| [ODROID-M1](http://ix.io/4ijy) | **2060** MHz| 5.18 | Bullseye arm64 | 5430 | 1567 | 961090 | 3310 | 5960 | 7.76 | | [Nintendo Switch](http://ix.io/3Di2) | **2060** MHz| 4.9 | Bionic arm64 | 6720 | 1901 | 746680 | 2370 | 3670 | 9.25 | | [NanoPi NEO4](http://ix.io/3GmR) | **2016/1512** MHz| 5.10 | Focal arm64 | 6970 | 1906 | 1145030 | 2450 | 6190 | 11.36 | | [NanoPi M4v2](http://ix.io/3MAK) | **2015/1510** MHz| 5.10 | Bullseye arm64 | 6680 | 1855 | 921980 | 3110 | 7640 | - | @@ -1065,7 +1082,7 @@ | [Ugoos UT2](http://ix.io/408h) | **1560** MHz| 5.10 | Jammy armhf | 3320 | 994 | 43250 | 320 | 2020 | - | | [Tronsmart MXIII Plus](http://ix.io/3S5U) | **1560** MHz| 5.10 | Buster armhf | 3880 | 1113 | 42570 | 1470 | 3430 | - | | [TRONFY MXQ S805](http://ix.io/3MiR) | **1536** MHz| 5.10 | Focal armhf | 3100 | 897 | 29080 | 980 | 2990 | - | -| [ODROID-C2](http://ix.io/3N6Q) | **1530** MHz| 5.10 | Bullseye arm64 | 4010 | 1186 | 51490 | 1600 | 2730 | - | +| [ODROID-C2](http://ix.io/4hOp) | **1530** MHz| 5.19 | Jammy arm64 | 4020 | 1187 | 51390 | 1590 | 2730 | - | | [Raspberry Pi 4 B](http://ix.io/3EgS) | **1500** MHz| 5.10 | Raspberry Pi OS Buster | 5750 | 1661 | 64930 | 2550 | 3430 | - | | [Raspberry Pi 4 B](http://ix.io/1MFf) | **1500** MHz| 4.19 | Raspbian Buster | 5500 | 1606 | 64860 | 2460 | 3170 | - | | [ODROID-C1](http://ix.io/4eg5) | **1500** MHz| 5.19 | Jammy armhf | 3010 | 878 | 29260 | 390 | 2910 | - | @@ -1108,6 +1125,7 @@ | [Marvell PXA1908](http://ix.io/46hs) | **1245** MHz| 3.14 | Bullseye arm64 | 3180 | 951 | 581840 | 740 | 2220 | - | | [T-HEAD C910 RVB-ICE](http://ix.io/41AB) | **1200** MHz| 5.10 | Sid riscv64 | 1760 | 1007 | 26930 | 3340 | 6470 | - | | [Raspberry Pi Zero 2](http://ix.io/3DeL) | **1200** MHz| 5.10 | Raspberry Pi OS Buster | 3640 | 1007 | 36300 | 1320 | 1790 | - | +| [Raspberry Pi 3 B](http://ix.io/4hOP) | **1200** MHz| 5.15 | Raspbian Sid | 2970 | 977 | 36230 | 1110 | 1700 | 2.89 | | [RK3228A TV Box](http://ix.io/3M9F) | **1200** MHz| 4.4 | Buster armhf | 2310 | 710 | 23070 | 410 | 1230 | - | | [EspressoBin](http://ix.io/1lCe) | **1200** MHz| 4.18 | Stretch arm64 | 1630 | 869 | 544240 | 1000 | 2400 | 1.82 | | [Akaso M8S](http://ix.io/3R3N) | **1200** MHz| 5.10 | Buster armhf | 3050 | 885 | 32120 | 1160 | 3330 | - | diff --git a/results/opp-tables/amlogic-sm1-5.10.156-AMedia_X96_Max+.txt b/results/opp-tables/amlogic-sm1-5.10.156-AMedia_X96_Max+.txt new file mode 100644 index 0000000..d9c4840 --- /dev/null +++ b/results/opp-tables/amlogic-sm1-5.10.156-AMedia_X96_Max+.txt @@ -0,0 +1,24 @@ + opp-table: + MHz - + MHz - + MHz - + 750 MHz 750.0 mV + 1000 MHz 770.0 mV + 1200 MHz 780.0 mV + 1404 MHz 790.0 mV + 1500 MHz 800.0 mV + 1608 MHz 810.0 mV + 1704 MHz 850.0 mV + 1800 MHz 900.0 mV + 1908 MHz 950.0 mV + 2016 MHz 1000.0 mV + 2100 MHz 1011.0 mV + + opp-table-gpu: + 125 MHz 800.0 mV + 250 MHz 800.0 mV + 286 MHz 800.0 mV + 400 MHz 800.0 mV + 500 MHz 800.0 mV + 667 MHz 800.0 mV + 800 MHz 800.0 mV diff --git a/results/opp-tables/amlogic-sm1-5.9.0-VONTAR_X3.txt b/results/opp-tables/amlogic-sm1-5.9.0-VONTAR_X3.txt new file mode 100644 index 0000000..b610eb1 --- /dev/null +++ b/results/opp-tables/amlogic-sm1-5.9.0-VONTAR_X3.txt @@ -0,0 +1,24 @@ + gpu-opp-table: + 125 MHz 800.0 mV + 250 MHz 800.0 mV + 286 MHz 800.0 mV + 400 MHz 800.0 mV + 500 MHz 800.0 mV + 667 MHz 800.0 mV + 800 MHz 800.0 mV + + opp-table: + 100 MHz 730.0 mV + 250 MHz 730.0 mV + 500 MHz 730.0 mV + 667 MHz 750.0 mV + 1000 MHz 770.0 mV + 1200 MHz 780.0 mV + 1404 MHz 790.0 mV + 1500 MHz 800.0 mV + 1608 MHz 810.0 mV + 1704 MHz 850.0 mV + 1800 MHz 900.0 mV + 1908 MHz 950.0 mV + 2016 MHz 1000.0 mV + 2100 MHz 1022.0 mV diff --git a/results/opp-tables/exynos5-6.0.8-Hardkernel_Odroid_XU4.txt b/results/opp-tables/exynos5-6.0.8-Hardkernel_Odroid_XU4.txt new file mode 100644 index 0000000..7418638 --- /dev/null +++ b/results/opp-tables/exynos5-6.0.8-Hardkernel_Odroid_XU4.txt @@ -0,0 +1,129 @@ + opp-table0: + 200 MHz 900.0 mV + 300 MHz 900.0 mV + 400 MHz 900.0 mV + 500 MHz 900.0 mV + 600 MHz 900.0 mV + 700 MHz 900.0 mV + 800 MHz 900.0 mV + 900 MHz 1000.0 mV + 1000 MHz 1000.0 mV + 1100 MHz 1000.0 mV + 1200 MHz 1000.0 mV + 1300 MHz 1100.0 mV + 1400 MHz 1100.0 mV + 1500 MHz 1100.0 mV + 1600 MHz 1250.0 mV + 1700 MHz 1250.0 mV + 1800 MHz 1237.5 mV + 1900 MHz 1262.5 mV + 2000 MHz 1312.5 mV + + opp-table1: + 200 MHz 900.0 mV + 300 MHz 900.0 mV + 400 MHz 1000.0 mV + 500 MHz 1000.0 mV + 600 MHz 1000.0 mV + 700 MHz 1000.0 mV + 800 MHz 1100.0 mV + 900 MHz 1100.0 mV + 1000 MHz 1100.0 mV + 1100 MHz 1250.0 mV + 1200 MHz 1250.0 mV + 1300 MHz 1250.0 mV + 1400 MHz 1275.0 mV + + opp-table10: + 66 MHz - + 133 MHz - + 178 MHz - + 266 MHz - + + opp-table11: + 75 MHz - + 150 MHz - + 200 MHz - + 300 MHz - + + opp-table12: + 83 MHz - + 111 MHz - + 133 MHz - + 166 MHz - + + opp-table13: + 120 MHz - + 200 MHz - + + opp-table14: + 120 MHz - + 200 MHz - + 300 MHz - + + opp-table15: + 150 MHz - + 200 MHz - + 300 MHz - + + opp-table16: + 84 MHz - + 167 MHz - + 222 MHz - + 333 MHz - + 666 MHz - + + opp-table17: + 165 MHz 875.0 mV + 206 MHz 875.0 mV + 275 MHz 875.0 mV + 413 MHz 887.5 mV + 543 MHz 937.5 mV + 633 MHz 1012.5 mV + 728 MHz 1037.5 mV + 825 MHz 1050.0 mV + + opp-table2: + 89 MHz 925.0 mV + 133 MHz 950.0 mV + 177 MHz 950.0 mV + 266 MHz 950.0 mV + 532 MHz 1000.0 mV + + opp-table3: + 67 MHz - + 74 MHz - + 83 MHz - + 111 MHz - + + opp-table4: + 111 MHz - + 222 MHz - + + opp-table5: + 75 MHz - + 120 MHz - + 200 MHz - + + opp-table6: + 83 MHz - + 111 MHz - + 166 MHz - + 222 MHz - + 333 MHz - + + opp-table7: + 89 MHz - + 133 MHz - + 178 MHz - + 266 MHz - + + opp-table8: + 67 MHz - + + opp-table9: + 83 MHz - + 111 MHz - + 166 MHz - + 222 MHz - + 333 MHz - diff --git a/results/opp-tables/imx8mp-5.15.5-NXP_i.MX8MPlus_EVK_board.txt b/results/opp-tables/imx8mp-5.15.5-NXP_i.MX8MPlus_EVK_board.txt new file mode 100644 index 0000000..8b66010 --- /dev/null +++ b/results/opp-tables/imx8mp-5.15.5-NXP_i.MX8MPlus_EVK_board.txt @@ -0,0 +1,4 @@ + opp-table: + 1200 MHz 850.0 mV (08a0 0007) + 1600 MHz 950.0 mV (00a0 0007) + 1800 MHz 1000.0 mV (0020 0003) diff --git a/results/opp-tables/rk3328-6.0.6-Rockchip_RK3318_BOX.txt b/results/opp-tables/rk3328-6.0.6-Rockchip_RK3318_BOX.txt new file mode 100644 index 0000000..6c0486e --- /dev/null +++ b/results/opp-tables/rk3328-6.0.6-Rockchip_RK3318_BOX.txt @@ -0,0 +1,21 @@ + dmc-opp-table: + 600 MHz 1000.0 mV + 666 MHz 1025.0 mV + 786 MHz 1050.0 mV + 800 MHz 1050.0 mV + 850 MHz 1050.0 mV + 933 MHz 1100.0 mV + 1066 MHz 1150.0 mV + + gpu-opp-table: + 200 MHz 1000.0 mV + 300 MHz 1050.0 mV + 400 MHz 1050.0 mV + 500 MHz 1100.0 mV + + opp_table0: + 600 MHz 950.0 mV + 816 MHz 1000.0 mV + 1008 MHz 1100.0 mV + 1200 MHz 1200.0 mV + 1296 MHz 1275.0 mV diff --git a/results/opp-tables/rk3399-6.0.11-OrangePi_4.txt b/results/opp-tables/rk3399-6.0.11-OrangePi_4.txt new file mode 100644 index 0000000..f645d80 --- /dev/null +++ b/results/opp-tables/rk3399-6.0.11-OrangePi_4.txt @@ -0,0 +1,31 @@ + opp-table-0: + 408 MHz 825.0 mV + 600 MHz 825.0 mV + 816 MHz 850.0 mV + 1008 MHz 925.0 mV + 1200 MHz 1000.0 mV + 1416 MHz 1125.0 mV + 1512 MHz 1150.0 mV + 1608 MHz 1175.0 mV + 1704 MHz 1300.0 mV + + opp-table-1: + 408 MHz 825.0 mV + 600 MHz 825.0 mV + 816 MHz 825.0 mV + 1008 MHz 875.0 mV + 1200 MHz 950.0 mV + 1416 MHz 1025.0 mV + 1608 MHz 1100.0 mV + 1800 MHz 1200.0 mV + 1992 MHz 1250.0 mV + 2088 MHz 1300.0 mV + 2184 MHz 1350.0 mV + + opp-table-2: + 200 MHz 825.0 mV + 297 MHz 825.0 mV + 400 MHz 825.0 mV + 500 MHz 875.0 mV + 600 MHz 925.0 mV + 800 MHz 1100.0 mV diff --git a/results/opp-tables/rk3588-5.10.110-FriendlyElec_NanoPi_R6S.txt b/results/opp-tables/rk3588-5.10.110-FriendlyElec_NanoPi_R6S.txt new file mode 100644 index 0000000..1bea7d0 --- /dev/null +++ b/results/opp-tables/rk3588-5.10.110-FriendlyElec_NanoPi_R6S.txt @@ -0,0 +1,67 @@ + cluster0-opp-table: + 408 MHz 675.0 mV (00ff ffff) + 600 MHz 675.0 mV (00ff ffff) + 816 MHz 675.0 mV (00ff ffff) + 1008 MHz 675.0 mV (00ff ffff) + 1200 MHz 712.5 mV (00ff ffff) + 1416 MHz 762.5 mV (00ff ffff) + 1608 MHz 850.0 mV (00ff ffff) + 1800 MHz 950.0 mV (00fd ffff) + + cluster1-opp-table: + 408 MHz 675.0 mV (00ff ffff) + 600 MHz 675.0 mV (00ff ffff) + 816 MHz 675.0 mV (00ff ffff) + 1008 MHz 675.0 mV (00ff ffff) + 1200 MHz 675.0 mV (00ff ffff) + 1416 MHz 725.0 mV (00ff ffff) + 1608 MHz 762.5 mV (00ff ffff) + 1800 MHz 850.0 mV (00ff ffff) + 2016 MHz 925.0 mV (00ff ffff) + 2208 MHz 987.5 mV (00fd ffff) + 2256 MHz 1000.0 mV (00fd 0013) + 2304 MHz 1000.0 mV (00fd 0024) + 2352 MHz 1000.0 mV (00fd 0048) + 2400 MHz 1000.0 mV (00fd 0080) + + cluster2-opp-table: + 408 MHz 675.0 mV (00ff ffff) + 600 MHz 675.0 mV (00ff ffff) + 816 MHz 675.0 mV (00ff ffff) + 1008 MHz 675.0 mV (00ff ffff) + 1200 MHz 675.0 mV (00ff ffff) + 1416 MHz 725.0 mV (00ff ffff) + 1608 MHz 762.5 mV (00ff ffff) + 1800 MHz 850.0 mV (00ff ffff) + 2016 MHz 925.0 mV (00ff ffff) + 2208 MHz 987.5 mV (00fd ffff) + 2256 MHz 1000.0 mV (00fd 0013) + 2304 MHz 1000.0 mV (00fd 0024) + 2352 MHz 1000.0 mV (00fd 0048) + 2400 MHz 1000.0 mV (00fd 0080) + + dmc-opp-table: + 528 MHz 675.0 mV + 1068 MHz 725.0 mV + 1560 MHz 800.0 mV + 2750 MHz 875.0 mV + + gpu-opp-table: + 300 MHz 675.0 mV + 400 MHz 675.0 mV + 500 MHz 675.0 mV + 600 MHz 675.0 mV + 700 MHz 700.0 mV + 800 MHz 750.0 mV + 900 MHz 800.0 mV + 1000 MHz 850.0 mV + + npu-opp-table: + 300 MHz 700.0 mV + 400 MHz 700.0 mV + 500 MHz 700.0 mV + 600 MHz 700.0 mV + 700 MHz 700.0 mV + 800 MHz 750.0 mV + 900 MHz 800.0 mV + 1000 MHz 850.0 mV diff --git a/results/opp-tables/rk3588-5.10.110-RK3588_EDGE_LP4x_V1.0_BlueBerry_Board.txt b/results/opp-tables/rk3588-5.10.110-RK3588_EDGE_LP4x_V1.0_BlueBerry_Board.txt new file mode 100644 index 0000000..ea43941 --- /dev/null +++ b/results/opp-tables/rk3588-5.10.110-RK3588_EDGE_LP4x_V1.0_BlueBerry_Board.txt @@ -0,0 +1,45 @@ + cluster0-opp-table: + 1200 MHz 712.5 mV (00ff ffff) + 1416 MHz 762.5 mV (00ff ffff) + 1608 MHz 850.0 mV (00ff ffff) + 1800 MHz 950.0 mV (00fd ffff) + + cluster1-opp-table: + 1200 MHz 675.0 mV (00ff ffff) + 1416 MHz 725.0 mV (00ff ffff) + 1608 MHz 762.5 mV (00ff ffff) + 1800 MHz 850.0 mV (00ff ffff) + 2016 MHz 925.0 mV (00ff ffff) + 2208 MHz 987.5 mV (00fd ffff) + + cluster2-opp-table: + 1200 MHz 675.0 mV (00ff ffff) + 1416 MHz 725.0 mV (00ff ffff) + 1608 MHz 762.5 mV (00ff ffff) + 1800 MHz 850.0 mV (00ff ffff) + 2016 MHz 925.0 mV (00ff ffff) + 2208 MHz 987.5 mV (00fd ffff) + + dmc-opp-table: + 528 MHz 675.0 mV + 1068 MHz 725.0 mV + 1560 MHz 800.0 mV + 2750 MHz 875.0 mV + + gpu-opp-table: + 300 MHz 675.0 mV + 400 MHz 675.0 mV + 600 MHz 675.0 mV + 700 MHz 700.0 mV + 800 MHz 750.0 mV + 900 MHz 800.0 mV + + npu-opp-table: + 300 MHz 700.0 mV + 400 MHz 700.0 mV + 500 MHz 700.0 mV + 600 MHz 700.0 mV + 700 MHz 700.0 mV + 800 MHz 750.0 mV + 900 MHz 800.0 mV + 1000 MHz 850.0 mV diff --git a/results/opp-tables/rtd1395-4.9.119-Sinovoip_Bananapi_M4.txt b/results/opp-tables/rtd1395-4.9.119-Sinovoip_Bananapi_M4.txt new file mode 100644 index 0000000..9badb30 --- /dev/null +++ b/results/opp-tables/rtd1395-4.9.119-Sinovoip_Bananapi_M4.txt @@ -0,0 +1,10 @@ + cpudvs: 1062 mV (1188 mV max) + ddr: 1500 mV + + gpu-opp-table-0: + 300 MHz 1000.0 mV + 400 MHz 1000.0 mV + 500 MHz 1000.0 mV + 600 MHz 1000.0 mV + 700 MHz 1000.0 mV + 750 MHz 1000.0 mV diff --git a/results/opp-tables/sun8i-h2-plus-5.15.69-Banana_Pi_BPI-M2-Zero.txt b/results/opp-tables/sun8i-h2-plus-5.15.69-Banana_Pi_BPI-M2-Zero.txt new file mode 100644 index 0000000..6c6d159 --- /dev/null +++ b/results/opp-tables/sun8i-h2-plus-5.15.69-Banana_Pi_BPI-M2-Zero.txt @@ -0,0 +1,20 @@ + opp-table-cpu: + 480 MHz 1040.0 mV + 648 MHz 1040.0 mV + 816 MHz 1100.0 mV + 960 MHz 1200.0 mV + 1008 MHz 1200.0 mV + 1056 MHz 1300.0 mV + 1104 MHz 1300.0 mV + 1152 MHz 1300.0 mV + 1200 MHz 1300.0 mV + 1224 MHz 1300.0 mV + 1248 MHz 1300.0 mV + 1296 MHz 1300.0 mV + 1368 MHz 1300.0 mV + + opp-table-gpu: + 120 MHz - + 312 MHz - + 432 MHz - + 576 MHz - diff --git a/results/opp-tables/sun8i-r40-6.0.10-Banana_Pi_BPI-M2-Ultra.txt b/results/opp-tables/sun8i-r40-6.0.10-Banana_Pi_BPI-M2-Ultra.txt new file mode 100644 index 0000000..00371a3 --- /dev/null +++ b/results/opp-tables/sun8i-r40-6.0.10-Banana_Pi_BPI-M2-Ultra.txt @@ -0,0 +1,6 @@ + opp-table-cpu: + 720 MHz 1000.0 mV + 912 MHz 1100.0 mV + 1008 MHz 1160.0 mV + 1104 MHz 1240.0 mV + 1200 MHz 1300.0 mV diff --git a/results/results.tar.xz b/results/results.tar.xz index 447204c29dc555850bfa8ef8479b19100acf40fe..324b1d6a261ee8c18cba1fa3eec546faa0ca6104 100644 GIT binary patch delta 33826 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%0AT*~O=`7L3>BfP?h?gt1hWk^Ac*P&l+ zPu7Z&Vv;f5)EhPpw2*4oAQzfD=~o;2p7I5xz5D{kk8vOllA9OYZ^7%h=X!hw4yv?T zDg1QRh;<>_4Eh*&Uz$bC;QT7M82rq#5{J4|`KXAlWCDYK zb9*%6NZ=Ei$QFYMWHF8@1ar65Z~F3w_H+9U%t{Gf!-gFSJFoB~e{EMfyswLtIhHC( zi&_92#SUt+{G)xf#vt+C8mW1009hV+I4Ev!c@kY>ZcI+~2OalODrLnZPe#KN5H&fe zjHL;&gTgELt`xaXp+Z&kfCAMezTc^Tsr0A(cTgsM<(VbtPnu(%nY>tR#T`49Wa9#& zgIWjniL;Edxqtwj?e=-R)EFum6H6;#Y~u$GxMt(3&$zwH;n%a{0XW{#o0f(ZN>+w0 z1`#C3J9i2q2OmPCE&cEupMn?1B#vb)mc{AzWH_>y)YpGB_;=u&sU}YpZ&=A*E9dE2?sb;WoBC0U60%f@(%aN4e!SJ-QK39te8lCOQc_*MU0xbgFE+ia)eq%`Ifu?}44~Nq>0f>q zZ|0@3c)bE=G@vP}Ii$N+@U=-je2A4as(FQxuB{oC9}u|`LJmuBod*362eYVxt{MPD z>Ju6vgB0LF0~VkSUa3icg)Y)Ht1+e&o23dEt#`F^vwkAj*4OaOMzF7ano%Tm<(O;0 z-{iRZYqzz@-9${tS z_PsfApnAEfy5EIlHU{=U^C)FO<=?2sfMoYjLo8XXFf91u-6#P+@6 z*|)&F^45FJJnH3*sP$c^U21bLzIbaKS!VeZNMM=ux~NuGJ^TECpls$!p_`g}k;;eP z4TSCTzsWJV#r=4Hw)fq(g9Qc3UlS1b1&IGcdqZ7G1$;TC!!#K0wkSI^JS9HSXaX%=t?lSy8Z{&th&}fKX72Y8v;kBTI=0gd~{b!mUd~nSFr@y079!SdFKqOvJwN z=1d>y;x3_T{+0&z#x=7je}{IcgFyiaf14cRWKptz2cs>^9DrP?xe%x+ArF4fBh({B z$3W_0I6HL%8kA9`y`izb4zQeH`bYjdJ}Xuu}n^+O`f-$Gn729F+qv8RTuL zR+006Y>;bDdafPDLr|6*wKQtW&|CrR0~7p~sHJ^I;dsBW08Gs&M$#=nn4zE$4K$bb zEG|?@S3VxxL@T>T9Uw{6OT-n%7|4&~l;6sepDz<0?vm#-2oZ#BsU!1{sI?cD;=>M^ zR4$LqYYAnUfaqjW(|pchJ60yZR*It!7dmC;&G3_we>tU}8?)q~Tgd8L-_{%U1BxsAEP#sVtz+ns{?hDh?-Z#;>$Dy_7w5e2soskjG0G zYQ51TF>WWP(KZ3XSjg9pr_839Zt?*zS$~e|pjGICEyZ_`8j@axY1u%;*kHTAz81{` z1S$Afe_+?~3{zA~sH>NG?XHHuP0U*t(DFP2jB6Z0n#v5t^SE6-Ra|~Vtc(<;ABIJ+Dw66|30vOM-u-q1DnIh*uBPF5Gl|_e_6wS zmn9ljM#9M%Pc|QBiQ=us-ytS$p-fYHta8iY zUF-|bD2*Q{fU7k4D-w;yob`ahDHxG^+wT|@M

>W;#(3U-#&rLZ~)I&77h`&YMD) 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[3N6Q](3N6Q.txt) | v0.9.2 Hardkernel ODROID-C2 | 0.7%/0.2% | 1.9Gi/1.6Gi | X | X | X | X | 1% | 0% | | | [3N7H](3N7H.txt) | v0.9.2 FriendlyElec NanoPi K1 Plus | 0%/1.3% | 1.9Gi/1.7Gi | X | X | X | X | 2% | 0% | | | [3N94](3N94.txt) | v0.9.2 RPi 4 Model B Rev 1.4 / BCM2711 | 0%/0% | 7.7Gi/7.4Gi | X | X | X | X | 4% | **12%** | | | [3Na5](3Na5.txt) | v0.9.2 Hardkernel ODROID-HC4 | 0%/0% | 3.7Gi/3.5Gi | X | X | X | X | 1% | 0% | | @@ -222,5 +222,8 @@ | [4f3I](4f3I.txt) | v0.9.9 HARDKERNEL ODROID-H3 1.0 / Penti | 0%/0.5% | 31Gi/30Gi | X | X | X | X | 1% | 0% | | | [4fdD](4fdD.txt) | v0.9.9 OnePlus 5 | 2.7%/0.6% | 5.5Gi/5.2Gi | X | X | X | X | 1% | 1% | | | [4hKV](4hKV.txt) | v0.9.9 / Celeron J1900 @ 1.99GHz | 0%/0% | 7.7Gi/6.9Gi | X | X | X | X | 3% | 0% | | +| [4hOp](4hOp.txt) | v0.9.9 Hardkernel ODROID-C2 | 0.8%/0.4% | 1.9Gi/1.7Gi | X | X | X | X | 1% | 1% | | | [4hwl](4hwl.txt) | v0.9.9 ASUSTeK Computer Inc. U32U 1.0 | 0.4%/0.3% | 5,4Gi/3,2Gi | X | X | X | X | 5% | 0% | | | [4hx0](4hx0.txt) | v0.9.9 NXP i.MX8MPlus EVK board | 1.5%/0.1% | 5.5Gi/4.9Gi | X | X | X | X | 2% | 6% | | +| [4ijy](4ijy.txt) | v0.9.9 Hardkernel ODROID-M1 | 0%/0% | 3.6Gi/3.3Gi | X | X | X | X | 1% | 0% | | +| [4ioj](4ioj.txt) | v0.9.9 WEIBU F20A V1000 | 0%/1.6% | 15Gi/15Gi | X | X | X | X | 1% | 0% | | diff --git a/sbc-bench.sh b/sbc-bench.sh index a061ee1..b0404a2 100755 --- a/sbc-bench.sh +++ b/sbc-bench.sh @@ -213,18 +213,18 @@ Main() { snore() { # https://blog.dhampir.no/content/sleeping-without-a-subprocess-in-bash-and-how-to-sleep-forever - local IFS - [[ -n "${_snore_fd:-}" ]] || { exec {_snore_fd}<> <(:); } 2>/dev/null || - { - # workaround for MacOS and similar systems - local fifo - fifo=$(mktemp -u) - mkfifo -m 700 "$fifo" - exec {_snore_fd}<>"$fifo" - rm "$fifo" - } - read ${1:+-t "$1"} -u $_snore_fd || : -} + local IFS + [[ -n "${_snore_fd:-}" ]] || { exec {_snore_fd}<> <(:); } 2>/dev/null || + { + # workaround for MacOS and similar systems + local fifo + fifo=$(mktemp -u) + mkfifo -m 700 "$fifo" + exec {_snore_fd}<>"$fifo" + rm "$fifo" + } + read ${1:+-t "$1"} -u $_snore_fd || : +} # snore GetARMCore() { grep "${1}/${2}:" <<<"41:Arm @@ -1182,16 +1182,12 @@ MonitorBoard() { # Background monitoring -- try to renice to 19 to not interfere with benchmark behaviour renice 19 $BASHPID >/dev/null 2>&1 - CpuFreqToQuery=cpuinfo_cur_freq - - # check platform - case ${CPUArchitecture} in - x86*|i686) - if [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq ]; then - CpuFreqToQuery=scaling_cur_freq - fi - ;; - esac + # switch to scaling_cur_freq if cpuinfo_cur_freq is not readable + if [ -r /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq ]; then + CpuFreqToQuery=cpuinfo_cur_freq + else + CpuFreqToQuery=scaling_cur_freq + fi LastUserStat=0 LastNiceStat=0 @@ -1214,10 +1210,10 @@ MonitorBoard() { if [ ${USE_VCGENCMD} = true ] ; then DisplayHeader="Time fake/real load %cpu %sys %usr %nice %io %irq Temp VCore${VoltageHeader}${NetioHeader}" CPUs=raspberrypi - elif [ ${#ClusterConfig[@]} -eq 1 -a -f /sys/devices/system/cpu/cpufreq/policy0/${CpuFreqToQuery} ] ; then + elif [ ${#ClusterConfig[@]} -eq 1 -a -r /sys/devices/system/cpu/cpufreq/policy0/${CpuFreqToQuery} ] ; then DisplayHeader="Time CPU load %cpu %sys %usr %nice %io %irq Temp${VoltageHeader}${NetioHeader}" CPUs=singlecluster - elif [ -f /sys/devices/system/cpu/cpufreq/policy${ClusterConfig[1]}/${CpuFreqToQuery} ]; then + elif [ -r /sys/devices/system/cpu/cpufreq/policy${ClusterConfig[1]}/${CpuFreqToQuery} ]; then ClusterCount=$(( ${#ClusterConfig[@]} -1 )) DisplayHeader="Time big.LITTLE load %cpu %sys %usr %nice %io %irq Temp${VoltageHeader}${NetioHeader}" read FirstCluster