Performance
Collatz Performance by Machine
Using a c
Machine | speed 1 core sec | Java 17 speed n cores | CPU arch | CPU | Cores | Mhz base | Mhz peak | thermal throttle | RAM | DockerHub max cores |
---|---|---|---|---|---|---|---|---|---|---|
MacMini 2020 M1 | ARM | M1 | 4/4/8 | |||||||
Biometric4 X-99a | 61.0 | 11.9 | 5820K 384/1.5/15g | 6/12 | 3.9Ghz | no | hyperv 11/12 | |||
Biometric2 X-99a 2200Mhz ram | 63.6 | 11.5 9.2 | 6/12 | |||||||
Biometric3 X-99a 2333Mhz ram | 66.9 | 11.7 | ||||||||
Lenovo X1C G9 | 74.4 | 15.0 | ||||||||
Lenovo P17 G1 | 61.0 | 17.1 | ||||||||
Lenovo P52 | 89.7 | 17.6 |
Performance/Cost Ratios by Machine
Cost/Compute
Proc | swift sec | $sec/Cycle | $sec/Cycle | CPU | Mhz | cores | threads | RAM | System | Speed Java 8 | Speed Java 8 | Java 11 | Java 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MacMini 2012 i7 3610 | 37.2 | 115 | 4 | 8 | $1.2k | 31.0 | 138.5 | ||||||
i74700MQ | 39.4 | 121 | 4 | 8 | $1k | 39.4 | 121.0 | ||||||
i5 4310 | 43.8 | 94 | 2 | 4 | $.9k | 48.7 | 104.2 | ||||||
i7-5820k 4.6G | 47.2 | 320 | 4662 | 6 | 12 | $4k | 11.8 | 80.0 | |||||
compute stick | 49.0 | 115 | 1 | 4 | $0.22k | 222.9 | 521.2 | ||||||
Asus 3610m | 49.4 | 206 | 2600 | 4 | 8 | $1.5 | 32.9 | 137.1 | |||||
nuc i7-5557 | 51.2 | 110 | 2 | 4 | $1k | 51.2 | 109.8 | ||||||
nuc i5-5250 | 54.5 | 111 | 2 | 4 | $0.8k | 68.1 | 139.1 | ||||||
XPS 8300 | 54.9 | 169 | 2700 | 4 | 8 | $1.5k | 36.6 | 112.9 | |||||
i7-5820k 3.3G | 64.8 | 370 | 3300 | 6 | 12 | $4k | 16.2 | 92.4 | |||||
Macbook Pro 2013 | 108 | 415 | i7 4960H | 2600 | 4 | 8 | $4k | 27.1 | 103.8 | ||||
p4-3Ghz | 119 | 178 | 3000 | 1 | 2 | $0.5k | 238.7 | 356.8 | |||||
Raspberry PI i1b | 387 | 335 | 700 | 1 | 1 | 0.5 | $0.08k | 4834 | 4185 | ||||
to be ranked | |||||||||||||
Raspberry PI 3A | 1 | ||||||||||||
Raspberry PI 4B | 4 | ||||||||||||
Thinkpad P52 | 64 | ||||||||||||
Macbook Pro 2019 15 inch | 8 | 16 | 32 | 20 | 50 | ||||||||
Macbook Pro 2019 16 inch | 8 | 16 | 64 | 17 | 55 | ||||||||
iphone 13 pro | 10.25 |
Threaded CPU Saturation Benchmark
The following is a java program that computes a section of the Collatz (Hailstone numbers) sequence as a set of Unit Of Work items processed by the Java 7 Fork Join Framework (deprecated by parallel streams in Lambda in Java 8). The software will run a sequence of ever smaller partitioned job sizes against a set of threads on all your cores (hyperthreaded) - best result are usually with 2 x the number of vCores with 64k jobs to keep the queue full.
Running CPU Saturation across an entire Kubernetes Cluster using a DaemonSet
96 thread - 48 core machine = 2 >> 6 + 1 = 7 sudo apt-get update sudo apt install default-jre java -version java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 7 7 1 ForkJoinCollatzServer forkJoinPool-power-start end runs (v 20161009) availableProc : 96 fjps threads : 7,7 freeMemory() : 2150946816 maxMemory() : 32178700288 totalMemory() : 2155872256 Not what I am expecting - more than 50% saturation5295,7,22,522,8 4233,7,21,421,16 4247,7,20,420,32 4265,7,19,419,64 4256,7,18,418,128 4269,7,17,417,256 4294,7,16,416,512 4295,7,15,415,1024 4291,7,14,414,2048 4317,7,13,413,4096 4320,7,12,412,8192 4340,7,11,411,16384 4365,7,10,410,32768 4363,7,9,49,65536 4418,7,8,48,131072 4567,7,7,47,262144 4558,7,6,46,524288 4581,7,5,45,1048576 6416,7,4,64,2097152 12492,7,3,123,4194304 24453,7,2,242,8388608 48186,7,1,481,16777216 91659,7,0,910,33554432 6 6 top - 02:58:46 up 7:11, 2 users, load average: 24.91, 13.63, 8.02 Tasks: 760 total, 1 running, 341 sleeping, 0 stopped, 0 zombie %Cpu(s): 51.7/0.5 52[|||||||||||||||||||||||||||||||||||||||||||||||||||| ] KiB Mem : 6.1/19579027+[ ] KiB Swap: 0.0/0 [ ] PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 34531 ubuntu 20 0 53.976g 9.284g 26.2m S 5003 5.0 15:43.79 java
Execution
java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 5 6 1
Java 11 support
see Java Developers Guide#Java11LTS
I am seeing a 10 to 0% performance speed up for saturated ForkJoinPool tests under Java 11 than in Java 8 only on a i9-9980 15 inch 2019 Macbook pro undergoing thermal throttling - otherwise we have a 30 to 15% positive speedup running even JDK 8 optimized bytecode
Machine | Time | rank | CPU | Mhz | Bus | Mul | Ram | Cores | vCores | Threads | Java 8 | Java 11 | Increase 8-11 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4.2 GHz x99-a DDR4 | 5820K | 4100 | 125 | 33 | 64 | 6 | 12 | 1 | 40 | ||||||
6 | 12 | 2 | 41 | ||||||||||||
6 | 12 | 4 | 40 | ||||||||||||
6 | 12 | 8 | 21 | ||||||||||||
6 | 12 | 16 | |||||||||||||
6 | 12 | 1024 | 13 | ||||||||||||
Macbook Pro 2019 15 inch | 9980 | 32 | 8 | 16 | |||||||||||
Macbook Pro 2019 16 inch | 9980 | 64 | 8 | 16 | |||||||||||
Thinkpad P52 | 64 | ||||||||||||||
Thinkpad P17 Gen 1 | Xeon W-10855M | 2.80 base 3.9(6 cores) 4.8(reality) 5.1(1 core) | 100 | 51 | 128 | 6 | 12 |
Notes
For JDK 11.0.5 LTS - forgot I did some triage 20 months ago on 9 and ran into the tomcat and jaxb issue in our docker containers right away (didnt run tomcat 9 at the time) - even back with JDK9 https://jira.onap.org/browse/LOG-126 - anyway I have been transitioning my personal projects to 11 and I also see up to 40% speed up on saturated parallelStream operations from 1 to 16 cores so we can be ready for the switch over the next year
Kubernetes DaemonSet
What is the point of this application in terms of this daemonset deployment? To test saturation of a distributed RKE kubernetes cluster - across 5 nodes of 256G of ram and around 60 vCores.
Full Kubernetes Cluster CPU Saturation
Running the collatz fork join framework on Java 11 containers deployed on Kubernetes
Source
https://github.com/obrienlabs/benchmark/issues/4
DockerFile
#FROM anapsix/alpine-java:jre8 FROM openjdk:11 ARG USERVICE_HOME=/opt/app/ # Build up the deployment folder structure RUN mkdir -p $USERVICE_HOME ADD org.obrienscience.collatz.server.ForkJoinCollatzServer*.jar $USERVICE_HOME/lib/org.obrienscience.collatz.server.ForkJoinCollatzServer.jar ADD startService.sh $USERVICE_HOME/bin/ CMD ["/opt/app/bin/startService.sh"]
build.sh
BUILD_ID=10001 BUILD_DIR=builds mkdir ../../$BUILD_DIR TARGET_DIR=../../$BUILD_DIR/$BUILD_ID mkdir $TARGET_DIR CONTAINER_IMAGE=collatz-se cp ../../target/*.jar $TARGET_DIR cp DockerFile $TARGET_DIR cp startService.sh $TARGET_DIR cd $TARGET_DIR docker build --no-cache --build-arg build-id=$BUILD_ID -t obrienlabs/$CONTAINER_IMAGE -f DockerFile . #docker tag $CONTAINER_IMAGE:latest $CONTAINER_IMAGE:latest docker tag obrienlabs/$CONTAINER_IMAGE obrienlabs/$CONTAINER_IMAGE:0.0.1 # dockerhub docker push obrienlabs/$CONTAINER_IMAGE:0.0.1 # locally docker stop $CONTAINER_IMAGE docker rm $CONTAINER_IMAGE echo "starting: $CONTAINER_IMAGE" docker run --name $CONTAINER_IMAGE \ -d -p 8888:8080 \ -e os.environment.configuration.dir=/ \ -e os.environment.ecosystem=sbx \ obrienlabs/$CONTAINER_IMAGE:0.0.1 cd ../../src/docker
startService.sh
#!/bin/bash cd /opt/app java -cp /opt/app/lib/org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 5 6 1
Create a Kubernetes Namespace
apiVersion: v1 kind: Namespace metadata: name: dev labels: name: dev kubectl create -f namespace-dev.yaml kubectl get namespaces NAME STATUS AGE dev Active 5s
daemonset.yaml
apiVersion: apps/v1 kind: DaemonSet metadata: name: collatz namespace: dev labels: k8s-app: collatz spec: selector: matchLabels: name: collatz template: metadata: labels: name: collatz spec: tolerations: # this toleration is to have the daemonset runnable on master nodes # remove it if your masters can't run pods - key: node-role.kubernetes.io/master effect: NoSchedule containers: - name: collatz image: obrienlabs/collatz-se:0.0.1 resources: limits: memory: 1000Mi requests: cpu: 1000m memory: 1000Mi terminationGracePeriodSeconds: 30
Deployment steps - prior to automation
biometric:docker $ kubectl apply -f daemonset.yaml daemonset.apps/collatz created biometric:docker $ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default collatz-fl54r 0/1 Pending 0 2s biometric:docker $ kubectl get events LAST SEEN TYPE REASON OBJECT MESSAGE 75s Warning FailedScheduling pod/collatz-fl54r 0/1 nodes are available: 1 Insufficient cpu, 1 Insufficient memory. 75s Normal SuccessfulCreate daemonset/collatz Created pod: collatz-fl54r/ reduce from 4g resources: limits: memory: 1000Mi requests: cpu: 1000m memory: 1000Mibiometric:docker $ kubectl delete -f daemonset.yaml daemonset.apps "collatz" deleted biometric:docker $ kubectl apply -f daemonset.yaml daemonset.apps/collatz created biometric:docker $ kubectl get pods --all-namespaces | grep collatz default collatz-d9wzh 0/1 ErrImagePull 0 8s i didn't push a latest image tag yet image: obrienlabs/collatz-se:0.0.1 biometric:docker kubectl get pods --all-namespaces | grep collatz default collatz-b6bt9 1/1 Running 0 3s create a service apiVersion: v1 kind: Service metadata: name: backend-stub spec: selector: app: backend-stub ports: - protocol: TCP port: 8888 targetPort: 38888 biometric:charts michaelobrien$ kubectl apply -f kubernetes/backend-stub/service.yaml service/backend-stub created biometric:charts michaelobrien$ kubectl get services --all-namespaces | grep stub default backend-stub ClusterIP 10.102.247.55 <none> 8888/TCP 9s
Increasing kubernetes resource limits to the max vCores per host
biometric:docker $ kubectl logs -f collatz-b6bt9 availableProc : 2 fjps threads : 5,6 freeMemory() : 15397536 maxMemory() : 253427712 try for more ram/cpu - comment out resources: block biometric:docker $ kubectl get pods --all-namespaces | grep collatz default collatz-b6bt9 0/1 Terminating 0 7m52s biometric:docker $ kubectl get pods --all-namespaces | grep collatz biometric:docker $ 1 core biometric:docker $ kubectl logs -f collatz-fx6tf availableProc : 1 fjps threads : 5,6 freeMemory() : 31192144 maxMemory() : 504823808 totalMemory() : 32440320 limits: cpu: "3" requests: cpu: "1" still tops at 2 limits: cpu: "3" requests: cpu: "3" 15s Warning FailedScheduling pod/collatz-47z49 0/1 nodes are available: 1 Insufficient cpu.forgot - was my Docker Desktop resource limits 2 cores and 2g - upped to 14 cores and 10gset to 8 cores resources: limits: cpu: "8" requests: cpu: "1" better - we see 8 now PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH CSW PAGEINS IDLEW POWER 38233 com.docker.h 832.0 22:43.06 26 0 51 10G+ 0B 0B 38221 38225 sleeping *0[1]availableProc : 8 fjps threads : 5,6 freeMemory() : 147343816 maxMemory() : 2350907392 totalMemory() : 148897792 on a cluster kubectl get pods --all-namespaces -o wide| grep collatz default collatz-5zdm7 1/1 Running 0 2m46s 10.42.1.3 192.168.0.101 <none> <none> default collatz-gk8ps 1/1 Running 0 2m46s 10.42.2.5 192.168.0.59 <none> <none> default collatz-wqggl 1/1 Running 0 2m46s 10.42.0.5 192.168.0.114 <none> <none> kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% 192.168.0.101 10407m 86% 5577Mi 10% 192.168.0.114 9993m 83% 5934Mi 11% 192.168.0.59 11439m 81% 5220Mi 32% kubectl logs -f collatz-b78qv fjps threads : 5,6 freeMemory() : 855638016 maxMemory() : 13715374080 totalMemory() : 857735168
4 Comments
Michael O'Brien
JDK 11.0.4 on OSX 10.14.6 on i9-9980 Macbook Pro 2019 - single threaded performance up
obrienlabs:_exp michaelobrien$ java -cp .:org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 6 1
ForkJoinCollatzServer forkJoinPool-power-start end runs (v 20161009)
availableProc : 16
fjps threads : 4,6
freeMemory() : 534856392
maxMemory() : 8589934592
totalMemory() : 536870912
System.getEnv() : {PATH=/Users/michaelobrien/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Users/michaelobrien/opt/mvn361/bin, JAVA_ARCH=x86_64, SHELL=/bin/bash, TERM_PROGRAM=Apple_Terminal, SECURITYSESSIONID=186aa, OLDPWD=/Users/michaelobrien, TERM=xterm-256color, USER=michaelobrien, LANG=en_CA.UTF-8, TMPDIR=/var/folders/6x/ptprp3dd29zf6r81p3kldf_c0000gn/T/, SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.fa1Uwv79Fv/Listeners, XPC_FLAGS=0x0, TERM_SESSION_ID=E193033C-A61F-473A-A2EE-8DE9E187D245, JAVA_MAIN_CLASS_24636=org.obrienscience.collatz.server.ForkJoinCollatzServer, __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x52, Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.5iPlxCr2GX/Render, com.apple.java.jvmTask=CommandLine, LOGNAME=michaelobrien, XPC_SERVICE_NAME=0, PWD=/Users/michaelobrien/_exp, TERM_PROGRAM_VERSION=421.2, HOME=/Users/michaelobrien, SHLVL=1, _=/usr/bin/java}
Range: bits : 25
21833,4,22,2122,8
21143,4,21,2121,16
20860,4,20,2020,32
20927,4,19,2019,64
20979,4,18,2018,128
20969,4,17,2017,256
20892,4,16,2016,512
20876,4,15,2015,1024
20876,4,14,2014,2048
20895,4,13,2013,4096
20936,4,12,2012,8192
20969,4,11,2011,16384
20957,4,10,2010,32768
21021,4,9,219,65536
20980,4,8,208,131072
20903,4,7,207,262144
21048,4,6,216,524288
21700,4,5,215,1048576
20789,4,4,204,2097152
20209,4,3,203,4194304
19723,4,2,192,8388608
28797,4,1,281,16777216
48086,4,0,480,33554432
20597,5,22,2022,8
20813,5,21,2021,16
20884,5,20,2020,32
20959,5,19,2019,64
20886,5,18,2018,128
20881,5,17,2017,256
20854,5,16,2016,512
20889,5,15,2015,1024
20894,5,14,2014,2048
20898,5,13,2013,4096
20886,5,12,2012,8192
20917,5,11,2011,16384
20870,5,10,2010,32768
20902,5,9,209,65536
20954,5,8,208,131072
20867,5,7,207,262144
21350,5,6,216,524288
20954,5,5,205,1048576
20841,5,4,204,2097152
20256,5,3,203,4194304
19885,5,2,192,8388608
28860,5,1,281,16777216
48076,5,0,480,33554432
20912,6,22,2022,8
21116,6,21,2121,16
21260,6,20,2120,32
21215,6,19,2119,64
21212,6,18,2118,128
21204,6,17,2117,256
21180,6,16,2116,512
21227,6,15,2115,1024
21212,6,14,2114,2048
21205,6,13,2113,4096
21209,6,12,2112,8192
21248,6,11,2111,16384
21260,6,10,2110,32768
21276,6,9,219,65536
21250,6,8,218,131072
21226,6,7,217,262144
21339,6,6,216,524288
21171,6,5,215,1048576
21129,6,4,214,2097152
20488,6,3,203,4194304
20087,6,2,202,8388608
29200,6,1,291,16777216
48751,6,0,480,33554432
obrienlabs:_exp michaelobrien$ java -version
java version "11.0.4" 2019-07-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode)
Michael O'Brien
j8 compiled running as j8 - notice the faster multithreaded performance 15% but the slower single thread 70%
:_exp $ /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java -cp .:org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 6
ForkJoinCollatzServer forkJoinPool-power-start end runs (v 20161009)
availableProc : 16
fjps threads : 4,6
freeMemory() : 509461096
maxMemory() : 7635730432
totalMemory() : 514850816
22134,4,22,2222,8
18764,4,21,1821,16
18548,4,20,1820,32
18446,4,19,1819,64
18487,4,18,1818,128
18435,4,17,1817,256
18442,4,16,1816,512
18394,4,15,1815,1024
18229,4,14,1814,2048
18303,4,13,1813,4096
18310,4,12,1812,8192
18269,4,11,1811,16384
18256,4,10,1810,32768
18299,4,9,189,65536
18419,4,8,188,131072
18643,4,7,187,262144
18650,4,6,186,524288
21240,4,5,215,1048576
18097,4,4,184,2097152
19635,4,3,193,4194304
29562,4,2,292,8388608
47790,4,1,471,16777216
81512,4,0,810,33554432
17951,5,22,1722,8
18068,5,21,1821,16
18234,5,20,1820,32
18258,5,19,1819,64
18333,5,18,1818,128
18268,5,17,1817,256
18203,5,16,1816,512
18213,5,15,1815,1024
18218,5,14,1814,2048
18229,5,13,1813,4096
18192,5,12,1812,8192
18230,5,11,1811,16384
18224,5,10,1810,32768
18253,5,9,189,65536
18251,5,8,188,131072
18263,5,7,187,262144
18985,5,6,186,524288
18356,5,5,185,1048576
18375,5,4,184,2097152
20206,5,3,203,4194304
29912,5,2,292,8388608
47833,5,1,471,16777216
81722,5,0,810,33554432
18243,6,22,1822,8
18348,6,21,1821,16
18458,6,20,1820,32
18440,6,19,1819,64
18438,6,18,1818,128
18472,6,17,1817,256
18329,6,16,1816,512
18312,6,15,1815,1024
18317,6,14,1814,2048
18385,6,13,1813,4096
18326,6,12,1812,8192
18409,6,11,1811,16384
18352,6,10,1810,32768
18353,6,9,189,65536
18321,6,8,188,131072
18355,6,7,187,262144
18396,6,6,186,524288
18259,6,5,185,1048576
18302,6,4,184,2097152
20777,6,3,203,4194304
30267,6,2,302,8388608
47914,6,1,471,16777216
82373,6,0,820,33554432
recompile for Java 11
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<!-- source>1.11</source>
<target>1.11</target-->
<release>11</release></configuration>
21303,4,22,2122,8
20458,4,21,2021,16
20810,4,20,2020,32
21116,4,19,2119,64
21044,4,18,2118,128
20978,4,17,2017,256
21094,4,16,2116,512
20964,4,15,2015,1024
21029,4,14,2114,2048
21059,4,13,2113,4096
20933,4,12,2012,8192
20888,4,11,2011,16384
20960,4,10,2010,32768
21293,4,9,219,65536
21379,4,8,218,131072
21572,4,7,217,262144
21410,4,6,216,524288
21208,4,5,215,1048576
20956,4,4,204,2097152
20327,4,3,203,4194304
19951,4,2,192,8388608
29179,4,1,291,16777216
48451,4,0,480,33554432
Michael O'Brien
TP52
@biometrics MINGW64 /c/_experiment
$ java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 4 6 1
ForkJoinCollatzServer forkJoinPool-power-start end runs (v 20161009)
availableProc : 12
fjps threads : 4,6
freeMemory() : 1016363720
maxMemory() : 15228469248
totalMemory() : 1027080192
System.getEnv() :
Range: bits : 25
20839,4,22,2022,8
17933,4,21,1721,16
17763,4,20,1720,32
17937,4,19,1719,64
17647,4,18,1718,128
17672,4,17,1717,256
17709,4,16,1716,512
17669,4,15,1715,1024
17616,4,14,1714,2048
17659,4,13,1713,4096
19029,4,12,1912,8192
18099,4,11,1811,16384
18100,4,10,1810,32768
17700,4,9,179,65536
17797,4,8,178,131072
17831,4,7,177,262144
18188,4,6,186,524288
19340,4,5,195,1048576
17711,4,4,174,2097152
18427,4,3,183,4194304
26158,4,2,262,8388608
48533,4,1,481,16777216
90756,4,0,900,33554432
17731,5,22,1722,8
17678,5,21,1721,16
17655,5,20,1720,32
17629,5,19,1719,64
17661,5,18,1718,128
17653,5,17,1717,256
17644,5,16,1716,512
17655,5,15,1715,1024
17704,5,14,1714,2048
17664,5,13,1713,4096
17648,5,12,1712,8192
17681,5,11,1711,16384
17665,5,10,1710,32768
17685,5,9,179,65536
18035,5,8,188,131072
17965,5,7,177,262144
18049,5,6,186,524288
17739,5,5,175,1048576
17998,5,4,174,2097152
18096,5,3,183,4194304
27027,5,2,272,8388608
47326,5,1,471,16777216
89711,5,0,890,33554432
17830,6,22,1722,8
17733,6,21,1721,16
17821,6,20,1720,32
17811,6,19,1719,64
17833,6,18,1718,128
17804,6,17,1717,256
17795,6,16,1716,512
17793,6,15,1715,1024
17790,6,14,1714,2048
17800,6,13,1713,4096
17781,6,12,1712,8192
17781,6,11,1711,16384
17861,6,10,1710,32768
17892,6,9,179,65536
17954,6,8,178,131072
17914,6,7,177,262144
17932,6,6,176,524288
17940,6,5,175,1048576
18092,6,4,184,2097152
19898,6,3,193,4194304
26273,6,2,262,8388608
48812,6,1,481,16777216
89955,6,0,890,33554432
@biometrics MINGW64 /c/_experiment
$ java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
Installed 11.0.5 (up from 11.0.4) - getting 1.8.0 speeds again
21909,5,22,2122,8
18812,5,21,1821,16
18277,5,20,1820,32
18512,5,19,1819,64
18266,5,18,1818,128
18481,5,17,1817,256
18326,5,16,1816,512
18441,5,15,1815,1024
18211,5,14,1814,2048
18343,5,13,1813,4096
18409,5,12,1812,8192
18313,5,11,1811,16384
18271,5,10,1810,32768
18398,5,9,189,65536
18263,5,8,188,131072
18313,5,7,187,262144
18262,5,6,186,524288
18272,5,5,185,1048576
18264,5,4,184,2097152
17758,5,3,173,4194304
17498,5,2,172,8388608
26281,5,1,261,16777216
47492,5,0,470,33554432
18507,6,22,1822,8
18482,6,21,1821,16
18571,6,20,1820,32
18694,6,19,1819,64
18800,6,18,1818,128
18693,6,17,1817,256
18691,6,16,1816,512
18800,6,15,1815,1024
18779,6,14,1814,2048
18627,6,13,1813,4096
18795,6,12,1812,8192
18917,6,11,1811,16384
18939,6,10,1810,32768
19147,6,9,199,65536
18857,6,8,188,131072
18955,6,7,187,262144
18933,6,6,186,524288
18729,6,5,185,1048576
18468,6,4,184,2097152
17994,6,3,173,4194304
17622,6,2,172,8388608
26810,6,1,261,16777216
51022,6,0,510,33554432
obrienlabs:_exp $ java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)
for the 5820 on 11.0.5
12164,4,22,1222,8
11735,4,21,1121,16
11569,4,20,1120,32
11481,4,19,1119,64
11500,4,18,1118,128
11487,4,17,1117,256
11484,4,16,1116,512
11482,4,15,1115,1024
11475,4,14,1114,2048
11472,4,13,1113,4096
11480,4,12,1112,8192
11562,4,11,1111,16384
11567,4,10,1110,32768
11530,4,9,119,65536
11561,4,8,118,131072
11566,4,7,117,262144
11707,4,6,116,524288
12394,4,5,125,1048576
11571,4,4,114,2097152
11898,4,3,113,4194304
15091,4,2,152,8388608
28467,4,1,281,16777216
54617,4,0,540,33554432
11618,5,22,1122,8
11616,5,21,1121,16
11572,5,20,1120,32
11575,5,19,1119,64
11583,5,18,1118,128
11594,5,17,1117,256
11602,5,16,1116,512
11591,5,15,1115,1024
11580,5,14,1114,2048
11578,5,13,1113,4096
11584,5,12,1112,8192
11584,5,11,1111,16384
11596,5,10,1110,32768
11590,5,9,119,65536
11597,5,8,118,131072
11643,5,7,117,262144
11750,5,6,116,524288
11697,5,5,115,1048576
11617,5,4,114,2097152
11897,5,3,113,4194304
14884,5,2,142,8388608
28509,5,1,281,16777216
54373,5,0,540,33554432
11684,6,22,1122,8
11672,6,21,1121,16
11674,6,20,1120,32
11691,6,19,1119,64
11685,6,18,1118,128
11686,6,17,1117,256
11699,6,16,1116,512
11699,6,15,1115,1024
11703,6,14,1114,2048
11719,6,13,1113,4096
11724,6,12,1112,8192
11733,6,11,1111,16384
11745,6,10,1110,32768
11723,6,9,119,65536
11753,6,8,118,131072
11774,6,7,117,262144
11869,6,6,116,524288
11799,6,5,115,1048576
11821,6,4,114,2097152
12002,6,3,123,4194304
15045,6,2,152,8388608
28688,6,1,281,16777216
54380,6,0,540,33554432
@biometric2 MINGW64 /c/_dev
$ java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)
percent better between 1.8/1.11 on # threads
13 on 1024
21 on 8
40 on 4
41 on 2
40 on 1conclusion:
The Macbook 8-core I9-9980 at 2.4GHz is 6-7% faster than an OC 6-core 5820 at 4.2 GHz for 1 to 2 cores, but drops off due to thermal throttling for 4-8 cores.
1 core is 6% faster
2 cores is 7% faster
4 cores is 18% slower - TT on
8 cores is 51% slower - TT on
raspberry pi 3 - 32bit 1.8.0_64 (max 270 of 400 on 4 cores without 64 bit)
599906,3,22,59922,8
549620,3,21,54921,16
539931,3,20,53920,32
545243,3,19,54519,64
534528,3,18,53418,128
538106,3,17,53817,256
544344,3,16,54416,512
535077,3,15,53515,1024
517395,3,14,51714,2048
521976,3,13,52113,4096
529738,3,12,52912,8192
496108,3,11,49611,16384
520691,3,10,52010,32768
511613,3,9,5119,65536
500932,3,8,5008,131072
504206,3,7,5047,262144
494307,3,6,4946,524288
491319,3,5,4915,1048576
525733,3,4,5254,2097152
495765,3,3,4953,4194304
463885,3,2,4632,8388608
568585,3,1,5681,16777216
1009217,3,0,10090,33554432
591905,4,22,59122,8
610186,4,21,61021,16
603414,4,20,60320,32
594263,4,19,59419,64
583575,4,18,58318,128
590557,4,17,59017,256
566525,4,16,56616,512
565132,4,15,56515,1024
575157,4,14,57514,2048
561121,4,13,56113,4096
566273,4,12,56612,8192
557091,4,11,55711,16384
545216,4,10,54510,32768
559148,4,9,5599,65536
539666,4,8,5398,131072
560226,4,7,5607,262144
519707,4,6,5196,524288
503850,4,5,5035,1048576
494686,4,4,4944,2097152
497380,4,3,4973,4194304
470605,4,2,4702,8388608
570895,4,1,5701,16777216
1012051,4,0,10120,33554432
694078,5,22,69422,8
710193,5,21,71021,16
700458,5,20,70020,32
698760,5,19,69819,64
673676,5,18,67318,128
671337,5,17,67117,256
679798,5,16,67916,512
771955,5,15,77115,1024
749718,5,14,74914,2048
top - 13:19:27 up 9:17, 5 users, load average: 3.43, 3.88, 4.12
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
%Cpu0 : 64.9 us, 8.2 sy, 0.0 ni, 25.8 id, 0.0 wa, 0.0 hi, 1.0 si, 0.0 st
%Cpu1 : 74.0 us, 3.1 sy, 0.0 ni, 22.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 65.3 us, 10.2 sy, 0.0 ni, 24.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 55.9 us, 10.8 sy, 0.0 ni, 33.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 947744 total, 294092 used, 653652 free, 37956 buffers
KiB Swap: 102396 total, 0 used, 102396 free. 151432 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22697 pi 20 0 306660 19200 9468 S 258.2 2.0 2:42.18 java -cp org.obrienscience.collatz.server.ForkJoinCollatzServer.jar org.obrienscience.collatz.server.ForkJoinCollatzServer 2 3 1
22809 pi 20 0 5140 2544 2152 R 2.0 0.3 0:01.02 top
10 root rt 0 0 0 0 S 1.0 0.0 0:04.65 [migration/1]
pi@raspberrypi:~ $ cat /proc/cpuinfo
processor : 3
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 76.80
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Hardware : BCM2709
Revision : a22082
Serial : 000000005de9b90e
589312,2,22,58922,8
578953,2,21,57821,16
566568,2,20,56620,32
548020,2,19,54819,64
437909,2,18,43718,128
441010,2,17,44117,256
444904,2,16,44416,512
462980,2,15,46215,1024
442886,2,14,44214,2048
441317,2,13,44113,4096
442714,2,12,44212,8192
439480,2,11,43911,16384
457914,2,10,45710,32768
452545,2,9,4529,65536
452326,2,8,4528,131072
449764,2,7,4497,262144
445505,2,6,4456,524288
452137,2,5,4525,1048576
449089,2,4,4494,2097152
442246,2,3,4423,4194304
442642,2,2,4422,8388608
561875,2,1,5611,16777216
1005098,2,0,10050,33554432
508294,3,22,50822,8
518880,3,21,51821,16
518568,3,20,51820,32
512266,3,19,51219,64
515773,3,18,51518,128
510463,3,17,51017,256
503526,3,16,50316,512
500126,3,15,50015,1024
496820,3,14,49614,2048
494195,3,13,49413,4096
495680,3,12,49512,8192
492872,3,11,49211,16384
492132,3,10,49210,32768
483878,3,9,4839,65536
486580,3,8,4868,131072
602285,3,7,6027,262144
Michael O'Brien
biometric 2 3.3ghz 2200mhz ram wsl
11188,5,22,1122,8
9251,5,21,921,16
11610,5,20,1120,32
11802,5,19,1119,64
11553,5,18,1118,128
11615,5,17,1117,256
11650,5,16,1116,512
11615,5,15,1115,1024
11520,5,14,1114,2048
11525,5,13,1113,4096
11488,5,12,1112,8192
11509,5,11,1111,16384
11575,5,10,1110,32768
11639,5,9,119,65536
11549,5,8,118,131072
11501,5,7,117,262144
11684,5,6,116,524288
11526,5,5,115,1048576
11486,5,4,114,2097152
11723,5,3,113,4194304
17312,5,2,172,8388608
33356,5,1,331,16777216
63607,5,0,630,33554432
biometric 3 3.3g 2333mhz ram wsl
13077,5,22,1322,8
11840,5,21,1121,16
11942,5,20,1120,32
11829,5,19,1119,64
11771,5,18,1118,128
11791,5,17,1117,256
11730,5,16,1116,512
11748,5,15,1115,1024
11757,5,14,1114,2048
11811,5,13,1113,4096
11725,5,12,1112,8192
11754,5,11,1111,16384
11726,5,10,1110,32768
11849,5,9,119,65536
11726,5,8,118,131072
11768,5,7,117,262144
12009,5,6,126,524288
11817,5,5,115,1048576
11707,5,4,114,2097152
12220,5,3,123,4194304
18675,5,2,182,8388608
35357,5,1,351,16777216
66871,5,0,660,33554432
biometric4 3.9ghz 384/1.5/15g hyperv 11/12 cores
11/12 cores, 12g ram
14396,5,22,1422,8
12687,5,21,1221,16
12269,5,20,1220,32
12256,5,19,1219,64
12227,5,18,1218,128
12267,5,17,1217,256
12242,5,16,1216,512
12236,5,15,1215,1024
12235,5,14,1214,2048
12246,5,13,1213,4096
12258,5,12,1212,8192
12258,5,11,1211,16384
12439,5,10,1210,32768
12354,5,9,129,65536
12422,5,8,128,131072
12106,5,7,127,262144
12392,5,6,126,524288
12255,5,5,125,1048576
12228,5,4,124,2097152
13289,5,3,133,4194304
17839,5,2,172,8388608
32403,5,1,321,16777216
60977,5,0,600,33554432
12212,6,22,1222,8
12144,6,21,1221,16
12147,6,20,1220,32
12140,6,19,1219,64
12142,6,18,1218,128
12129,6,17,1217,256
12137,6,16,1216,512
12116,6,15,1215,1024
12111,6,14,1214,2048
12225,6,13,1213,4096
12891,6,12,1212,8192
13585,6,11,1311,16384
13697,6,10,1310,32768
14073,6,9,149,65536
12379,6,8,128,131072
12262,6,7,127,262144
12223,6,6,126,524288
12106,6,5,125,1048576
11959,6,4,114,2097152
12426,6,3,123,4194304
17155,6,2,172,8388608
33347,6,1,331,16777216
65155,6,0,650,33554432
p17-g1
17985,5,22,1722,8
17127,5,21,1721,16
17172,5,20,1720,32
17097,5,19,1719,64
17096,5,18,1718,128
17091,5,17,1717,256
17087,5,16,1716,512
17081,5,15,1715,1024
17087,5,14,1714,2048
17206,5,13,1713,4096
17124,5,12,1712,8192
17129,5,11,1711,16384
17136,5,10,1710,32768
17222,5,9,179,65536
17202,5,8,178,131072
17189,5,7,177,262144
17293,5,6,176,524288
17175,5,5,175,1048576
17231,5,4,174,2097152
17090,5,3,173,4194304
18593,5,2,182,8388608
34415,5,1,341,16777216
61615,5,0,610,33554432
17152,6,22,1722,8
17155,6,21,1721,16
17126,6,20,1720,32
17137,6,19,1719,64
17140,6,18,1718,128
17148,6,17,1717,256
17138,6,16,1716,512
17132,6,15,1715,1024
17133,6,14,1714,2048
17153,6,13,1713,4096
17140,6,12,1712,8192
17147,6,11,1711,16384
17172,6,10,1710,32768
17159,6,9,179,65536
17167,6,8,178,131072
17291,6,7,177,262144
17310,6,6,176,524288
17283,6,5,175,1048576
17229,6,4,174,2097152
17369,6,3,173,4194304
18532,6,2,182,8388608
33978,6,1,331,16777216
61045,6,0,610,33554432
x1c-g9
17054,5,22,1722,8
18929,5,21,1821,16
22363,5,20,2220,32
19689,5,19,1919,64
18927,5,18,1818,128
18587,5,17,1817,256
17204,5,16,1716,512
16865,5,15,1615,1024
16468,5,14,1614,2048
19153,5,13,1913,4096
18411,5,12,1812,8192
22386,5,11,2211,16384
27679,5,10,2710,32768
27584,5,9,279,65536
25460,5,8,258,131072
23764,5,7,237,262144
21604,5,6,216,524288
15017,5,5,155,1048576
15770,5,4,154,2097152
16427,5,3,163,4194304
32480,5,2,322,8388608
53396,5,1,531,16777216
84806,5,0,840,33554432
32313,6,22,3222,8
28043,6,21,2821,16
26264,6,20,2620,32
27148,6,19,2719,64
28278,6,18,2818,128
29401,6,17,2917,256
27885,6,16,2716,512
26633,6,15,2615,1024
28744,6,14,2814,2048
21120,6,13,2113,4096
33397,6,12,3312,8192
27236,6,11,2711,16384
29175,6,10,2910,32768
20099,6,9,209,65536
30268,6,8,308,131072
28019,6,7,287,262144
25968,6,6,256,524288
25782,6,5,255,1048576
26177,6,4,264,2097152
26273,6,3,263,4194304
32981,6,2,322,8388608
47412,6,1,471,16777216
74378,6,0,740,33554432