Bitcoin Forum

Bitcoin => Bitcoin Technical Support => Topic started by: apogio on November 30, 2023, 10:25:01 AM



Title: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 10:25:01 AM
There are too many topics about it, but I haven't found the answer I want.
I would post on older topics but I got the warning that the topics were older than 120 days, so I started a new one.

I have 2 nodes and I am currently setting up my 3rd node.

The first 2 nodes were constructed between blocks 700,000 and 750,000 and the process went okay-ish.

On the 3rd node, my IBD is very slow. Let me share my setup.

Hardware:
1. Raspberry Pi 4 Model B with 8GB RAM.
2. Cat6 ethernet cable.
3. 2TB SSD 2.5''.
4. SATA (on the disk) to USB 3.0 (on the Rpi)

Internet speed:
Download: 200 Mbps
Upload: 5 Mbps
Ping: 4 ms

Software:
Raspbian OS
Bitcoin Core 25.0

My conf is:
Code:
datadir=...
server=1
daemon=1
txindex=1

After reaching block 790,000 the process slowed down a lot.
I have spent 5 days until block 790,000 and 3 more days until 810,000 and there are still approximately 10,000 blocks left, which will take even more :P

It's normal, I know! Because it scans and validates recursively.

Does anyone know if -txindex=1 slows up the Initial Blockchain Download ?

If so, is there a reason?


Title: Re: Bitcoin Core IBD slow
Post by: NotATether on November 30, 2023, 10:35:38 AM
txindex does slow down the IBD, but it shouldn't make it that slow. So I want to ask you, where did you configure the datadir? Because if you're going to make I/O go through the SATA connection to USB3, that's going to be quite slower than just writing on the SSD directly. USB3 standard is 10GB/s maximum, and the disk is probably doing much less.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 10:51:34 AM
txindex does slow down the IBD, but it shouldn't make it that slow. So I want to ask you, where did you configure the datadir? Because if you're going to make I/O go through the SATA connection to USB3, that's going to be quite slower than just writing on the SSD directly. USB3 standard is 10GB/s maximum, and the disk is probably doing much less.

Not sure I understand this. The datadir is on the SSD. The SSD is external to the Raspberry. So essentially I run:

Quote
bitcoind --datadir=/media/.../...


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on November 30, 2023, 10:59:47 AM
I have 2 nodes and I am currently setting up my 3rd node.
Why don't you just copy the blockchain from your existing nodes to the new node?

Quote
After reaching block 790,000 the process slowed down a lot.
I have spent 5 days until block 790,000 and 3 more days until 810,000 and there are still approximately 10,000 blocks left, which will take even more :P
I guess that's around the time the Ordinal spam largely increased the number of transactions, and the size of chainstate. It currently takes 8.5 GB on disk, which won't fit your 8 GB RAM anymore. It looks like 16 GB is the new minimum for a fast IBD.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 11:07:09 AM
Why don't you just copy the blockchain from your existing nodes to the new node?

Ok you made me lough out loud. How can I be so silly?! It didn't even cross my mind. However, supposing I wanted to do it, would I need to copy the chainstate and blocks directories? Or all the items from the Bitcoin Core directory (.conf, .log etc) ?

I won't stop the process now, since I am almost done, I guess.

I guess that's around the time the Ordinal spam largely increased the number of transactions, and the size of chainstate. It currently takes 8.5 GB on disk, which won't fit your 8 GB RAM anymore. It looks like 16 GB is the new minimum for a fast IBD.

Makes sense, but 16 GB is a lot for a cheap computer. RPi doesn't support 16GB anyway.


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on November 30, 2023, 11:15:23 AM
supposing I wanted to do it, would I need to copy the chainstate and blocks directories?
I'd copy everything in ~/.bitcoin/ (after shutting down Bitcoin Core).

