pocketnetteam / pocketnet.core

Decentralized social network based on the blockchain
https://pocketnet.app
Apache License 2.0
114 stars 28 forks source link

v0.20.20 Release #268

Closed andyoknen closed 2 years ago

andyoknen commented 2 years ago

Added v0.20.20-beta1 for testing

tawmaz commented 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)
gab-fer commented 2 years ago

The results of load testing for the test network.

test.1.pocketnet.app

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
tawmaz commented 2 years ago

Started sync test with 20.20 tag v0.20.20-beta1

andyoknen commented 2 years ago

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