Page tree

Michael O'Brien

Skip to end of metadata
Go to start of metadata

Performance

Performance/Cost Ratios by Machine

Cost/Compute

Proc


$sec/Cycle
all cores 

$sec/Cycle
1 core 

CPU

Mhz

cores

threads

RAM

System
cost 

Speed
all cores 

Java 8

Speed
1 core 

Java 8

Java 11Java 11
MMini 2012
37.2115

48
$1.2k31.0138.5

i74700MQ
39.4121

48
$1k39.4121.0

i5 4310

43.8

94

24
$.9k48.7104.2

i7-5820k 4.6G
47.2320
4662612
$4k11.880.0

compute stick

49.0

115

14
$0.22k222.9521.2

Asus 3610m

49.4

206
260048
$1.532.9137.1

nuc i7-5557
51.2110

24
$1k51.2109.8

nuc i5-5250
54.5111

24
$0.8k68.1139.1

XPS 8300
54.9169
270048
$1.5k36.6112.9

i7-5820k 3.3G
64.8370
3300612
$4k16.292.4

Macbook Pro 2013

108

415i7 4960H260048
$4k27.1103.8

p4-3Ghz

119

178
300012
$0.5k238.7356.8

Raspberry PI i1b
387335
700110.5$0.08k48344185



to be ranked
























Raspberry PI 3A






1




Raspberry PI 4B






4




Thinkpad P52






64




Macbook Pro 2019 15 inch






32


2050
Macbook Pro 2019 16 inch






64


1755














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


org.obrienscience.collatz.server.ForkJoinCollatzServer.jar

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 10 to 0% performance speed up for saturated ForkJoinPool tests under Java 11 than in Java 8 only on a i9-9980 Macbook pro undergoing thermal throttling - otherwise we have a 30 to 15% positive speedup running even JDK 8 optimized bytecode



MachineCPUMhzBusMulRamCoresvCoresThreads
Java 8Java 11Increase 8-11

4.2 GHz x99-a DDR45820K410012533646121


40







6122


41







6124


40







6128


21







61216










6121024


13

Macbook Pro 2019 15 inch9980


32816





Macbook Pro 2019 16 inch9980


64816





Thinkpad P52



64







Thinkpad P17Xeon
W-10855M
2.80 base
3.9(6 cores)
4.8(reality)
5.1(1 core)
10051128612




Checking the new constructor https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ForkJoinPool.html#%3Cinit%3E(int,java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory,java.lang.Thread.UncaughtExceptionHandler,boolean,int,int,int,java.util.function.Predicate,long,java.util.concurrent.TimeUnit)


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.

see Kubernetes Cluster across VMware nodes on OSX or Windows#Experiment:RunafullsaturationDaemonSetkubernetesdeploymentacrossallnodesinthecluster

Full Kubernetes Cluster CPU Saturation

Running the collatz fork join framework on Java 11 containers deployed on Kubernetes

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

daemonset.yaml

daemonset.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: collatz
  namespace: default
  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

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 coresresources:
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
amdocs@obriensystemsu0:~$ 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>

amdocs@obriensystemsu0:~$ 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% 
amdocs@obriensystemsu0:~$ kubectl logs -f collatz-b78qv
fjps threads : 5,6
freeMemory() : 855638016
maxMemory() : 13715374080
totalMemory() : 857735168
  • No labels

3 Comments

  1. 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)

  2. 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

  3. 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