I wanted to share with everyone a summary of the changes that are to be merged on master very soon in this forking workers PR.
When launching rake evm:start (via evmserverd systemctl or directly), workers will be created via Process.fork instead of Process.spawn:
- bypassing all of the rails and vmdb initialization since it’s already loaded in the parent process
- workers will share some memory with the server process
- Faster worker startup including much less IO contention
- Potential for future memory savings by preloading code, gems, libraries, etc. before we fork
What do I have to do?
- git pull
- rake db:migrate
What changes should I expect?
- miq_workers command_line column is removed
- MiqEnvironment::Process is removed
- lib/vmdb/initializer.rb worker init code has been moved to the applicable worker models
- top and system utilities that measure RSS will report more process memory
usage since they don’t accurately report shared memory
- use the smem rpm/utility and our logging of the proportional_set_size instead
- the existing worker memory limits code now uses PSS instead of RSS (linux only)
Please ask any questions in this thread.