
Pomiar IPC pojedynczego rdzenia na dowolnej platformie (linux) (Ogólne)
To jest bardzo prosty test, ktory pozwala szybko okreslic wydajnosc ipc pojedynczego rdzenia cpu. Moze nie jest ultra dokladny, ale od lat daje rade i wyniki sa porownywalne miedzy roznymi maszynami. Jego zaleta jest mega prostota i dzialanie na praktycznie kazdej platformie na ktorej sa dostepne 2 polecenia: time oraz bc.
Sam test uzywa linuxowego kalkulatora bc, ktory dla liczby pi wylicza 5000 miejsc po przecinku. Wiecej info na wiki.
Czas trwania testu wynosi od kilkunastu sekund do kilku minut (wolniejsze maszynki typu routery lub starsze sprzety).
Zapraszam do dzielenia sie wlasnymi wynikami, beda one sukcesywnie dodawane do glownej listy.
Jak na razie, bariera 10s jest trudna do pokonania, niczym zejscie ponizej 10s w sprincie na 100m
Dzieki uprzejmosci kolegow, mamy coraz wiecej roznych cpu, w tym takie perelki jak Xeony i Epic'i. Ze staroci goszcza P3/1400, Athlon XP/2800, Athlon Thunderbird 1200 oraz VIA C3 1GHz I najnowsze "smoki" jak AMD Ryzen AI 9 365. Z maluchow/embedded sa rpi 4, rozne warianty rpi zero oraz odroid.
Uwaga: bc musi byc w standardowej wersji gnu! Jest dostepna zoptymalizowana wersja na githubie i wystepuje ona rowniez na macos, jednak jest "nieprzyzwoicie" szybka i nie nadaje sie do testow porownawczych. Na koncu zostaly dodane wyniki z obu wersji pokazujace problem.
Staty i test:
- cpu info:
$ lscpu | grep "Model name:"
Model name: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
albo:
$ lscpu | grep "Model name:" | cut -d':' -f2 | xargs
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
- kernel info:
$ uname -r
5.15.0-135-generic
- run test:
$ time echo "scale=5000; a(1)*4" | bc -l
then copy real/user/sys times
Wyniki (od najwolniejszego do najszybszego):
- piotr, VIA Nehemiah C3 1GHz, 2.6.11
real 3m11.660s
user 3m11.393s
sys 0m0.014s
- piotr, Raspberrypi Zero W, ARM1176, 5.10.103+
real 2m20.448s
user 2m20.104s
sys 0m0.034s
- ARMv7 Processor rev 1 (v7l) @ 1GHz, Marvell Armada 375 (Device Tree)
real 2m9.215s
user 2m9.180s
sys 0m0.010s
- piotr, Wyse 3020, PJ4B-MP, 6.3.5-mvebu-tld-1
real 1m44.236s
user 1m44.085s
sys 0m0.035s
- kimsufi N2800 1,8
real 1m38.478s
user 1m38.452s
sys 0m0.008s
- piotr, ODROID-GO SUPER, Cortex-A35, 5.10.160+rocksbc
real 1m32.723s
user 1m32.528s
sys 0m0.016s
- zami, Athlon Thunderbird 1200MHz, 3.19.0-25-generic
real 1m31.406s
user 1m31.292s
sys 0m0.008s
- piotr, centos 6, Intel(R) Pentium(R) III CPU family 1400MHz, 2.6.32-754.el6.i686
real 1m30.200s
user 1m30.169s
sys 0m0.007
- kimsufi few years later, new ubuntu server 24.10, Intel(R) Atom(TM) CPU N2800 @ 1.86GHz, 6.11.0-19-generic
real 1m22.695s
user 1m22.666s
sys 0m0.028s
- e350m1:
real 1m6.630s
user 1m6.548s
sys 0m0.028s
- piotr, Orange Pi Zero 3, Cortex-A53, 6.13.7-edge-sunxi64
real 1m5.511s
user 1m5.468s
sys 0m0.032s
- piotr, Raspberry Pi Zero 2w, Cortex-A72, 6.12.21-arm64
real 0m54.471s
user 0m54.264s
sys 0m0.011s
- zami, Xubuntu 16.04 32bit + 3GB RAM, AMD Athlon(tm) XP 2800+, 4.4.0-210-generic
real 0m53.226s
user 0m53.168s
sys 0m0.004s
- piotr, Raspberry PI 4, Cortex-A72, 6.12.20-arm64
real 0m47.714s
user 0m47.542s
sys 0m0.018s
- Intel(R) Pentium(R) CPU J2900 @ 2.41GHz
real 0m41.771s
user 0m41.663s
sys 0m0.000s
- piotr, ODROID-HC2, 6.6.81-current-odroidxu4
Cortex-A15
real 0m40.920s
user 0m40.668s
sys 0m0.053s
Cortex-A7
real 1m28.818s
user 1m28.300s
sys 0m0.034s
- piotr, ODROID GO ULTRA, Cortex-A73, 4.9.277+
real 0m39.262s
user 0m39.248s
sys 0m0.000s
- piotr, ODROID N2L, 6.14.1-edge-meson64
Cortex-A73
real 0m30.679s
user 0m30.643s
sys 0m0.008s
Cortex-A53
real 0m46.027s
user 0m45.916s
sys 0m0.016s
- piotr, AMD A8-3870 APU with Radeon(tm) HD Graphics, 6.12.21-amd64
real 0m27.709s
user 0m27.694s
sys 0m0.005s
- gallu, Intel(R) Xeon(R) CPU E5-1603 0 @ 2.80GHz, 6.8.12-8-pve
real 0m22.214s
user 0m22.210s
sys 0m0.001s
- gallu, e5-2680v2, 5.15.83-1-pve #1 SMP
real 0m21.618s
user 0m21.613s
sys 0m0.000s
- lukas12p, Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz, 4.14.355-275.591.amzn2.x86_64
real 0m20.588s
user 0m19.513s
sys 0m0.000s
- piotr, AMD EPYC 3151 4-Core Processor, 6.12.20-amd64, Gigabyte MJ11-EC1 AMD EPYC Embedded 3151 4x2,7GHz mITX DDR4
real 0m20.079s
user 0m20.058s
sys 0m0.001s
- beanus, Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz, 5.15.0-136-generic
real 0m19,621s
user 0m19,601s
sys 0m0,007s
- piotr, Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz, 4.18.0-553.45.1.el8_10
real 0m19.152s
user 0m19.129s
sys 0m0.002s
- i7-3770T:
real 0m19.076s
user 0m19.012s
sys 0m0.000s
- beanus, Intel(R) Core(TM) i5-7400T CPU @ 2.40GHz, 5.15.0-136-generic
real 0m18.312s
user 0m18.284s
sys 0m0.000s
- beanus, i5-7400T CPU @ 2.40GHz, 5.15.0-70-generic:
real 0m18.299s
user 0m18.290s
sys 0m0.009s
- i7-3700 kernel 4.15.72:
real 0m18.260s
user 0m18.253s
sys 0m0.004s
real 0m17.705s
user 0m17.719s
sys 0m0.000s
- piotr, Intel(R) Xeon(R) Gold 6242 CPU @ 2.80GHz, 4.18.0-553.45.1.el8_10
real 0m18.176s
user 0m18.156s
sys 0m0.001s
- i7-3770T kernel 3.18 native:
real 0m18.124s
user 0m18.137s
sys 0m0.000s
- Xeon(R) CPU E3-1225 V2 @ 3.20GHz 4/4, 6.8.0-40-generic
real 0m16.847s
user 0m16.846s
sys 0m0.001s
- magu, Intel(R) N100 CPU @ 2.8GHz, 6.5.13-1-pve
real 0m16.733s
user 0m16.710s
sys 0m0.008s
- piotr, AMD EPYC 7302 16-Core Processor, 4.18.0-553.45.1.el8_10
real 0m16.512s
user 0m16.442s
sys 0m0.004s
- piotr, Intel(R) Core(TM) i5-5675C CPU @ 3.10GHz, 6.12.21-amd64
real 0m16.411s
user 0m16.410s
sys 0m0.000s
- beanus, Neoverse-N1, 6.8.0-1020-oracle
real 0m16.371s
user 0m16.249s
sys 0m0.008s
- i7-3770 5.4.0-147-generic:
real 0m15.986s
user 0m15.964s
sys 0m0.004s
- gallu, Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz, 6.8.12-8-pve
real 0m15.289s
user 0m15.285s
sys 0m0.003s
- michal u, AMD Ryzen 7 2700X Eight-Core Processor, 6.14.2-arch1-1
real: 14.51s
user: 14.46s
sys: 0.00s
- gallu, Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz, 5.15.102-1-pve
real 0m14.221s
user 0m14.218s
sys 0m0.000s
- piotr, Intel(R) Pentium(R) CPU G3260 @ 3.30GHz, 13.1-RELEASE-p9
real 0m14.205s
user 0m14.195s
sys 0m0.000s
- zami, Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz, 6.8.0-57-generic
real 0m13,592s
user 0m13,586s
sys 0m0,007s
- piotr, AMD EPYC 7543 32-Core Processor, 4.18.0-553.45.1.el8_10
real 0m13.617s
user 0m13.592s
sys 0m0.001s
- piotr, thinkpad x13s, Cortex-A78C, Cortex-X1C, 6.14.0-sc8280xp-arm64
real 0m13.294s
user 0m13.281s
sys 0m0.004s
- piotr, AMD EPYC 7313 16-Core Processor, 4.18.0-553.45.1.el8_10
real 0m13.222s
user 0m13.162s
sys 0m0.005s
- piotr, AMD EPYC 9354 32-Core Processor, 4.18.0-553.45.1.el8_10
real 0m12.526s
user 0m12.496s
sys 0m0.003s
- piotr, AMD EPYC 7343 16-Core Processor, 4.18.0-553.45.1.el8_10
real 0m12.515s
user 0m12.488s
sys 0m0.002s
- piotr, AMD EPYC 74F3 24-Core Processor, 4.18.0-553.45.1.el8_10
real 0m12.268s
user 0m12.244s
sys 0m0.004s
- piotr, 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz, 6.11.0-8-generic
real 0m12.062s
user 0m12.056s
sys 0m0.004s
- piotr g, Intel(R) Core(TM) i9-11900 @ 2.50GHz, 6.13.7-200.fc41.x86_64
Executed in 11.24 secs fish external
usr time 11.18 secs 188.00 micros 11.18 secs
sys time 0.00 secs 89.00 micros 0.00 secs
bc v1.08.1
- piotr, AMD Ryzen 5 PRO 5650G with Radeon Graphics, 6.12.20-amd64
real 0m10.808s
user 0m10.806s
sys 0m0.000s
- piotr, AMD Ryzen 5 5600X 6-Core Processor, 6.12.20-amd64
real 0m10.335s
user 0m10.331s
sys 0m0.000s
- czen, AMD Ryzen AI 9 365 w/ Radeon 880M, Linux fedora 6.13.9-200.fc41.x86_64, Lenovo Yoga Pro Ryzen9 AI 365 HX
real 0m9,679s
user 0m9,656s
sys 0m0,004s
bc v1.07.1
- michal u, AMD Ryzen 5 PRO 8540U w/ Radeon 740M Graphics, 6.14.2-arch1-1
real 9.42
user 9.38
sys 0.00
bc v1.08.1
- 12th Gen Intel(R) Core(TM) i5-12600K, 6.8.0-57-generic, Ubuntu 22.04.5 LTS
real 0m9.127s
user 0m9.124s
sys 0m0.004s
bc v1.07.1
- Intel(R) Core(TM) i5-14600K, 6.8.0-57-generic, Ubuntu Server 24.04.2 LTS, 128GB RAM 3200 CL14
real 0m8.768s
user 0m8.764s
sys 0m0.004s
bc v1.07.1
- piotr g, AMD Ryzen 7 PRO 6850U with Radeon Graphics, 6.14.0-63.fc42.x86_64
Executed in 8.00 secs fish external
usr time 7.95 secs 235.00 micros 7.95 secs
sys time 0.00 secs 235.00 micros 0.00 secs
bc v1.08.1
- current winner: piotr g, 8secs
gratz!
Roznica miedzy real i user to czas na operacje i/o na dysku/sieci itp. To swietnie pokazuje czy jest waskie gardlo. Dzieki temu doszedlem do wniosku, ze macierz ssala palke na hdd i byl lag na i/o. Przelom nastapil po zmianie hdd na ssd Nizej staty starej macierzy na hdd i nowej na ssd:
platforma: i7-3770 + 32GB DDR3
test: 60k plikow, 7.8GB
$ time ./48-extract_data_v1_users.py
stara macierz hdd r6 4x2TB:
real 85m23.175s
user 60m7.458s
sys 0m12.143s
i/o time = ~25m = 1500s
nowa macierz ssd r0 2x256GB:
real 59m54.789s
user 59m48.122s
sys 0m6.528s
i/o time = ~6.6s --> 1500/6.6=227x mniejszy lag...
nie ma za co
Wyniki bc z koszernej wersji gnu oraz niekoszernej (thx piotr):
- wersja zoptymalizowana/niekoszerna z gita:
# time echo "scale=5000; a(1)*4" | bc -l > /dev/null
real 0m1.045s
user 0m1.042s
sys 0m0.001s
# bc --version
bc 6.7.5
Copyright (c) 2018-2023 Gavin D. Howard and contributors
Report bugs at: https://git.gavinhoward.com/gavin/bc
This is free software with ABSOLUTELY NO WARRANTY.
- wersja koszerna gnu:
# time echo "scale=5000; a(1)*4" | /usr/local/bin/bc -l > /dev/null
real 0m14.205s
user 0m14.195s
sys 0m0.000s
# /usr/local/bin/bc --version
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.