Closed andyoknen closed 2 years ago
All Unittests pass. Bench results below:
Warning, results might be unstable:
* CPU frequency scaling enabled: CPU 0 between 800.0 and 3,100.0 MHz
* CPU governor is 'powersave' but should be 'performance'
* Turbo is enabled, CPU frequency will fluctuate
Recommendations
* Use 'pyperf system tune' before benchmarking. See https://github.com/psf/pyperf
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 12,564,570.00 | 79.59 | 2.0% | 0.15 | `AssembleBlock`
| 2,954.05 | 338,518.52 | 2.9% | 0.01 | `Base58CheckEncode`
| 1,211.74 | 825,260.44 | 2.7% | 0.01 | `Base58Decode`
| 1,688.26 | 592,324.52 | 0.7% | 0.01 | `Base58Encode`
| 489.74 | 2,041,879.49 | 1.9% | 0.01 | `Bech32Decode`
| 608.93 | 1,642,224.04 | 1.1% | 0.01 | `Bech32Encode`
| 1,180,010.00 | 847.45 | 10.9% | 0.01 | :wavy_dash: `BenchLockedPool` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 681,679.00 | 1,466.97 | 10.1% | 0.01 | :wavy_dash: `CCheckQueueSpeedPrevectorJob` (Unstable with ~1.1 iters. Increase `minEpochIterations` to e.g. 11)
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 6,042.93 | 165,482.62 | 3.8% | 0.01 | `CCoinsCaching`
| ns/elem | elem/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 246.23 | 4,061,255.10 | 6.2% | 0.03 | :wavy_dash: `ConstructGCSFilter` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 196,921.80 | 5,078.16 | 6.2% | 0.01 | :wavy_dash: `DeserializeAndCheckBlockTest` (Unstable with ~4.6 iters. Increase `minEpochIterations` to e.g. 46)
| 75,027.77 | 13,328.40 | 7.6% | 0.01 | :wavy_dash: `DeserializeBlockTest` (Unstable with ~12.4 iters. Increase `minEpochIterations` to e.g. 124)
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 2.11 | 474,458,456.43 | 0.4% | 0.01 | `FastRandom_1bit`
| 11.32 | 88,323,424.90 | 0.7% | 0.01 | `FastRandom_32bit`
| ns/elem | elem/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 31,988.42 | 31,261.31 | 0.5% | 0.01 | `MatchGCSFilter`
| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 21,124.82 | 47,337.69 | 4.2% | 0.01 | `MempoolEviction`
| ns/leaf | leaf/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 172.29 | 5,804,205.91 | 6.8% | 0.02 | :wavy_dash: `MerkleRoot` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
| ns/byte | byte/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 3.17 | 315,586,236.15 | 4.2% | 0.04 | `RIPEMD160`
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 1,169.38 | 855,156.30 | 22.5% | 0.01 | :wavy_dash: `RollingBloom` (Unstable with ~834.9 iters. Increase `minEpochIterations` to e.g. 8349)
| ns/byte | byte/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 2.33 | 428,276,713.01 | 4.6% | 0.03 | `SHA1_test`
| 2.42 | 413,044,793.58 | 1.7% | 0.01 | `SHA256D64_1024`
| 8.64 | 115,680,610.56 | 1.0% | 0.01 | `SHA256_32b`
| 3.89 | 257,163,878.45 | 2.3% | 0.04 | `SHA256_test`
| 3.80 | 263,093,921.37 | 3.3% | 0.04 | `SHA512_test`
| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 34.34 | 29,121,869.36 | 0.5% | 0.01 | `SipHash_32b`
| 196,336.00 | 5,093.31 | 5.0% | 0.01 | :wavy_dash: `VerifyScriptBench` (Unstable with ~5.2 iters. Increase `minEpochIterations` to e.g. 52)
2 VCPU
4 GB RAM
SSD
threads=10
workqueue=100
duration 1 hour
Test # | Threads / TX per sec |
Count | Time AVG (ms) | Time MAX (ms) | Time MIN (ms) | RPC Pool exceeded |
---|---|---|---|---|---|---|
1 | 4 / 2 | 6574 | 130 | 24962 | 86 | 0 |
2 | 8 / 1 | 24104 | 165 | 21817 | 86 | 0 |
3 | 16 / 0.5 | 67480 | 321 | 17739 | 85 | 0 |
4 | 32 / 0.25 | 101405 | 753 | 43459 | 85 | 11805 |
The method of generating a transaction in the test network - pocketdb/web/PocketTransactionRpc.h::GenerateTransaction
The following types of transactions were used in equal proportions:
Comment
Post
Rating
Subscription
Started sync test with 20.20 tag v0.20.20-beta1
I have added a tag v0.20.20-beta3 - the changes are mainly related to RPC and contain an important change to increase the block size. At the very beginning of development, we increased the maximum block size to 16 MB, but did not increase the variable in the network protocol. We encountered a synchronization error in the test network when a block with 5 thousand transactions appeared
Added v0.20.20-beta1 for testing