I have done a little test to find out if I could run some microservices with 
async code in memory constrained devices. Here is the test code:

[https://gist.github.com/aguspiza/80e34b5cf65aa3bbfd19c7339ee9b695](https://gist.github.com/aguspiza/80e34b5cf65aa3bbfd19c7339ee9b695)

That test uses 5x more memory with 0.18.0 than with 0.17.2 (or any previous 
version at least with boehm gc)

Here you have some numbers:
    
    
    Linux x64 0.17.2 boehm 24MB used (release 14MB)
    Linux x64 0.18.0 boehm 94MB used (release 84MB)
    
    other gc's have similar increases +40MB:
    0.17.2 default gc 70MB (release 30-36MB)
    0.18.0 default gc 146MB (release 110MB)
    similar result with gc:v2 146MB (release 110MB)
    

I am getting those numbers from RSS column on "ps"
    
    
    $ ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root     13946 38.9  0.0  18024 15136 pts/0    Sl+  11:55   0:22 ./httpasync
    

Is this a known issue?

Is this expected from latest gc optimization (TLSF algorithm) in 0.18.0?

Why is there so much difference between gc's?

Should I use boehm, markandsweep, v2 or default gc?

Boehm is giving the best results but Araq told me (at IRC) that it is not using 
Nim's memory allocator ?!?!

Reply via email to