In this case i think the time required to spawn each individual process is definitively having an effect.  A well coded FastAGI server with persistent database connections and a minimum number of worker threads would help for sure.<br>

<br>Donny<br><br><div class="gmail_quote">On Sun, May 9, 2010 at 8:13 PM, Deepesh D <span dir="ltr">&lt;<a href="mailto:deep.d2010@gmail.com">deep.d2010@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

I am looking at handling around 20-25 calls per second. Without AGI my<br>
system is able to take upto 30-35 CPS, with AGI this falls to 13-15<br>
CPS. Even this figure was reached after I did database optimizations<br>
and combined 4 agis into one. Earlier with 4 agis per call it used to<br>
take only 5-7 CPS.<br>
<br>
I also did a test where the AGI exits without doing anything. Just the<br>
process of calling the AGI increases the CPU utilization by 25%.<br>
<br>
On Sun, May 9, 2010 at 10:58 PM, Steve Edwards<br>
<div class="im">&lt;<a href="http://asterisk.org" target="_blank">asterisk.org</a>@<a href="http://sedwards.com" target="_blank">sedwards.com</a>&gt; wrote:<br>
</div><div><div></div><div class="h5">&gt;&gt;&gt; On Sun, 9 May 2010, Deepesh D wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Performance is the main reason for switching from AGI to module. Will<br>
&gt;&gt;&gt;&gt; a FastAGI running on the same server as asterisk give me improved<br>
&gt;&gt;&gt;&gt; performance?<br>
&gt;<br>
&gt;&gt; On Sun, May 9, 2010 at 9:09 PM, Steve Edwards<br>
&gt;<br>
&gt;&gt;&gt; While creating a new process is typically a very &quot;expensive&quot; (in CPU<br>
&gt;&gt;&gt; resources) process, any reasonably modern processor can create hundreds<br>
&gt;&gt;&gt; of processes per second.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Before switching to FastAGI, why do you think process creation is the<br>
&gt;&gt;&gt; limiting factor in your quest for improved performance?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; How about some details about exactly what you are doing and what your<br>
&gt;&gt;&gt; AGIs are doing?<br>
&gt;<br>
&gt; On Sun, 9 May 2010, Deepesh D wrote:<br>
&gt;<br>
&gt;&gt; The AGI does some database lookups and based on the results sets some<br>
&gt;&gt; dialplan variables. In the dialplan the call is routed to different<br>
&gt;&gt; extensions based on the value of these variables. The database I use is<br>
&gt;&gt; postgresql. The AGI uses libpq++ (postgresql&#39;s C++ interface) to connect<br>
&gt;&gt; with database.<br>
&gt;<br>
&gt; I see no benefit to implementing this as a module.<br>
&gt;<br>
&gt; Implementing your AGI as FastAGI would eliminate process creation and<br>
&gt; database connection overhead.<br>
&gt;<br>
&gt; I suspect a minor improvement in database design, indexing, etc. could<br>
&gt; yield orders of magnitude more improvement in performance than converting<br>
&gt; from AGI to FastAGI.<br>
&gt;<br>
&gt; How many calls per second are you handling? I have a host (Intel(R)<br>
&gt; Xeon(TM) CPU 3.40GHz) handling 60,000 calls per day -- just under 1 call<br>
&gt; per second.<br>
&gt;<br>
&gt; Each call executes 4 AGIs, each accessing the database, before the caller<br>
&gt; hears first audio. Each call may execute dozens of other AGIs through the<br>
&gt; life of the call.<br>
&gt;<br>
&gt; If I were to do it again, I would merge the 4 AGIs into a single AGI and<br>
&gt; would consider FastAGI, but I have no performance problems at this CPS<br>
&gt; level.<br>
&gt;<br>
&gt; I&#39;m not against FastAGI, I&#39;m just saying it may not be the silver bullet<br>
&gt; you are looking for.<br>
&gt;<br>
&gt; --<br>
&gt; Thanks in advance,<br>
&gt; -------------------------------------------------------------------------<br>
&gt; Steve Edwards       <a href="mailto:sedwards@sedwards.com">sedwards@sedwards.com</a>      Voice: +1-760-468-3867 PST<br>
&gt; Newline                                              Fax: +1-760-731-3000<br>
&gt;<br>
&gt; --<br>
&gt; _____________________________________________________________________<br>
&gt; -- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" target="_blank">http://www.api-digital.com</a> --<br>
&gt;<br>
&gt; asterisk-dev mailing list<br>
&gt; To UNSUBSCRIBE or update options visit:<br>
&gt;   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br>
&gt;<br>
<br>
--<br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br>
</div></div></blockquote></div><br>