Quote
Makes sense, but 16 GB is a lot for a cheap computer. RPi doesn't support 16GB anyway.
Yep, it sucks :( And the Bitcoin dust those Ordinal spammers create will remain unspent taking up space in chainstate forever.


Title: Re: Bitcoin Core IBD slow
Post by: nc50lc on November 30, 2023, 11:15:23 AM
Software:
Raspbian OS
Bitcoin Core 25.0
-snip-
After reaching block 790,000 the process slowed down a lot.
Must be your RPi's CPU struggling on script verifications after v25.0's default "assumevalid" blocks which is before block height 784000.
Here's for reference: github.com/bitcoin/bitcoin/blob/v25.0/src/kernel/chainparams.cpp#L107C128-L107C128 (https://github.com/bitcoin/bitcoin/blob/8105bce5b384c72cf08b25b7c5343622754e7337/src/kernel/chainparams.cpp#L107C128-L107C128)

It's not recommended but if you think it's necessary to speed up your node's IBD, you can set a custom assumevalid block by setting -assumevalid=<block_hash>.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 11:22:27 AM
Must be your RPi's CPU struggling on script verifications after v25.0's default "assumevalid" blocks which is before block height 784000.
Here's for reference: github.com/bitcoin/bitcoin/blob/v25.0/src/kernel/chainparams.cpp#L107C128-L107C128 (https://github.com/bitcoin/bitcoin/blob/8105bce5b384c72cf08b25b7c5343622754e7337/src/kernel/chainparams.cpp#L107C128-L107C128)

It's not recommended but if you think it's necessary to speed up your node's IBD, you can set a custom assumevalid block by setting -assumevalid=<block_hash>.

Thanks, I will see the reference because it is something I ignored until today.

Wouldn't it be bad for security though? Is this why you say it is not recommended?

I'd copy everything in ~/.bitcoin/ (after shutting down Bitcoin Core).

Definetely gonna try it after the sync is finished.

Yep, it sucks :( And the Bitcoin dust those Ordinal spammers create will remain unspent taking up space in chainstate forever.

Unfortunately we have to live with it. Pruned nodes in the future will avoid the issue, I suppose.


Title: Re: Bitcoin Core IBD slow
Post by: ABCbits on November 30, 2023, 11:27:18 AM
My conf is:
Code:
datadir=...
server=1
daemon=1
txindex=1

Is it your full configuration file or you removed line dbcache?

Yep, it sucks :( And the Bitcoin dust those Ordinal spammers create will remain unspent taking up space in chainstate forever.

Unfortunately we have to live with it. Pruned nodes in the future will avoid the issue, I suppose.

Pruned node need full UTXO in order to verify new TX/block, so i doubt it's possible. At best, we'll see slightly more efficient UTXO representation.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 11:32:30 AM
Is it your full configuration file or you removed line dbcache?

I have set my dbcache on the commandline running

Code:
bitcoind -dbcache=4096 -conf=<path to bitcoin conf>

The reason is that I want to run with default dbcache when IBD is finished.

Doesn't it have the same result as adding dbcache=4096 on the conf file and then run:

Code:
bitcoind -conf=<path to bitcoin conf>

Pruned node need full UTXO in order to verify new TX/block, so i doubt it's possible. At best, we'll see slightly more efficient UTXO representation.

Yeap, you must be right.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 11:38:38 AM
It leads to same result, although i find it's unusual to see configuration on multiple places. And since your device has 8GB RAM, you could set higher value for dbcache (assuming you don't run other memory-intensive software on that device).

Like how much? Perhaps all of it? 8192? I don't run anything else on this device. My plan, in general, is to run Bitcoin & Monero node on the same machine.

EDIT:
I set it to 7000 and let's see...


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on November 30, 2023, 11:58:02 AM
Perhaps all of it? 8192?
That leaves nothing for other programs, so it's too much.

Quote
I set it to 7000 and let's see...
I'm curious if that helps. More dbcache also means less file cache for the OS.


Title: Re: Bitcoin Core IBD slow
Post by: nc50lc on November 30, 2023, 12:03:34 PM
-snip-
It's not recommended but if you think it's necessary to speed up your node's IBD, you can set a custom assumevalid block by setting -assumevalid=<block_hash>.
Thanks, I will see the reference because it is something I ignored until today.

Wouldn't it be bad for security though? Is this why you say it is not recommended?
It's not necessary bad, security-wise, because it's just the script verifications that are skipped.
Everything in the assumed valid blocks are still being verified by your node.

The topic is quite famous after its implementation so you will find a lot of helpful related topics across the internet.
For example: https://bitcoin.stackexchange.com/a/88666 (https://bitcoin.stackexchange.com/a/88666)


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 12:04:37 PM
I'm curious if that helps. More dbcache also means less file cache for the OS.

Exactly, but I haven't found any explanation online, so I thought perhaps one would know in this forum. Feels like above 4GB doesn't help too much. It's like there is a soft-cap and then the return you get is diminishing. Perhaps I am wrong though.

Edit: be careful with default linux swap behavior which perform some swap even though there are some free/unused RAM capacity.

I am sorry I don't follow you on this. You mean perhaps I should add less than 7000 and go for 6000 for example?

It's not necessary bad, security-wise, because it's just the script verifications that are skipped.
Everything in the assumed valid blocks are still being verified by your node.

The topic is quite famous after its implementation so you may find a lot of helpful related topics across the internet.
For example: https://bitcoin.stackexchange.com/a/88666 (https://bitcoin.stackexchange.com/a/88666)

Thanks mate, much appreciated!


Title: Re: Bitcoin Core IBD slow
Post by: NotATether on November 30, 2023, 01:21:00 PM
I am sorry I don't follow you on this. You mean perhaps I should add less than 7000 and go for 6000 for example?

Try 3/4ths of the total RAM. Your disk doesn't seem to be the problem I thought you had an internal SSD and externally-attached 2TB SSD... my bad.

Also combine it with the assumevalid directive that nc50lc posted about, maybe set it to 800000 blocks, to really speed up things, as these things must have been verified thousands of times by now.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 01:43:46 PM
I am sorry I don't follow you on this. You mean perhaps I should add less than 7000 and go for 6000 for example?

Try 3/4ths of the total RAM. Your disk doesn't seem to be the problem I thought you had an internal SSD and externally-attached 2TB SSD... my bad.

Also combine it with the assumevalid directive that nc50lc posted about, maybe set it to 800000 blocks, to really speed up things, as these things must have been verified thousands of times by now.

I will set it to 800,000 and also set dbache to 6000 and I will see if it makes a difference.


Title: Re: Bitcoin Core IBD slow
Post by: DaveF on November 30, 2023, 04:03:05 PM
Have you done any checks on the SSD? I spent a couple of hours the other day trying to figure out why a PC was so slow and it turned out the almost new SSD was failing SMART checks.
Was looking for malware, was checking running apps, etc. Till I finally ran crystaldisk and poof. But neither the PC or Windows put up a smart error.

-Dave


Title: Re: Bitcoin Core IBD slow
Post by: apogio on November 30, 2023, 05:24:41 PM
Have you done any checks on the SSD? I spent a couple of hours the other day trying to figure out why a PC was so slow and it turned out the almost new SSD was failing SMART checks.
Was looking for malware, was checking running apps, etc. Till I finally ran crystaldisk and poof. But neither the PC or Windows put up a smart error.

-Dave

Hi Dave, no I haven't checked the disk. I think it's an exFAT, but I am not sure. Also I run Raspbian and I am not aware of what crystal disk is. Is it a tool?


Title: Re: Bitcoin Core IBD slow
Post by: DaveF on November 30, 2023, 07:56:30 PM
Have you done any checks on the SSD? I spent a couple of hours the other day trying to figure out why a PC was so slow and it turned out the almost new SSD was failing SMART checks.
Was looking for malware, was checking running apps, etc. Till I finally ran crystaldisk and poof. But neither the PC or Windows put up a smart error.

-Dave

Hi Dave, no I haven't checked the disk. I think it's an exFAT, but I am not sure. Also I run Raspbian and I am not aware of what crystal disk is. Is it a tool?


Crystaldiskinfo is a SMART https://en.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology checker for drives for windows.
I don't know of an equivalent for RPi, will have to look.

But it does show what the drive thinks is going on it with it, not what Windows or what the PC itself thinks. They can for whatever reason hide / not report SMART issues.

-Dave


Title: Re: Bitcoin Core IBD slow
Post by: ABCbits on December 02, 2023, 09:09:14 AM
Edit: be careful with default linux swap behavior which perform some swap even though there are some free/unused RAM capacity.

I am sorry I don't follow you on this. You mean perhaps I should add less than 7000 and go for 6000 for example?

I was referring to swappiness value (each distro probably have different default value) which affect swap behavior. That means i suggest you to check that value and optionally reduce it. Here's an example guide, https://linuxize.com/post/how-to-change-the-swappiness-value-in-linux/ (https://linuxize.com/post/how-to-change-the-swappiness-value-in-linux/).


Title: Re: Bitcoin Core IBD slow
Post by: apogio on December 03, 2023, 08:44:47 AM

To sum up:
The IBD went from 0 to 790,000 in 5 days, then from 790,000 to 810,000 in 3 days, then from 810,000 to 814,000 in 2 days and currently, from 814,000 to 816,000 in 10 hrs. I guess it will reach 819,000 soon enough.

Thank you all for the answers, apparently it was what Loyce said above regarding the ordinals and the larger transactions.

Now, I am at 816,000 and it moves quickly. It must be finished later during the day.

Finally, I did increase my dbcache to 6000 (from a total of 8GB RAM), as all of you suggested. However, I did not use the assumevalid directive, because I wanted to read more about it before using it, but unfortunately I didn't have the time.



Title: Re: Bitcoin Core IBD slow
Post by: apogio on December 05, 2023, 10:17:15 AM

I wanted to test it further, so I did:

Code:
sudo hdparm -tT /dev/sda

To my surprise, I got:

Code:
/dev/sda:
 Timing cached reads:   1776 MB in  2.00 seconds = 888.80 MB/sec
 Timing buffered disk reads:  62 MB in  4.67 seconds =  13.28 MB/sec

Isn't it too slow for an SSD ? Especially the second timer.


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on December 05, 2023, 10:30:22 AM
Code:
/dev/sda:
 Timing buffered disk reads:  62 MB in  4.67 seconds =  13.28 MB/sec
Isn't it too slow for an SSD ? Especially the second timer.
Most microSD cards are faster than this nowadays. It should be 10 times faster:
https://cdn.mos.cms.futurecdn.net/dTPotpkgyWtgaRGwcVaWkC-970-80.png
(image source (https://www.tomshardware.com/news/raspberry-pi-4-ssd-test,39811.html))

Did you run your disk speed test during IBD? If so, that's probably why it's slow.

The type of SSD matters too: some perform just as you'd expect, and others are only fast "in short burst", and after writing the burst data, it gets much slower, up to the point that combined read and writes can make the entire system freeze for a while. That doesn't matter much for normal computer usage, but it matters a lot during heavy tasks (such as the IBD).


Title: Re: Bitcoin Core IBD slow
Post by: apogio on December 05, 2023, 10:36:47 AM

Most microSD cards are faster than this nowadays. It should be 10 times faster:

Did you run your disk speed test during IBD? If so, that's probably why it's slow.

The type of SSD matters too: some perform just as you'd expect, and others are only fast "in short burst", and after writing the burst data, it gets much slower, up to the point that combined read and writes can make the entire system freeze for a while. That doesn't matter much for normal computer usage, but it matters a lot during heavy tasks (such as the IBD).

Hi Loyce.

No my IBD is finished and my node is stopped. So essentially my RPi is connected to an SSD which has the whole bitcoin-core structure, but bitcoind is not running.

I also ran fstrim -v on the mounted directory and it trimmed some data, but it didn't work afterwards. I mean no amelioration was seen.


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on December 05, 2023, 10:48:28 AM
No my IBD is finished and my node is stopped. So essentially my RPi is connected to an SSD which has the whole bitcoin-core structure, but bitcoind is not running.
Which SSD do you have exactly?
I'm just guessing here: is it possible you're using a very low quality USB cable?
Have you tried Gnome Disks (https://apps.gnome.org/DiskUtility/)? It has a Benchmark feature.
Or have a look at GSmartControl, see if it can give you a reason for the low speed.

Quote
I also ran fstrim -v on the mounted directory and it trimmed some data, but it didn't work afterwards. I mean no amelioration was seen.
That shouldn't matter for "hdparm -tT", it doesn't use the file system.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on December 05, 2023, 11:09:21 AM
Which SSD do you have exactly?

This is my disk: https://www.amazon.de/-/en/Intenso-Internal-Inch-SATA-Black/dp/B0B63HPPG3

I'm just guessing here: is it possible you're using a very low quality USB cable?
Have you tried Gnome Disks (https://apps.gnome.org/DiskUtility/)? It has a Benchmark feature.
Or have a look at GSmartControl, see if it can give you a reason for the low speed.

No errors unfortunately... with GSmartControl

Could the format be an issue? My disk is exfat

EDIT: I think I will backup my drive and then format to ext4


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on December 05, 2023, 11:21:21 AM
This is my disk: https://www.amazon.de/-/en/Intenso-Internal-Inch-SATA-Black/dp/B0B63HPPG3
I can't find an English review for this exact model, but my Intenso USB stick is faster than what you get.

Quote
Could the format be an issue? My disk is exfat
The filesystem matters, but not for raw speed tests.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on December 05, 2023, 11:40:38 AM

I can't find an English review for this exact model, but my Intenso USB stick is faster than what you get.


Perhaps a format will solve the issue...


Title: Re: Bitcoin Core IBD slow
Post by: LoyceV on December 05, 2023, 11:49:55 AM
Perhaps a format will solve the issue...
Nope. A hdparm speed test doesn't care about the filesystem.


Title: Re: Bitcoin Core IBD slow
Post by: apogio on December 05, 2023, 12:05:18 PM
Nope. A hdparm speed test doesn't care about the filesystem.

So the current speeds have gone up to:

Code:
/dev/sda:
 Timing cached reads:   1666 MB in  2.00 seconds = 834.15 MB/sec
 Timing buffered disk reads: 328 MB in  3.15 seconds = 104.15 MB/sec

I feel stupid, but here is what happened... I was using the USB 2.0 port and not the 3.0 port.