On 07/07/2016 07:38 PM, Ladislav Slezak wrote:
> 
> Hi all,
> 
> Ruby 2.1+ allows tracing object allocations, see more details in this article 
> [1].
> 
> I enabled it and dumped the Ruby memory usage data in a SLES12-SP2 Beta3 
> installation.
> 
> It is related to this Trello card [2] and this bug [3].
> 
> You can find more details and the dump in my Gist [4], here is a copy of the 
> most
> interesting part:
> 
> 
> 
> ## The Result
> 
> A quick scan found out that the place which consumes most memory is
> 
>   /usr/share/YaST2/lib/installation/ssh_config_file.rb:45:STRING: count: 4,
>   total size: 274056
> 
> which loads the SSH keys and configuration from the previous installation and 
> needs
> about 270kB memory.
> 
> The question is we can optimize it better, the SSH keys actually need to be 
> stored
> somewhere as the target partition will be reformatted...

A quite trivial modification would be to change SshConfigFile#content
and SshKey::KeyFile#content to store the content of the files in a
temporary file and not in memory. It should be completely harmless,
since that code is new, sane and covered by unit tests.

https://github.com/yast/yast-installation/blob/fd94cd1477a4807a8fee6b50c95a97fac0860629/src/lib/installation/ssh_config_file.rb#L36

https://github.com/yast/yast-installation/blob/fd94cd1477a4807a8fee6b50c95a97fac0860629/src/lib/installation/ssh_key.rb#L62

> The only optimization could be probably possible when the user selects to not 
> copy
> the keys. In that case we could drop the loaded keys when the installation 
> starts.
> But that's not the default so this improvement would actually help only in 
> some cases...
> 
> ## TODO
> 
> You can collect a different statistics from the data, e.g. the place which 
> creates
> the most objects, which methods, check the object "age" (the GC generation 
> value), etc...
> 
> 
> 
> [1] http://tmm1.net/ruby21-objspace/
> [2] https://trello.com/c/QJ2PHxjs
> [3] https://bugzilla.suse.com/show_bug.cgi?id=974601
> [4] https://gist.github.com/lslezak/6b99026b7ea9e163cdfd5a6d6d0aca6c

-- 
Ancor González Sosa
YaST Team at SUSE Linux GmbH
-- 
To unsubscribe, e-mail: [email protected]
To contact the owner, e-mail: [email protected]

Reply via email to