Alternatively, start bitcoind with -dbcache=2048.
Yup that worked. Used SSD, overclocked and increased the dbcache.
The download speed has increased drastically now.
I can say that the speed has increased at least by 30% - 40% from what it was earlier.
Definitely a CPU bottleneck... the download of the data is only a small part of the syncing process... it's the actual number crunching of the block data to verify it (and all the IO read/writes) that will be making the Pi slow.
From a review of the Pi 400 that I saw... they had put in
a large metal plate to act as a kind of heat spreader off the CPU to try and dissipate heat...
And from
a write-up testing this cooling solution, it seems that this heat spreader actually does a better job for the Pi400 than a standard Pi4B with a cooling fan!
So, it'll likely be a combination of "low end" CPU + Disk I/O that is slowing things down, tbh.
Yes the CPU temperature is much better in Pi 400. I had been monitoring the CPU temperature and even after overclocking the temperature never crossed 55 degrees.
I do have a spare 480 GB SSD. I will use it for the time being to download the block data and then transfer the block data back to HDD when it's fully synchronized.
I have my .bitcoin directory on SSD, and inside it is a symlink that puts the blocks directory on HDD. That's enough to remove the HDD as bottleneck, without taking too my space on my (much smaller) SSD.
That's a nice way to get around the CPU bottleneck. Will keep in this mind in case I need to implement it.
So far the performance is increased since I am now using a SSD itself to store the block data.