Bitcoin Forum
May 07, 2021, 05:28:08 AM *
News: Latest Bitcoin Core release: 0.21.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Are there any benchmark about Bitcoin full node client resource usage?  (Read 169 times)
ETFbitcoin
Legendary
*
Offline Offline

Activity: 1862
Merit: 2778


NotYourKeys.org - Not Your Keys, Not Your Bitcoin


View Profile
April 22, 2021, 12:34:13 PM
Merited by Coding Enthusiast (4), aliashraf (2), Quickseller (1)
 #1

Are there any benchmark about Bitcoin full node client resource usage/time complexity on different block size? For reference, i'm looking for benchmark similar with Bitfury report (Block Size Increase). Unfortunately Bitfury's paper doesn't mention hardware, software and parameter used, so it's not reliable source.




What i'm NOT looking is benchmark like this, 2020 Bitcoin Node Performance Tests.

1620365288
Hero Member
*
Offline Offline

Posts: 1620365288

View Profile Personal Message (Offline)

Ignore
1620365288
Reply with quote  #2

1620365288
Report to moderator
Every time a block is mined, a certain amount of BTC (called the subsidy) is created out of thin air and given to the miner. The subsidy halves every four years and will reach 0 in about 130 years.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
Shymaa-Arafat
Newbie
*
Offline Offline

Activity: 12
Merit: 7


View Profile
May 03, 2021, 07:38:37 PM
 #2

