<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">So here are the dumps, gzip'ed.<br>
      <br>
      What I did:<br>
      1. mounting the volume, removing all its content, umounting it<br>
      2. mounting the volume<br>
      3. performing a cp -Rp /usr/* /root/MNT<br>
      4. performing a rm -rf /root/MNT/*<br>
      5. taking a dump (glusterdump.p1.dump)<br>
      6. re-doing 3, 4 and 5 (glusterdump.p2.dump)<br>
      <br>
      VSZ/RSS are respectively:<br>
      - 381896 / 35688 just after mount<br>
      - 644040 / 309240 after 1st cp -Rp<br>
      - 644040 / 310128 after 1st rm -rf<br>
      - 709576 / 310128 after 1st kill -USR1<br>
      - 840648 / 421964 after 2nd cp -Rp<br>
      - 840648 / 422224 after 2nd rm -rf<br>
      <br>
      I created a small script that performs these actions in an
      infinite loop:<br>
      while /bin/true<br>
      do<br>
        cp -Rp /usr/* /root/MNT/<br>
        + get VSZ/RSS of glusterfs process<br>
        rm -rf /root/MNT/*<br>
        + get VSZ/RSS of glusterfs process<br>
      done<br>
      <br>
      At this time here are the values so far:<br>
      971720 533988<br>
      1037256 645500<br>
      1037256 645840<br>
      1168328 757348<br>
      1168328 757620<br>
      1299400 869128<br>
      1299400 869328<br>
      1364936 980712<br>
      1364936 980944<br>
      1496008 1092384<br>
      1496008 1092404<br>
      1627080 1203796<br>
      1627080 1203996<br>
      1692616 1315572<br>
      1692616 1315504<br>
      1823688 1426812<br>
      1823688 1427340<br>
      1954760 1538716<br>
      1954760 1538772<br>
      2085832 1647676<br>
      2085832 1647708<br>
      2151368 1750392<br>
      2151368 1750708<br>
      2282440 1853864<br>
      2282440 1853764<br>
      2413512 1952668<br>
      2413512 1952704<br>
      2479048 2056500<br>
      2479048 2056712<br>
      <br>
      So at this time glusterfs process takes not far from 2Gb of
      resident memory, only performing exactly the same actions 'cp -Rp
      /usr/* /root/MNT' + 'rm -rf /root/MNT/*'.<br>
      <br>
      Swap usage is starting to increase a little, and I don't saw any
      memory dropping at this time.<br>
      I can understand that kernel may not release the removed files
      (after rm -rf) immediatly, but the fist 'rm' occured at ~12:00
      today and it is ~17:00 here so I can't understand why so much
      memory is used.<br>
      I would expect the memory to grow during 'cp -Rp', then reduce
      after 'rm', but it stays the same. Even if it stays the same I
      would expect it to not grow more while cp-ing again.<br>
      <br>
      I let the cp/rm loop running to see what will happen. Feel free to
      ask for other data if it may help.<br>
      <br>
      Please note that I'll be in hollidays at the end of this week for
      3 weeks so I will mostly not be able to perform tests during this
      time (network connection is too bad where I go).<br>
      <br>
      Regards,<br>
      --<br>
      Y.<br>
      <br>
      Le 02/08/2016 à 05:11, Pranith Kumar Karampuri a écrit :<br>
    </div>
    <blockquote
cite="mid:CAOgeEnZebt2Hu9V_Ubii8hWW_snd93yNhFdPLC-QMDamZ8pEyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Mon, Aug 1, 2016 at 3:40 PM,
            Yannick Perret <span dir="ltr">&lt;<a
                moz-do-not-send="true"
                href="mailto:yannick.perret@liris.cnrs.fr"
                target="_blank">yannick.perret@liris.cnrs.fr</a>&gt;</span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000"><span class="">
                  <div>Le 29/07/2016 à 18:39, Pranith Kumar Karampuri a
                    écrit :<br>
                  </div>
                </span>
                <blockquote type="cite">
                  <div dir="ltr"><br>
                    <div class="gmail_extra"><br>
                      <div class="gmail_quote"><span class="">On Fri,
                          Jul 29, 2016 at 2:26 PM, Yannick Perret <span
                            dir="ltr">&lt;<a moz-do-not-send="true"
                              href="mailto:yannick.perret@liris.cnrs.fr"
                              target="_blank">yannick.perret@liris.cnrs.fr</a>&gt;</span>
                          wrote:<br>
                        </span>
                        <blockquote class="gmail_quote"
                          style="margin:0px 0px 0px
                          0.8ex;border-left:1px solid
                          rgb(204,204,204);padding-left:1ex"><span
                            class="">Ok, last try:<br>
                            after investigating more versions I found
                            that FUSE client leaks memory on all of
                            them.<br>
                            I tested:<br>
                            - 3.6.7 client on debian 7 32bit and on
                            debian 8 64bit (with 3.6.7 serveurs on
                            debian 8 64bit)<br>
                            - 3.6.9 client on debian 7 32bit and on
                            debian 8 64bit (with 3.6.7 serveurs on
                            debian 8 64bit)<br>
                          </span><span class=""> - 3.7.13 client on
                            debian 8 64bit (with 3.8.1 serveurs on
                            debian 8 64bit)<br>
                            - 3.8.1 client on debian 8 64bit (with 3.8.1
                            serveurs on debian 8 64bit)<br>
                            In all cases compiled from sources, appart
                            for 3.8.1 where .deb were used (due to a
                            configure runtime error).<br>
                            For 3.7 it was compiled with
                            --disable-tiering. I also tried to compile
                            with --disable-fusermount (no change).<br>
                            <br>
                            In all of these cases the memory (resident
                            &amp; virtual) of glusterfs process on
                            client grows on each activity and never
                            reach a max (and never reduce).<br>
                            "Activity" for these tests is cp -Rp and ls
                            -lR.<br>
                            The client I let grows the most overreached
                            ~4Go RAM. On smaller machines it ends by OOM
                            killer killing glusterfs process or
                            glusterfs dying due to allocation error.<br>
                            <br>
                            In 3.6 mem seems to grow continusly, whereas
                            in 3.8.1 it grows by "steps" (430400 ko →
                            629144 (~1min) → 762324 (~1min) → 827860…).<br>
                            <br>
                            All tests performed on a single test volume
                            used only by my test client. Volume in a
                            basic x2 replica. The only parameters I
                            changed on this volume (without any effect)
                            are diagnostics.client-log-level set to
                            ERROR and network.inode-lru-limit set to
                            1024.<br>
                          </span></blockquote>
                        <span class="">
                          <div><br>
                          </div>
                          <div>Could you attach statedumps of your runs?<br>
                            The following link has steps to capture
                            this(<a moz-do-not-send="true"
href="https://gluster.readthedocs.io/en/latest/Troubleshooting/statedump/"
                              target="_blank">https://gluster.readthedocs.io/en/latest/Troubleshooting/statedump/</a>
                            ). We basically need to see what are the
                            memory types that are increasing. If you
                            could help find the issue, we can send the
                            fixes for your workload. There is a 3.8.2
                            release in around 10 days I think. We can
                            probably target this issue for that?<br>
                          </div>
                        </span></div>
                    </div>
                  </div>
                </blockquote>
                <span class=""> Here are statedumps.<br>
                  Steps:<br>
                  1. mount -t glusterfs ldap1.my.domain:SHARE /root/MNT/
                  (here VSZ and RSS are 381896 35828)<br>
                  2. take a dump with kill -USR1
                  &lt;pid-of-glusterfs-process&gt; (file
                  glusterdump.n1.dump.1470042769)<br>
                  3. perform a 'ls -lR /root/MNT | wc -l' (btw result of
                  wc -l is 518396 :)) and a 'cp -Rp /usr/*
                  /root/MNT/boo' (VSZ/RSS are 1301536/711992 at end of
                  these operations)<br>
                  4. take a dump with kill -USR1
                  &lt;pid-of-glusterfs-process&gt; (file
                  glusterdump.n2.dump.1470043929)<br>
                  5. do 'cp -Rp * /root/MNT/toto/', so on an other
                  directory (VSZ/RSS are 1432608/909968 at end of this
                  operation)<br>
                  6. take a dump with kill -USR1
                  &lt;pid-of-glusterfs-process&gt; (file
                  glusterdump.n3.dump.)<br>
                </span></div>
            </blockquote>
            <div><br>
            </div>
            <div>Hey,<br>
            </div>
            <div>      Thanks a lot for providing this information.
              Looking at these steps, I don't see any problem for the
              increase in memory. Both ls -lR and cp -Rp commands you
              did in the step-3 will add new inodes in memory which
              increase the memory. What happens is as long as the kernel
              thinks these inodes need to be in memory gluster keeps
              them in memory. Once kernel doesn't think the inode is
              necessary, it sends 'inode-forgets'. At this point the
              memory starts reducing. So it kind of depends on the
              memory pressure kernel is under. But you said it lead to
              OOM-killers on smaller machines which means there could be
              some leaks. Could you modify the steps as follows to check
              to confirm there are leaks? Please do this test on those
              smaller machines which lead to OOM-killers.<br>
            </div>
            <div><br>
              <span class="">Steps:<br>
                1. mount -t glusterfs ldap1.my.domain:SHARE /root/MNT/
                (here VSZ and RSS are 381896 35828)<br>
                2. perform a 'ls -lR /root/MNT | wc -l' (btw result of
                wc -l is 518396 :)) and a 'cp -Rp /usr/* /root/MNT/boo'
                (VSZ/RSS are 1301536/711992 at end of these operations)<br>
                3. do 'cp -Rp * /root/MNT/toto/', so on an other
                directory (VSZ/RSS are 1432608/909968 at end of this
                operation)<br>
              </span></div>
            <div><span class=""> 4. Delete all the files and directories
                you created in steps 2, 3 above<br>
              </span></div>
            <div><span class="">5. Take statedump with kill -USR1
                &lt;pid-of-glusterfs-process&gt;<br>
              </span></div>
            <div><span class="">6. Repeat steps from 2-5<br>
                <br>
              </span></div>
            <div><span class="">Attach these two statedumps. I think the
                statedumps will be even more affective if the mount does
                not have any data when you start the experiment.<br>
              </span></div>
            <div><br>
            </div>
            <div>HTH<br>
               <br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000"><span class=""> <br>
                </span> Dump files are gzip'ed because they are very
                large.<br>
                Dump files are here (too big for email):<br>
                <a moz-do-not-send="true"
href="http://wikisend.com/download/623430/glusterdump.n1.dump.1470042769.gz"
                  target="_blank">http://wikisend.com/download/623430/glusterdump.n1.dump.1470042769.gz</a><br>
                <a moz-do-not-send="true"
href="http://wikisend.com/download/771220/glusterdump.n2.dump.1470043929.gz"
                  target="_blank">http://wikisend.com/download/771220/glusterdump.n2.dump.1470043929.gz</a><br>
                <a moz-do-not-send="true"
href="http://wikisend.com/download/428752/glusterdump.n3.dump.1470045181.gz"
                  target="_blank">http://wikisend.com/download/428752/glusterdump.n3.dump.1470045181.gz</a><br>
                (I keep the files if someone whats them in an other
                format)<span class=""><br>
                  <br>
                  Client and servers are installed from .deb files
                  (glusterfs-client_3.8.1-1_amd64.deb and
                  glusterfs-common_3.8.1-1_amd64.deb on client side).<br>
                  They are all Debian 8 64bit. Servers are test machines
                  that serve only one volume to this sole client. Volume
                  is a simple x2 replica. I just changed for test
                  network.inode-lru-limit value to 1024. Mount point
                  /root/MNT is only used for these tests.<br>
                  <br>
                  --<br>
                  Y.<br>
                  <br>
                  <br>
                </span></div>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <br>
          -- <br>
          <div class="gmail_signature" data-smartmail="gmail_signature">
            <div dir="ltr">Pranith<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>