I'm trying to understand the advantages/disadvantages of storing the DAG in a SSD.

Does the DAG perform lots of random writes that may cause high SSD wear level? Does anyone have any data concerning this?

Bonus question: the blockchain data only grows and is "append only", growing in a low rate (less than 1 GiB every day as of today)?

Sorry if these are amateur questions. I'm trying to understand the concepts and the problems I may face before mining or even buying ETH, and these were not clear at the docs for me.


From the wiki https://github.com/ethereum/wiki/wiki/Ethash:

The large dataset is updated once every 30000 blocks, so the vast majority of a miner's effort will be reading the dataset, not making changes to it.

Also the design rationale can be useful to understand the properties of the algorithm

  • To check if I understand it correctly, this means that if the rate of new blocks is one every 15 seconds, every 125 hours of mining (30k * 15 / 3600) a bit more than 1 GiB (the docs states that the dataset will grow with time). Could you point me somewhere saying how much the dataset grows over time? 1 GiB of writes every 5 days is not a problem, but if it grows a lot, overtime this may become a lot more than 1 GiB. – Vinícius Gobbo A. de Oliveira Jun 20 '17 at 13:48
  • Found it: The ~0.73x per year growth level was chosen to roughly be balanced with Moore's law increases at least initially (exponential growth has a risk of overshooting Moore's law, leading to a situation where mining requires very large amounts of memory and ordinary GPUs are no longer usable for mining). – Vinícius Gobbo A. de Oliveira Jun 20 '17 at 15:07

In addition to the DAG, you also need to store all the blocks themselves. Using the --fast pruning option for parity v1.7 nightly (built early May), I'm seeing about 10x more writes than reads in terms of MB/s and about 2x more reads than writes, in terms of IOPs. I'm also recording about 100KiB-200KiB of writes per transaction (as opposed to per block). At around the present average activity of 50 transactions per block, that works out to 28GiB of writes per day. If you are concerned about SSD wear, this is probably the big one.

However, the actual size of the blockchain, when pruned, grows far less than 28GiB/day. The pruned Ethereum blockchain occupies about 11GiB on my laptop.

I guess one could infer from this that, assuming no growth in transaction rate and a good wear-levelling algorithm, every multiple of disk size larger than the block chain, you buy an extra 0.5 to 2 year of wear -- a 32GiB disk gives your disk an expected life of 1.5 to 6 years if the blockchain is currently 11GiB. (Using data from http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.