Comments (11)
Switching to Monero's LMDB is already in progress.
from aeon-legacy.
@iamsmooth is there a repo somewhere with the work in progress? I'm happy to help.
from aeon-legacy.
The impact is also that during saving to disk aeond doesn't respond to stratum-protol software, so miners get "pool is not responding", and that could be for up to several minutes. With big hashrate that is loss of income. Then, with eventual increase of chain length, it would be more and more demanding and devastating.
This 'feature' would impose a requirement for pools to run at least two nodes independently and keep care to run saving to disk at non-intersecting time. That's excessive burdensome.
Is it possible to make periodic "chekpoints" so that everything below that block is pushed out of memory? Thus keeping only last thousand or two blocks?
When comes a request to use all the chain, fork a separate process with minimal priority (and possible own cpu- and io- limits imposed by operating system) and do read-calculate-store in it?
from aeon-legacy.
The problem with current saving is that the whole chain is in-memory. Then when it's saved, the whole object is serialized and saved to a temp file which is then moved to the final destination. This whole process is slow and resource intensive.
Your periodic 'checkpoints' idea I think would require a fair amount of work but certainly another option for debate. I do like the idea of not having to hold the whole thing in memory.
Using a memory mapped file for the blockchain could solve both issues as it does address the loading and saving of very large files more efficiently. Boost has portable versions too which would work with the current serialization.
from aeon-legacy.
Why not to leave memory-specific issues to Operating System? It has really very good optimizations and could benefit from IO-operations with big cache, asynchronous reads/writes and so on and so on.
From sysadmin perspective, if aeond needs 'a quick file', then to speedup one could move it to SSD- or NVMe- storage, or to memory-mapped filesystem. That really works very fast.
Then aeond should just effectively read-write to a large file, and the rest takes care the OS.
from aeon-legacy.
Also, with this approach a sysadmin could get more metrics from filesystem to do bottleneck analysis, and measurably throw resources at it, comparing to a process which reads/writes to just vram.
BTW, if an OS decides that some pages in memory are not often necessary, it pushes them to swap.
Then all the program-side optimizations get ruined.
Instead, if the process just reads and writes to a file, the OS could speed up alot with its IO-cache, and not swapping the memory pages of a process.
from aeon-legacy.
Why not to leave memory-specific issues to Operating System?
Well that's the current implementation and that's the problem.
if an OS decides that some pages in memory are not often necessary, it pushes them to swap.
Again. Same issue. It's all slow.
Instead, if the process just reads and writes to a file, the OS could speed up alot with its IO-cache, and not swapping the memory pages of a process.
And that's where a memory mapped file could help, or refactoring to use something like LMDB or your 'checkpoints' suggestion and only loading what's needed in memory at any given operation.
Requirements will always require whole blockchain on disk and at least some, if not all, in memory at any given time. The question is what's the most efficient way to meet these requirements without a huge overhead on the system and causing other issues.
from aeon-legacy.
I do see that RDBMS like PostgreSQL can handle very sophisticated operations on large amount of data, obviously not placing it in memory as a whole thing. And relatively quick, and without blocking everything else from normal work.
I believe that these io-speed and data size bottleneck could be solved by invoking corresponding algorithms. To seek those, we need clarity in bottleneck sources, that is why @jtgrassie, would you please describe in more detail the algorithm of current saving the blockchain implementation?
from aeon-legacy.
Hi. I just installed AEON on an old but well working machine: I really can't use it as downloading the blockchain to memory makes my computer useless.
from aeon-legacy.
@iamsmooth me too
from aeon-legacy.
Bounty open and discussed on reddit and bitcointalk thread
from aeon-legacy.
Related Issues (20)
- simplewallet rcp api doc
- aeond makes system unstable and then makes it crashing HOT 1
- LICENSE/COPYING and Copyright information to be improved HOT 5
- Download Blockchain HOT 4
- c:\users\arno\documents\github\aeon-0.9.14.0\src\p2p\net_node.inl:328 UPNP_AddPortMapping failed. HOT 6
- Failed to create wallet HOT 2
- simplewallet allows export of spendkey and viewkey, but not import HOT 3
- Building on Alpine Image Fails
- Aeon's Equivalent of --disable-rpc-login HOT 5
- Signature Mismatch When Syncing with Chain HOT 3
- Syncing returned unknown top block HOT 2
- P2P Port Firewall Settings HOT 4
- Is my Blockchain Syncing? HOT 3
- c++: internal compiler error HOT 2
- Error during building on CubieBoard2
- POW change discussion HOT 7
- Comment out Multisig functions in new rebase wallet HOT 3
- Don't read all block data into memory HOT 6
- How to restore Aeon wallet (cold storage) HOT 9
- Win64 MsMpEng.exe False Positive
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aeon-legacy.