<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div style="font-family:Arial;"><br></div>
<div><br></div>
<div><br></div>
<div>On Tue, Jun 20, 2017, at 03:38 PM, Raghavendra Talur wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div><div defang_data-gmailquote="yes"><div>Each process takes 795MB of virtual memory and resident memory is 10MB each.<br></div>
</div>
</div>
</div>
</blockquote><div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">Wow, that's even better than I thought. &nbsp;I was seeing about a 3x difference per brick (plus the fixed cost of a brick process) during development. &nbsp;Your numbers suggest more than 10x. &nbsp;Almost makes it seem worth the effort. &nbsp;;)<br></div>
<div style="font-family:Arial;"><br></div>
<blockquote type="cite"><div dir="ltr"><div><div defang_data-gmailquote="yes"><div>Just to be clear, I am not saying that brick multiplexing isn't working. The aim is to prevent the glusterfsd process from getting OOM killed because 200 bricks when multiplexed consume 20GB of virtual memory.<br></div>
</div>
</div>
</div>
</blockquote><div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">Yes, the OOM killer is more dangerous with multiplexing. &nbsp;It likes to take out the process that is the whole machine's reason for existence, which is pretty darn dumb. &nbsp;Perhaps we should use oom_adj/OOM_DISABLE to make it a bit less dumb?<br></div>
<div style="font-family:Arial;"><br></div>
<blockquote type="cite"><div dir="ltr"><div><div defang_data-gmailquote="yes"><div>If it is found that the additional usage of 75MB of virtual memory per every brick attach can't be removed/reduced, then the only solution would be to fix issue 151 [1] by limiting multiplexed bricks.<br></div>
<div>[1]&nbsp;<a href="https://github.com/gluster/glusterfs/issues/151">https://github.com/gluster/glusterfs/issues/151</a><br></div>
</div>
</div>
</div>
</blockquote><div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">This is another reason why limiting the number of brick processes is preferable to limiting the number of bricks per process. &nbsp;When we limit bricks per process and wait until one is "full" before starting another, then that first brick process remains a prime target for the OOM killer. &nbsp;By "striping" bricks across N processes (where N ~= number of cores), none of them become targets until we're approaching our system-wide brick limit anyway.</div>
<div style="font-family:Arial;"><br></div>
</body>
</html>