<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <tt>Alex,<br>
      <br>
      There is no magic way to pre-determin the ratio between the number
      of children and CPU cores - it depends on how intensive and slow
      are your I/O's. OF course, you can try to do some simple math,
      just to give you a point to start. Assuming:<br>
          - the I/O's for handling an INVITE (call) are 500 ms<br>
          - you want to get 100 cps<br>
      =&gt; one process can do two calls per second (1s/0.5cps), so you
      need 50 processes...without considering the actual computation
      time.<br>
      Of course, this is valid for OpenSIPS pre 2.0 version. Starting
      with 2.x, there is no actual blocking because of I/Os (DB, REST,
      EXEC), so you should consider your OpenSIPS doing only CPU time
      (no blocking in I/O's) - in this async setup makes no sense to
      have more processes than CPU cores.<br>
      <br>
      Anyhow, the best way to do it is to estimate a bit the starting
      number for processes and do realtime monitoring of the processes
      load (using the load statistics) to get a real impression on the
      internal load.<br>
      <br>
      Now, how far an application can scale (by increasing the number of
      parallel processes) is a totally different story. And indeed,
      internal resources my become a bottleneck.<br>
      This is the reason for having the HP (High-Performance) memory
      manager added into OpenSIPS - it dramatically reduces the
      collision between processes while working over shared memory -
      this was indeed noticed and addressed while running tests with ~
      +30.000 calls per second on a single OpenSIPS instance.<br>
      Such bottleneck were the reasons for partitioning the TM timers
      (to allow the timer lists in TM to be partitioned across multiple
      processes and eventually horizontally scaled) and for changing the
      overall timers implementation in OpenSIPS - drop the single timer
      process and replaces with timer jobs distributed (load based) to
      any available internal process.<br>
      <br>
      (sorry for the long reply)<br>
      <br>
      <br>
      Regards,<br>
    </tt>
    <pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
    <div class="moz-cite-prefix">On 05.02.2016 17:54, Alex Balashov
      wrote:<br>
    </div>
    <blockquote
      cite="mid:20160205155422.5419088.93102.196023@evaristesys.com"
      type="cite">
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);">Bogdan,</div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><br>
      </div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);">For moderately
        I/O-bound processing, what is the optimal number of child
        processes in relation to CPU cores?</div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><span
          style="font-size: initial; line-height: initial; text-align:
          initial;"><br>
        </span></div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><span
          style="font-size: initial; line-height: initial; text-align:
          initial;">You say that the number of child processes can
          exceed available cores (i.e. nproc). By how much? Where is the
          point at which contention, locking and waiting leads to
          diminishing returns?</span></div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><span
          style="font-size: initial; line-height: initial; text-align:
          initial;"><br>
        </span></div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><span
          style="font-size: initial; line-height: initial; text-align:
          initial;">My personal experience suggests that on an 8-core
          system, architectural diminishing returns of ‎this sort appear
          quite rapidly, and that 32 would be far too many worker
          processes. However, last time I really experimented was some
          years ago.</span></div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><span
          style="font-size: initial; line-height: initial; text-align:
          initial;"><br>
        </span></div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><span
          style="font-size: initial; line-height: initial; text-align:
          initial;">-- Alex</span></div>
      <div style="width: 100%; font-size: initial; font-family: Calibri,
        'Slate Pro', sans-serif; color: rgb(31, 73, 125); text-align:
        initial; background-color: rgb(255, 255, 255);"><br
          style="display:initial">
      </div>
      <div style="font-size: initial; font-family: Calibri, 'Slate Pro',
        sans-serif; color: rgb(31, 73, 125); text-align: initial;
        background-color: rgb(255, 255, 255);">--<br>
        Alex Balashov | Principal | Evariste Systems LLC<br>
        303 Perimeter Center North, Suite 300<br>
        Atlanta, GA 30346<br>
        United States<br>
        <br>
        Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct)<br>
        Web: <a class="moz-txt-link-freetext" href="http://www.evaristesys.com/">http://www.evaristesys.com/</a>, <a class="moz-txt-link-freetext" href="http://www.csrpswitch.com/">http://www.csrpswitch.com/</a><br>
        <br>
        Sent from my BlackBerry.</div>
      <table style="background-color:white;border-spacing:0px;"
        width="100%">
        <tbody>
          <tr>
            <td colspan="2" style="font-size: initial; text-align:
              initial; background-color: rgb(255, 255, 255);">
              <div style="border-style: solid none none;
                border-top-color: rgb(181, 196, 223); border-top-width:
                1pt; padding: 3pt 0in 0in; font-family: Tahoma, 'BB
                Alpha Sans', 'Slate Pro'; font-size: 10pt;">
                <div><b>From: </b>Bogdan-Andrei Iancu</div>
                <div><b>Sent: </b>Friday, February 5, 2016 05:45</div>
                <div><b>To: </b>OpenSIPS users mailling list; Søren
                  Andersen</div>
                <div><b>Reply To: </b>OpenSIPS users mailling list</div>
                <div><b>Subject: </b>Re: [OpenSIPS-Users] recommended
                  settings for performance</div>
              </div>
            </td>
          </tr>
        </tbody>
      </table>
      <br>
      <div id="_originalContent" style="background-color: rgb(255, 255,
        255);">
        <meta content="text/html; charset=UTF-8"
          http-equiv="Content-Type">
        <tt>Hi </tt>Søren,<br>
        <br>
        The throughput of your opensips highly depends on your script -
        if your logic is complex, if it performs many external queries
        (db,radius, rest, etc). It is more test and see approach -
        monitor the load of your opensips and adjusted based on your
        observations .<br>
        <br>
        Trying to answer to your questions:<br>
        <br>
        1) assuming there is a need for CPU processing, you should
        configure a number of total processes (in opensips) at least
        equal to the number of cores - the opensips as overall app can
        use all the cores in the same time.<br>
        <br>
        2) I guess you mean about memory ? if you have large CPS /
        parallel calls / registrations, consider increasing the shm
        memory  - anyhow, inspect the mem usage at runtime with
        "opensipsctl fifo get_statistics shmem: "  and re-adjust<br>
        <br>
        3) if you script is I/O intensive (DNS, DB, RADIUS, REST),
        better have a large number of processes (32?). If not, try to
        correlated with the number of cores you have. Also, adjust on
        the run by checking the internal load via "opensipsctl fifo
        get_statistics load: "<br>
        <br>
        Regards, <br>
        <pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
        <div class="moz-cite-prefix">On 01.02.2016 23:31, Søren Andersen
          wrote:<br>
        </div>
        <blockquote
          cite="mid:F0A535BF32A63B4D8EC9E9AB5EC1856D410773CD@SEEMBX.root.local"
          type="cite">
          <meta http-equiv="Content-Type" content="text/html;
            charset=UTF-8">
          <meta name="Generator" content="Microsoft Word 15 (filtered
            medium)">
          <style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2102601000;
        mso-list-type:hybrid;
        mso-list-template-ids:1324251160 -36506864 67502083 67502085 67502081 67502083 67502085 67502081 67502083 67502085;}
