<html><body><p><font size="2">Originally, GPFS used a strict round robin, first over failure groups, then over volumes within each</font><br><font size="2">failure group. That had performance issues when one or more volumes was low on space. Then </font><br><font size="2">for a while there were a variety of weighted stripe methods including by free space and by capacity.</font><br><font size="2">The file system had an option allowing the user to change the stripe method. That option was</font><br><font size="2">removed when we switched to a &quot;best effort&quot; round robin, which does a round robin over the</font><br><font size="2">failure groups then volumes based on the allocation regions that a node owns. When the stripe width</font><br><font size="2">at a node drops below half of the failure groups or half of the volumes that node will acquire new</font><br><font size="2">allocation regions.</font><br><br><font size="2">Basically we vary the stripe width to avoid searching for free space on specific volumes. It will </font><br><font size="2">eventually even itself out or you could restripe the file system to even it out immediately.</font><br><br><font size="2">-Wayne</font><br><br><font size="2">ps. And of course, allocation in FPO is completely different.</font><br><br><br><tt><font size="2">gpfsug-discuss-bounces@spectrumscale.org wrote on 01/13/2018 09:26:51 AM:<br><br>&gt; From: Aaron Knister &lt;aaron.s.knister@nasa.gov&gt;</font></tt><br><tt><font size="2">&gt; To: gpfsug main discussion list &lt;gpfsug-discuss@spectrumscale.org&gt;</font></tt><br><tt><font size="2">&gt; Date: 01/13/2018 09:27 AM</font></tt><br><tt><font size="2">&gt; Subject: Re: [gpfsug-discuss] pool block allocation algorithm</font></tt><br><tt><font size="2">&gt; Sent by: gpfsug-discuss-bounces@spectrumscale.org</font></tt><br><tt><font size="2">&gt; <br>&gt; Thanks, Peter. That definitely makes sense and I was actually wondering<br>&gt; if performance was a factor. Do you know where to look to see what GPFS'<br>&gt; perception of &quot;performance&quot; is for a given NSD?<br>&gt; <br>&gt; -Aaron<br>&gt; <br>&gt; On 1/13/18 12:00 PM, Peter Serocka wrote:<br>&gt; &gt; Within reasonable capacity limits it would also expect<br>&gt; &gt; to direct incoming data to disks that are best \u201cavailable\u201d<br>&gt; &gt; from a current performance perspective \u2014 like doing least<br>&gt; &gt; IOPS, having lowest latency and shortest filled queue length.<br>&gt; &gt; <br>&gt; &gt; You new NSDs, filled only with recent data, might quickly have<br>&gt; &gt; become the most busy units before reaching capacity balance,<br>&gt; &gt; simply because recent data tends to be more active than older stuff.<br>&gt; &gt; <br>&gt; &gt; Makes sense?<br>&gt; &gt; <br>&gt; &gt; \u2014 Peter<br>&gt; &gt; <br>&gt; &gt;&gt; On 2018 Jan 13 Sat, at 17:18, Aaron Knister <br>&gt; &lt;aaron.s.knister@nasa.gov&gt; wrote:<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; Thanks Everyone! I whipped up a script to dump the block layout of a<br>&gt; &gt;&gt; file and then join that with mmdf information. As part of my exploration<br>&gt; &gt;&gt; I wrote one 2GB file to each of this particular filesystem's 4 data<br>&gt; &gt;&gt; pools last night (using &quot;touch $file; mmchattr $file -P $pool; dd<br>&gt; &gt;&gt; of=$file&quot;) and have attached a dump of the layout/nsd information for<br>&gt; &gt;&gt; each file/pool. The fields for the output are:<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; diskId, numBlocksOnDisk, diskName, diskSize, failureGroup, freeBlocks,<br>&gt; &gt;&gt; freePct, freeKbFragments, freeKbFragmentsPct<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; <br>&gt; &gt;&gt; Here's the highlight from pool1:<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; 36  264  d13_06_006    23437934592  1213    4548935680  (19%)<br>&gt; &gt;&gt; 83304320   (0%)<br>&gt; &gt;&gt; 59   74  d10_41_025    23437934592  1011    6993759232  (30%)<br>&gt; &gt;&gt; 58642816   (0%)<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; For this file (And anecdotally what I've seen looking at NSD I/O data<br>&gt; &gt;&gt; for other files written to this pool) the pattern of more blocks being<br>&gt; &gt;&gt; allocated to the NSDs that are ~20% free vs the NSDs that are 30% free<br>&gt; &gt;&gt; seems to be fairly consistent.<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; <br>&gt; &gt;&gt; Looking at a snippet of pool2:<br>&gt; &gt;&gt; 101  238  d15_15_011    23437934592  1415    2008394752   (9%)<br>&gt; &gt;&gt; 181699328   (1%)<br>&gt; &gt;&gt; 102  235  d15_16_012    23437934592  1415    2009153536   (9%)<br>&gt; &gt;&gt; 182165312   (1%)<br>&gt; &gt;&gt; 116  248  d11_42_026    23437934592  1011    4146111488  (18%)<br>&gt; &gt;&gt; 134941504   (1%)<br>&gt; &gt;&gt; 117  249  d13_42_026    23437934592  1213    4147710976  (18%)<br>&gt; &gt;&gt; 135203776   (1%)<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; there are slightly more blocks allocated in general on the NSDs with<br>&gt; &gt;&gt; twice the amount of free space, but it doesn't seem to be a significant<br>&gt; &gt;&gt; amount relative to the delta in free space. The pattern from pool1<br>&gt; &gt;&gt; certainly doesn't hold true here.<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; Pool4 isn't very interesting because all of the NSDs are well balanced<br>&gt; &gt;&gt; in terms of free space (all 16% free).<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; Pool3, however, *is* particularly interesting. Here's a snippet:<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; 106  222  d15_24_016    23437934592  1415    2957561856  (13%)<br>&gt; &gt;&gt; 37436768   (0%)<br>&gt; &gt;&gt; 107  222  d15_25_017    23437934592  1415    2957537280  (13%)<br>&gt; &gt;&gt; 37353984   (0%)<br>&gt; &gt;&gt; 108  222  d15_26_018    23437934592  1415    2957539328  (13%)<br>&gt; &gt;&gt; 37335872   (0%)<br>&gt; &gt;&gt; 125  222  d11_44_028    23437934592  1011   13297235968  (57%)<br>&gt; &gt;&gt; 20505568   (0%)<br>&gt; &gt;&gt; 126  222  d12_44_028    23437934592  1213   13296712704  (57%)<br>&gt; &gt;&gt; 20632768   (0%)<br>&gt; &gt;&gt; 127  222  d12_45_029    23437934592  1213   13297404928  (57%)<br>&gt; &gt;&gt; 20557408   (0%)<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; GPFS consistently allocated the same number of blocks to disks with ~4x<br>&gt; &gt;&gt; the free space than it did the other disks in the pool.<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; Suffice it to say-- I'm *very* confused :)<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; -Aaron<br>&gt; &gt;&gt; <br>&gt; &gt;&gt; On 1/13/18 8:18 AM, Daniel Kidger wrote:<br>&gt; &gt;&gt;&gt; Aaron,<br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt; Also are your new NSDs the same size as your existing ones?<br>&gt; &gt;&gt;&gt; i.e. the NSDs that are at a higher %age full might have more free blocks<br>&gt; &gt;&gt;&gt; than the other NSDs?<br>&gt; &gt;&gt;&gt; Daniel<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt; IBM Storage Professional Badge<br>&gt; &gt;&gt;&gt; &lt;<a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=https-3A__www.youracclaim.com_user_danel-2Dkidger&amp;d=DwIGaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=GtPIT10cORUM6qwFnTVtIiDUFmESkxW3I0wu8GDxmgc&amp;m=JJtwh_OoxH4AMzXA5IDarV4i-<br>&gt; Xi8IMuVUeAtBxlTznA&amp;s=hu8pcNGJmsITfq8y9fzxDf9WoXD1Kr5ptVLEEpbwcjU&amp;e=&gt;<br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt;                 <br>&gt; &gt;&gt;&gt; *Dr Daniel Kidger*<br>&gt; &gt;&gt;&gt; IBM Technical Sales Specialist<br>&gt; &gt;&gt;&gt; Software Defined Solution Sales<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt; +44-(0)7818 522 266<br>&gt; &gt;&gt;&gt; daniel.kidger@uk.ibm.com<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;    ----- Original message -----<br>&gt; &gt;&gt;&gt;    From: Jan-Frode Myklebust &lt;janfrode@tanso.net&gt;<br>&gt; &gt;&gt;&gt;    Sent by: gpfsug-discuss-bounces@spectrumscale.org<br>&gt; &gt;&gt;&gt;    To: gpfsug main discussion list &lt;gpfsug-discuss@spectrumscale.org&gt;<br>&gt; &gt;&gt;&gt;    Cc:<br>&gt; &gt;&gt;&gt;    Subject: Re: [gpfsug-discuss] pool block allocation algorithm<br>&gt; &gt;&gt;&gt;    Date: Sat, Jan 13, 2018 9:25 AM<br>&gt; &gt;&gt;&gt;     <br>&gt; &gt;&gt;&gt;    Don\u2019t have documentation/whitepaper, but as I recall, it will first<br>&gt; &gt;&gt;&gt;    allocate round-robin over failureGroup, then round-robin over<br>&gt; &gt;&gt;&gt;    nsdServers, and then round-robin over volumes. So if these new NSDs<br>&gt; &gt;&gt;&gt;    are defined as different failureGroup from the old disks, that might<br>&gt; &gt;&gt;&gt;    explain it..<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;    -jf<br>&gt; &gt;&gt;&gt;    lør. 13. jan. 2018 kl. 00:15 skrev Aaron Knister<br>&gt; &gt;&gt;&gt;    &lt;aaron.s.knister@nasa.gov &lt;<a href="mailto:aaron.s.knister@nasa.gov">mailto:aaron.s.knister@nasa.gov</a>&gt;&gt;:<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;        Apologies if this has been covered elsewhere (I couldn't find it<br>&gt; &gt;&gt;&gt;        if it<br>&gt; &gt;&gt;&gt;        has). I'm curious how GPFS decides where to allocate new blocks.<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;        We've got a filesystem that we added some NSDs to a while back<br>&gt; &gt;&gt;&gt;        and it<br>&gt; &gt;&gt;&gt;        hurt there for a little while because it appeared as <br>&gt; though GPFS was<br>&gt; &gt;&gt;&gt;        choosing to allocate new blocks much more frequently on the<br>&gt; &gt;&gt;&gt;        ~100% free<br>&gt; &gt;&gt;&gt;        LUNs than the existing LUNs (I can't recall how free they were<br>&gt; &gt;&gt;&gt;        at the<br>&gt; &gt;&gt;&gt;        time). Looking at it now, though, it seems GPFS is doing the<br>&gt; &gt;&gt;&gt;        opposite.<br>&gt; &gt;&gt;&gt;        There's now a ~10% difference between the LUNs added and the<br>&gt; &gt;&gt;&gt;        existing<br>&gt; &gt;&gt;&gt;        LUNs (20% free vs 30% free) and GPFS is choosing to allocate new<br>&gt; &gt;&gt;&gt;        writes<br>&gt; &gt;&gt;&gt;        at a ratio of about 3:1 on the disks with *fewer* free blocks<br>&gt; &gt;&gt;&gt;        than on<br>&gt; &gt;&gt;&gt;        the disks with more free blocks. That's completely <br>&gt; inconsistent with<br>&gt; &gt;&gt;&gt;        what we saw when we initially added the disks which makes me<br>&gt; &gt;&gt;&gt;        wonder how<br>&gt; &gt;&gt;&gt;        GPFS is choosing to allocate new blocks (other than the <br>&gt; obvious bits<br>&gt; &gt;&gt;&gt;        about failure group, and replication factor). Could someone<br>&gt; &gt;&gt;&gt;        explain (or<br>&gt; &gt;&gt;&gt;        point me at a whitepaper) what factors GPFS uses when allocating<br>&gt; &gt;&gt;&gt;        blocks,<br>&gt; &gt;&gt;&gt;        particularly as it pertains to choosing one NSD over another<br>&gt; &gt;&gt;&gt;        within the<br>&gt; &gt;&gt;&gt;        same failure group.<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;        Thanks!<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;        -Aaron<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;        --<br>&gt; &gt;&gt;&gt;        Aaron Knister<br>&gt; &gt;&gt;&gt;        NASA Center for Climate Simulation (Code 606.2)<br>&gt; &gt;&gt;&gt;        Goddard Space Flight Center<br>&gt; &gt;&gt;&gt;        (301) 286-2776<br>&gt; &gt;&gt;&gt;        _______________________________________________<br>&gt; &gt;&gt;&gt;        gpfsug-discuss mailing list<br>&gt; &gt;&gt;&gt;        gpfsug-discuss at spectrumscale.org<br>&gt; &gt;&gt;&gt;        &lt;<a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__spectrumscale.org&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=HlQDuUjgJx4p54QzcXd0_zTwf4Cr2t3NINalNhLTA2E&amp;m=f89xvht1uMUzAcLpusakZb1snMOgweGu0KTkKp9oedI&amp;s=QYsXVDOdNRcII7FPtAbCXEyYJzNSd_UXq8bmreALKxs&amp;e=<br>&gt; &gt;<br>&gt; &gt;&gt;&gt;        <a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwIGaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=GtPIT10cORUM6qwFnTVtIiDUFmESkxW3I0wu8GDxmgc&amp;m=JJtwh_OoxH4AMzXA5IDarV4i-<br>&gt; Xi8IMuVUeAtBxlTznA&amp;s=-7RY2fbJ0kmb6CgKfJIoXbHkE4pIZ4L9IDEap4AbyIQ&amp;e=<br>&gt; &gt;&gt;&gt;        &lt;<a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=HlQDuUjgJx4p54QzcXd0_zTwf4Cr2t3NINalNhLTA2E&amp;m=f89xvht1uMUzAcLpusakZb1snMOgweGu0KTkKp9oedI&amp;s=NSd3e2hwIKBCwSxsKe-<br>&gt; GTf8EwJ6AkZQiTsRQZ73UH20&amp;e=&gt;<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;    _______________________________________________<br>&gt; &gt;&gt;&gt;    gpfsug-discuss mailing list<br>&gt; &gt;&gt;&gt;    gpfsug-discuss at spectrumscale.org<br>&gt; &gt;&gt;&gt;    <a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwICAg&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=HlQDuUjgJx4p54QzcXd0_zTwf4Cr2t3NINalNhLTA2E&amp;m=f89xvht1uMUzAcLpusakZb1snMOgweGu0KTkKp9oedI&amp;s=NSd3e2hwIKBCwSxsKe-<br>&gt; GTf8EwJ6AkZQiTsRQZ73UH20&amp;e=<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt;  <br>&gt; &gt;&gt;&gt; Unless stated otherwise above:<br>&gt; &gt;&gt;&gt; IBM United Kingdom Limited - Registered in England and Wales with number<br>&gt; &gt;&gt;&gt; 741598.<br>&gt; &gt;&gt;&gt; Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt;&gt; _______________________________________________<br>&gt; &gt;&gt;&gt; gpfsug-discuss mailing list<br>&gt; &gt;&gt;&gt; gpfsug-discuss at spectrumscale.org<br>&gt; &gt;&gt;&gt; <a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwIGaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=GtPIT10cORUM6qwFnTVtIiDUFmESkxW3I0wu8GDxmgc&amp;m=JJtwh_OoxH4AMzXA5IDarV4i-<br>&gt; Xi8IMuVUeAtBxlTznA&amp;s=-7RY2fbJ0kmb6CgKfJIoXbHkE4pIZ4L9IDEap4AbyIQ&amp;e=<br>&gt; &gt;&gt;&gt; <br>&gt; &gt;&gt; <br>&gt; &gt;&gt; -- <br>&gt; &gt;&gt; Aaron Knister<br>&gt; &gt;&gt; NASA Center for Climate Simulation (Code 606.2)<br>&gt; &gt;&gt; Goddard Space Flight Center<br>&gt; &gt;&gt; (301) 286-2776<br>&gt; &gt;&gt; _______________________________________________<br>&gt; &gt;&gt; gpfsug-discuss mailing list<br>&gt; &gt;&gt; gpfsug-discuss at spectrumscale.org<br>&gt; &gt;&gt; <a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwIGaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=GtPIT10cORUM6qwFnTVtIiDUFmESkxW3I0wu8GDxmgc&amp;m=JJtwh_OoxH4AMzXA5IDarV4i-<br>&gt; Xi8IMuVUeAtBxlTznA&amp;s=-7RY2fbJ0kmb6CgKfJIoXbHkE4pIZ4L9IDEap4AbyIQ&amp;e=<br>&gt; &gt; <br>&gt; &gt; _______________________________________________<br>&gt; &gt; gpfsug-discuss mailing list<br>&gt; &gt; gpfsug-discuss at spectrumscale.org<br>&gt; &gt; <a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwIGaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=GtPIT10cORUM6qwFnTVtIiDUFmESkxW3I0wu8GDxmgc&amp;m=JJtwh_OoxH4AMzXA5IDarV4i-<br>&gt; Xi8IMuVUeAtBxlTznA&amp;s=-7RY2fbJ0kmb6CgKfJIoXbHkE4pIZ4L9IDEap4AbyIQ&amp;e=<br>&gt; <br>&gt; -- <br>&gt; Aaron Knister<br>&gt; NASA Center for Climate Simulation (Code 606.2)<br>&gt; Goddard Space Flight Center<br>&gt; (301) 286-2776<br>&gt; _______________________________________________<br>&gt; gpfsug-discuss mailing list<br>&gt; gpfsug-discuss at spectrumscale.org<br>&gt; <a href="https://urldefense.proofpoint.com/v2/url?">https://urldefense.proofpoint.com/v2/url?</a><br>&gt; u=http-3A__gpfsug.org_mailman_listinfo_gpfsug-2Ddiscuss&amp;d=DwIGaQ&amp;c=jf_iaSHvJObTbx-<br>&gt; siA1ZOg&amp;r=GtPIT10cORUM6qwFnTVtIiDUFmESkxW3I0wu8GDxmgc&amp;m=JJtwh_OoxH4AMzXA5IDarV4i-<br>&gt; Xi8IMuVUeAtBxlTznA&amp;s=-7RY2fbJ0kmb6CgKfJIoXbHkE4pIZ4L9IDEap4AbyIQ&amp;e=<br>&gt; <br></font></tt><BR>
</body></html>