From the Ethereum official documentation:
The DAG is totally different every 30000 blocks (a 100 hour window, called an epoch) and takes a while to generate. Since the DAG only depends on block height, it can be pregenerated but if its not, the client need to wait the end of this process to produce a block. Until clients actually precache dags ahead of time the network may experience a massive block delay on each epoch transition.
It's mentioned that DAG takes a while to generate. What are the factors effecting this generation time? Is there any faster way to generate DAG? Also, what kind of discrepancies will be observed during this epoch transition in case if the DAGs are not pre-cached.
P.S: In my case (private blockchain), the ethereum node crashed while generating DAG for epoch 1 due to:
panic: ethash_full_new IO or memory error
I'm running geth on an Ubuntu (16.04) Virtual Machine with 3GB RAM.