<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>
=> 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 "Times New Roman"">
</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 "Times New Roman"">
</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 "Times New Roman"">
</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>