Possible causes explained to me in
- Verification tends to be limiting factor.
- Using an HDD is known to be significantly slower than SSD/NVMe.
- Apparently HDD seek time is a significant bottleneck.
- Verification operations are not very parallelizable therefore if a single CPU core is spiked to 100%, that could be limiting factor, even if others are idle. Monero code doesn't seem to properly utilize multiple CPU cores.
- A single slow peer might be able to slow things down overall.
- Wallet syncing at the same time as blockchain syncing -> very slow.
- I was just syncing the most recent few thousand blocks.
- I was using an HDD rather than SSD/NVMe, so my bottleneck may not apply to you.
 Per selsta: "yes, because bottleneck is verification not network speed"
 Per selsta: "yes, HDD will always be extremely slow during verification."
 Per moneromooo: "It's seek time that matters, not contiguous r/w speed."
 Per Inge-: "disk queue length is indicative (while transfers/sec will be very low for random reads on a HDD) and if any single cpu core is pinned at 100% (overall CPU utilization could be very low as there is a limit to how parallelizable the workload is))" and "the number of cores that can be utilized are limited. I would expect parallel verification of transactions is possible, while parallel validation of blocks is more difficult"
Q: Wouldn't users complain about multiple cores not being used?
A: hyc: "you probably would never have noticed. I have 8 cores and pretty much never see more than 4 cores used
there's definitely something artificially limiting throughput
I just don't know how to pinpoint what it is"
 Per moneromooo: "If none is used, it's possibly waiting on data from a peer. If that peer's busy, it might wait a bit before sending."
 Per moneromooo.