I know those locality plots here
https://github.com/mit-dci/utreexo/issues/257
 r not exactly what u r looking for, but u may find in Utreexo project site the open source and data to do ur own plots/data analysis (they do download the IBD Initial Blockchain Data which is full data of previous 200 Blocks.
.
-Also this site give data about block sizes, no. of txs,... etc
 https://blockstream.info/testnet/block/00000000000000167572bba29bdcec2cbb0e6926b61d33233b927d44fb75cc33
.
Hope this helps...
NotATether
Hero Member
*****
Offline Offline

Activity: 518
Merit: 1300


Cryptographic Crawler


View Profile WWW
May 04, 2021, 06:30:57 AM
 #3

How would somebody simulate the block size for blocks received by Bitcoin Core to perform these tests though? The blocks are either 1MB or 4 weight units in size so it involves running it in regtest and submitting your own blocks en masse, and then you have to fork Core and change the code to allow for bigger size limits. I don't believe anyone has done this yet. And by the way I think that it makes more sense to benchmark resource usage in WUs instead of megabytes since new versions of the client doesn't have a concept of megabyte-denominated block size.

Quickseller
Copper Member
Legendary
*
Offline Offline

Activity: 2436
Merit: 2072



View Profile
May 04, 2021, 06:43:09 AM
 #4

How would somebody simulate the block size for blocks received by Bitcoin Core to perform these tests though?
You can run bitcoin core in testnet mode, change the code to accept different size blocks, and use a second device to mine blocks at the various specifications.


        ▄▄▀▀▀▄▄
     ▄▄▀▄▄███▄▄▀▄▄
  ▄▄▀▄▄█████████▄▄▀▄▄
▄▀▄▄█████ ██▄▄▄▄▀██▄▄▀▄
█ ██████ ▄ █████ ████ █
█ █████ ▄█▄ ██ ▄█████ █
█ ████ ▄███▄ ██ █████ █
█ ███ ▄█████▄ ██ ████ █
▀▄▀▀█▄███████▄██▄██▀▀▄▀
  ▀▀▄▀▀█████████▀▀▄▀▀
     ▀▀▄▀▀███▀▀▄▀▀
        ▀▀▄▄▄▀▀

       ▄▄▄▄▄▄▄
   ▄▄▀▀       ▀▀▄▄
  █               █ ▄
 █   █▀▄ ▀█▀ ▀█▀   █ ▀▄
 █   █▀▄  █   █    █  ▀▄
  █  ▀▀   ▀   ▀   █    █
▄▀ ▄▄           ▄▀    ▄▀
 ▀▀  ▀▀▄▄▄▄▄▄▄▀▀      ▀▄
        ▀▄▄      ▄▄▀▀▄▄▀
           ▀▀▀▀▀▀

                      ▄▄▄
  ▄█▄              ▄███████▄
  ▀████▄▄         ██████▀██████▀
    ▀▀▀████▄▄     ███████████▀
    ▀██▄███████▄▄███████████
     ▄▄▄▀██████████████████
      ▀████████████████████
▀█▄▄     ▀████████████████
  ▀████████████████▀█████
    ▀████████████▀▄▄███▀
       ▀▀██████████▀▀
           ▀▀▀▀▀

               ▄▄   ▄▄
              ▄▀ ▀▀█  █
             ▄▀     ▀▀
         ▄▄▄▄█▄
     ▄█▀▀▀▀▀▀▀▀▀▀█▄
 ▄▀▄▀              ▀▄▀▄
█  █   ▄█▄    ▄█▄   █  █
 ▀█    ▀█▀    ▀█▀    █▀
  █                  █
   █   ▀▄      ▄▀   █
    ▀▄   ▀▀▀▀▀▀   ▄▀
      ▀▀▄▄▄▄▄▄▄▄▀▀

   ▄▄████████████████████▄▄
 ▄██████████████████████████▄
▄████████████████████████████▄
██████████ ▀▀█████████████████
██████████     ▀▀█████████████
██████████         ▀▀█████████
██████████         ▄▄█████████
██████████     ▄▄█████████████
██████████ ▄▄█████████████████
▀████████████████████████████▀
 ▀██████████████████████████▀
   ▀▀████████████████████▀▀

   ▄▄███████████████▄▄
 ▄██▀▀             ▀▀██▄
▄██              ▄▄   ██▄
██        ▄▄▄▄▄  ▀▀    ██
██      ▄▀     ▀▄      ██
██     █         █     ██
██     █         █     ██
██      ▀▄     ▄▀      ██
██        ▀▀▀▀▀        ██
▀██                   ██▀
 ▀██▄▄             ▄▄██▀
   ▀▀███████████████▀▀

   ▄▄███████████████▄▄
 ▄█████████████████████▄
▄██████████████▀▀███████▄
████████████▀▀    ███████
█████████▀▀   ▄   ███████
██████▀▀     █    ███████
████▀       █     ███████
█████▄▄   ▄█      ███████
████████ ██▄      ███████
▀████████ ▀▄███▄▄███████▀
 ▀█████████████████████▀
   ▀▀███████████████▀▀

  ▄▄███████████████▄▄
 █████████████████████
███████████████████████
███████████▀    ███████
██████████  ▄██████████
██████████  ███████████
████████      ▄████████
██████████  ███████████
██████████  ███████████
██████████  ███████████
 █████████████████████
  ▀▀███████████████▀▀

   ▄▄████████████████▄▄
 ▄█████▀▀▀██████▀▀▀█████▄
▄████▀  ▀▀▀    ▀▀▀  ▀████▄
████▀                ▀████
███▀                  ▀███
███       ▄    ▄       ███
██▀      ███  ███      ▀██
██       ▀█▀  ▀█▀       ██
██▄     ▄        ▄     ▄██
▀██▄     ▀▀▄▄▄▄▀▀     ███▀
 ▀███▄▄▄▄▄▄████▄▄▄▄▄▄███▀
   ▀▀████████████████▀▀
ETFbitcoin
Legendary
*
Offline Offline

Activity: 1862
Merit: 2778


NotYourKeys.org - Not Your Keys, Not Your Bitcoin


View Profile
May 04, 2021, 09:46:30 AM
 #5

I know those locality plots here
https://github.com/mit-dci/utreexo/issues/257
 r not exactly what u r looking for, but u may find in Utreexo project site the open source and data to do ur own plots/data analysis (they do download the IBD Initial Blockchain Data which is full data of previous 200 Blocks.
.
-Also this site give data about block sizes, no. of txs,... etc
 https://blockstream.info/testnet/block/00000000000000167572bba29bdcec2cbb0e6926b61d33233b927d44fb75cc33
.
Hope this helps...

I appreciate the effort, but those are far from what i'm looking for.

How would somebody simulate the block size for blocks received by Bitcoin Core to perform these tests though? The blocks are either 1MB or 4 weight units in size so it involves running it in regtest and submitting your own blocks en masse, and then you have to fork Core and change the code to allow for bigger size limits.

Roughly this is what i had in mind,
1. Prepare separate network (with specific block weight).
2. Prepare few fast computer solely to broadcast transaction & mine block.
3. Prepare few cheap/low-powered/old computer (e.g. Raspberry Pi and old Intel NUC) used to perform benchmark.
4. On fast computer, perform mining block and broadcast transaction (on various network load such as 25%, 50%, 100% and 125% of block size limit).
5. Measure time to verify block/transaction and CPU, RAM and I/O usage on other computer.

And by the way I think that it makes more sense to benchmark resource usage in WUs instead of megabytes since new versions of the client doesn't have a concept of megabyte-denominated block size.

I agree.

Shymaa-Arafat
Newbie
*
Offline Offline

Activity: 12
Merit: 7


View Profile
May 04, 2021, 12:37:21 PM
 #6

Quote
Iappreciate the effort, but those are far from what i'm looking for.

u could use the (available) IBD of previous blocks they use
NotATether
Hero Member
*****
Offline Offline

Activity: 518
Merit: 1300


Cryptographic Crawler


View Profile WWW
May 04, 2021, 05:14:42 PM
Merited by ETFbitcoin (1)
 #7

Roughly this is what i had in mind,
1. Prepare separate network (with specific block weight).
2. Prepare few fast computer solely to broadcast transaction & mine block.
3. Prepare few cheap/low-powered/old computer (e.g. Raspberry Pi and old Intel NUC) used to perform benchmark.
4. On fast computer, perform mining block and broadcast transaction (on various network load such as 25%, 50%, 100% and 125% of block size limit).
5. Measure time to verify block/transaction and CPU, RAM and I/O usage on other computer.

You do not need separate computers for the benchmark, for more reliable results you can spin up virtual machines and selectively limit their RAM and CPU usage. You still need to get separate HDD and SSD disks but these can be passed through via PCI to the VM (I assume internet speed is constant, but even that can be throttled using different virtual adapter types).

ETFbitcoin
Legendary
*
Offline Offline

Activity: 1862
Merit: 2778


NotYourKeys.org - Not Your Keys, Not Your Bitcoin


View Profile
May 05, 2021, 11:25:00 AM
 #8

Quote
Iappreciate the effort, but those are far from what i'm looking for.

u could use the (available) IBD of previous blocks they use

True, but i already mention IBD isn't what i'm looking for

What i'm NOT looking is benchmark like this, 2020 Bitcoin Node Performance Tests.



You do not need separate computers for the benchmark, for more reliable results you can spin up virtual machines and selectively limit their RAM and CPU usage. You still need to get separate HDD and SSD disks but these can be passed through via PCI to the VM (I assume internet speed is constant, but even that can be throttled using different virtual adapter types).

Good idea, that could work. But the downside it's not best reflection of block size limit impact on low-end device since we use fast CPU core/RAM rather than slow CPU cores/RAM.

NotATether
Hero Member
*****
Offline Offline

Activity: 518
Merit: 1300


Cryptographic Crawler


View Profile WWW
May 05, 2021, 01:16:30 PM
 #9

Good idea, that could work. But the downside it's not best reflection of block size limit impact on low-end device since we use fast CPU core/RAM rather than slow CPU cores/RAM.

Virtualbox lets you throttle CPU usage by %. Transaction verification is single threaded so you could spawn a 1-core VM from some high-end CPU like a threadripper and give the VM different usage limits. This will allow you to simulate different processor speeds (but keep in mind that Turbo Boost will cause the actual processor speed to vary greatly so in all cases capping the speed to at most 99% is a good idea to remove this noise).

gmaxwell
Moderator
Legendary
*
qt
Offline Offline

Activity: 3416
Merit: 5122



View Profile
May 06, 2021, 03:07:48 AM
Merited by ETFbitcoin (1), NotATether (1)
 #10

Transaction verification is single threaded
Hasn't been since 2012.
ETFbitcoin
Legendary
*
Offline Offline

Activity: 1862
Merit: 2778


NotYourKeys.org - Not Your Keys, Not Your Bitcoin


View Profile
May 06, 2021, 08:12:30 AM
 #11

Good idea, that could work. But the downside it's not best reflection of block size limit impact on low-end device since we use fast CPU core/RAM rather than slow CPU cores/RAM.

Virtualbox lets you throttle CPU usage by %.

I totally forget such feature, i always thought it's useless feature. But how well this feature (Execution Cap) works? I couldn't find any solid article/review about this feature.

NotATether
Hero Member
*****
Offline Offline

Activity: 518
Merit: 1300


Cryptographic Crawler


View Profile WWW
May 06, 2021, 09:10:06 AM
 #12

Transaction verification is single threaded
Hasn't been since 2012.

I totally forget such feature, i always thought it's useless feature. But how well this feature (Execution Cap) works? I couldn't find any solid article/review about this feature.

Alright, this is going to open another can of worms because I'm not sure how execution cap handles multiple cores. But on the plus side it looks like all your benchmark has to do is run bitcoin core with -reindex and then measure the time it takes to finish from debug.log and also using stuff like top to keep track of resource usage. But automatic profiling with systat where the metrics are stored in other log files is better IMO.

According to https://www.virtualbox.org/manual/ch03.html#settings-processor, the policy limits the cap for each virtual core, so you could have for example 2 cores both running at 50%. I think that to accurately measure Bitcoin Core performance, we must also measure how much the multithreaded verification speeds things up so it would make sense to be able to do things like emulating a Core2 or i3 with enough vCPUs as threads it supports, and then use the execution cap to try to emulate their baseline processor speed. This, in my opinion, will make more useful results than just testing at 10%, 20%, 30% etc. caps.

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!