<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"><meta name="Generator" content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1978417589;
        mso-list-type:hybrid;
        mso-list-template-ids:1789396930 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang="EN-US" link="blue" vlink="purple"><div class="WordSection1"><p class="MsoNormal">I have been using jemalloc for the past year with good results.  Our product has a couple of new requirements that I have not come across before.</p>
<p class="MsoNormal"> </p><p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><span style="mso-list:Ignore">1)<span style="font:7.0pt "Times New Roman"">      </span></span>The first is the ability to completely segregate control data from allocated data.  This makes the allocator more like a resource manager in that you allocate and mange the resource but have no access to it.  The data structure design of jemalloc lends itself fairly well to meeting this requirement.</p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><span style="mso-list:Ignore">2)<span style="font:7.0pt "Times New Roman"">      </span></span>The second requirement is focused on multi-node NUMA systems.  Consider the requirement to allocate memory on a specified node.  A buffer is returned to the application on the requested node but the application then migrates the data to another node for processing.  When the app frees the buffer, it is returned to the allocator’s free pool.  The problem is the memory is now located on the wrong node.  Subsequent allocations can result in misplaced data and performance anomalies.  This behavior is true for any allocator; libc malloc(3), etc.</p>
<p class="MsoNormal"> </p><p class="MsoNormal">Have these types of requirements been considered or solved by other systems?</p><p class="MsoNormal"> </p><p class="MsoNormal">Thanks</p><p class="MsoNormal">Terrell</p><p class="MsoNormal">
Convey Computer Systems</p></div></body></html>