@list l0:level1
        {mso-level-start-at:2016;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
          <div class="WordSection1">
            <p class="MsoNormal">Hello there,<o:p></o:p></p>
            <p class="MsoNormal"><o:p> </o:p></p>
            <p class="MsoNormal"><span lang="EN-US">I’m looking for some
                reference configs on opensips performance. <o:p></o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
            <p class="MsoListParagraph"
              style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
                lang="EN-US"><span style="mso-list:Ignore">-<span
                    style="font:7.0pt &quot;Times New Roman&quot;">         

                  </span></span></span><!--[endif]--><span lang="EN-US">How

                many cpu cores are you using and how many CPS are you
                peaking at?<o:p></o:p></span></p>
            <p class="MsoListParagraph"
              style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
                lang="EN-US"><span style="mso-list:Ignore">-<span
                    style="font:7.0pt &quot;Times New Roman&quot;">         

                  </span></span></span><!--[endif]--><span lang="EN-US">Which

                startoptions in opensipsctlrc are you using?<o:p></o:p></span></p>
            <p class="MsoListParagraph"
              style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><!--[if !supportLists]--><span
                lang="EN-US"><span style="mso-list:Ignore">-<span
                    style="font:7.0pt &quot;Times New Roman&quot;">         

                  </span></span></span><!--[endif]--><span lang="EN-US">How

                many opensips process children are you running?<o:p></o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US">Currently I’m
                planning to use STARTOPTIONS="-m 2048 -M 8" on a 2 core
                VM with children=8. – I hope I’ll be able to run
                600-1500 currently call on that setup. But that are your
                experience?<o:p></o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US">/Søren</span><span
                style="mso-fareast-language:DA" lang="EN-US"><o:p></o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
          </div>
          <br>
          <fieldset class="mimeAttachmentHeader"></fieldset>
          <br>
          <pre wrap="">_______________________________________________
Users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
        </blockquote>
        <br>
        <br>
        <!--end of _originalContent --></div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>