Is there any theoretical requirement for RAM, storage size etc. when I run geth? I mean the real necessary hardware required to get geth running at the very least, but not the optimal or profitable configurations. Like if I run a private chain for experimental purpose, what is the absolute minimal hardware I need for each node? If yes, how are these requirements different in light mode/full node, miner and not miner?
If you don't need to mine on the main network and you run your own private chain you can run the geth node on a Raspberry 2.
I have tried to run on a Raspberry Pi 3 with some 500MB free memory, but I got Failed to generate mapped ethash dataset epoch=0 err="cannot allocate memory" when trying to start mining a private
To mine ETH, you need enough RAM to build the DAG. Here is a link to more about the DAG.
The DAG size changes by epoch, and increases. As the above link shows, current ETH mainnet blocknumber is 5743248, and current DAG size is 2.49 GB.
So, with 500 MB free memory, depending on the details of how your private blockchain compares or relates to ETH mainnet, you may not have enough.
My machine, intel X38 , Q9650, 8GM ram, clocked at 3Ghz, 3Gbps SATA port running samsung 540GB SSD, can slowly catch up in sync in full node mode.
The hard drive is mostly over 50% occupied, and CPU is also over 50% occupied when sync old blocks
This made it too slow to catch up if you are 1 month behind, then you have to delete the whole chain data and do a fast sync, that goes a bit faster but would still take a few days
Add a swap file to your machine digitalocean.com/community/tutorials/…
I have added a 2 GB swap file to my Raspberry Pi 3. However, I still encounter OOM errors when I try to mine and the etash dataset is created. I have 927 MB of RAM and now another 3.1 GB of SWAP. Does anyone know what the problem there might be?
ERROR[05-12|20:51:40.300] Failed to generate mapped ethash dataset epoch=0 err="cannot allocate memory" runtime: out of memory: cannot allocate 2147483648-byte block (124649472 in use) fatal error: out of memory