-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Memory usage when using RPKI #497
Comments
As I can see, on IRRd, there are some specific jobs that take very much computational effort to be completed. But the basics of software runs very well with not too many resources. RPKI validation is one of the jobs that bring some computational spikes. Considering the conception of IRRd, I guess that wouldn't be very much complex to define that some jobs could be executed in batch on another node(VM/Container). This would be especially to slice the monolithic of the solution. Just to exemplify: |
I haven't put much work into optimising this so far - most of the focus in performance improvement was for queries and particularly certain queries. I will look into the possibilities :) Technically it's a fairly independent process, so it could be separated. However, it would add overhead to run it on an a separate cloud environment, so I'm not sure this is the most practical approach for now. Investigating this is a release blocker - what will end up in 4.2 depends on the findings. |
I did some more digging into this. RPKI importing is a two phase process:
On a test server (with a not great CPU, so may run slower than in other setups), I kept a close eye on the process, and found:
Thoughts:
Path forward:
This will likely result in significant improvements. I also kept an eye on other memory usage. Also noteworthy is the preloader process, which peaked at 1.8GB. However, this only lasted 10-15 seconds. It may also be worth looking into. |
This on its own cuts down RPKI memory use to 3GB, so big improvements are viable. (Only a quick test, which would break email notifications.) On a more general note, I do think it should be possible to run IRRd already in 16GB, with a low amount of HTTP and whois workers. It's tight, especially during initial imports of large amounts of data, so you might need to add the sources a few at a time, but can be done. In general IRRd focuses on speed over memory efficiency, but I agree that the current RPKI memory use is excessive and also clearly not needed. |
Hello @mxsasha But I will insist a bit on the idea of breaking the monolithic of IRRd. How hard would be to defining resources pools, and running external queries (whois, e-mail, http) on a small and stable resource pool... And all those "reprocessing" on resource pool that colud(or not) be auto-scalable and destroyed after the peak demand. ??? |
Very hard |
Just to clarify... Is not expected that the IRRd deals with it... This would be dealed by other layers of compute node provisioning. What would be expected is that IRRd points to different resource pools the "please do this to me"... And is always possible that multiple resource-pools run on the same node. |
Is your feature request related to a problem? Please describe.
Memory usage for RPKI ROA Import is higher than similar solutions
Describe the solution you'd like
For a future version to run on 16GB RAM machines; it currently requires 32 GB, mostly because of memory usage during ROA Import
Describe alternatives you've considered
We considered turning RPKI off, but ended up managing to increase memory on the machine
Additional context
A single 4 GB RAM machine can, nowadays, run Krill and Routinator. Also, since there is only a fraction of signed routes today, even the current memory requirements might not be enough if all DFZ is signed.
The text was updated successfully, but these errors were encountered: