On Wed, Jun 09, 2021 at 09:00:38AM +0530, Arjun D R wrote:
> Thanks Laurent for the brief detail. That really helps.
> 
> I have checked the Private_Dirty memory in "smaps" of a s6-supervise
> process and I don't see any consuming above 8kB. Just posting it here
> for reference.
> 
> grep Private_Dirty /proc/991/smaps
> Private_Dirty:         0 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         8 kB
> Private_Dirty:         0 kB
> Private_Dirty:         0 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         0 kB
> Private_Dirty:         0 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         0 kB
> Private_Dirty:         0 kB
> Private_Dirty:         8 kB
> Private_Dirty:         8 kB
> Private_Dirty:         8 kB
> Private_Dirty:         0 kB
> Private_Dirty:         0 kB
> Private_Dirty:         8 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         0 kB
> Private_Dirty:         8 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         4 kB
> Private_Dirty:         0 kB
> Private_Dirty:         0 kB
> 
... snip...
In a fully dynamic world a large number of dirty pages is expected, even
if each segment is only one or two pages. There's nothing particularly
surprising here when using a distro provided s6 that's linked
dynamically.

> 
> I have tried with flag "--enable-allstatic" and unfortunately I don't see
> any improvement. If you were mentioning about shared memory, then yes we
> are good here. It is using 2.1 MiB for 129 instances, but the private
> memory is around 12.2 MiB. I am not sure whether this is the normal value
> or not.
> 
If you're building against glibc then allstatic probably won't help. The
default config options for s6 will build with static links against all
libraries but the libc which is a pretty decent tradeoff between
efficiency and convenience, but to see super low dirty memory you'll
need to use a libc that can actually be linked statically such as musl.

For your needs, using a musl toolchain and building a fully static s6
should get you significantly better memory usage.
-- 
Colin Booth

Reply via email to