Both,<br>if it always sounds ok then I guess CPU usage.<br><br><br><br><div class="gmail_quote">On Mon, Dec 7, 2009 at 2:58 PM, eaf <span dir="ltr">&lt;<a href="mailto:erandr-junk@usa.net">erandr-junk@usa.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
What do you want me to check while running these tests? Sound quality (it&#39;s<br>
good now even with original 1.0.4). Or CPU utilization?<br>
<br>
It&#39;s Debian 4.<br>
<div><div></div><div class="h5"><br>
<br>
Anthony Minessale-2 wrote:<br>
&gt;<br>
&gt; Did you do each thing alone too to tell the difference?<br>
&gt; -hp alone, disable monotonic alone (i did not see you mention the disable<br>
&gt; monotonic)<br>
&gt;<br>
&gt; as for your 4ms thing, yes we require high resolution timing, if we ask to<br>
&gt; sleep 1000 microseconds that is what we need it to sleep for or at least<br>
&gt; as<br>
&gt; close as possible, and the main reason that thread is never sleeping is<br>
&gt; because you can&#39;t actually count on it to run every 1ms but you mostly<br>
&gt; can.<br>
&gt; Hence the whole philosophy on only making 1 thread run hot all the time to<br>
&gt; ensure that the rest don&#39;t have to repeat the same algorithm.  We focus on<br>
&gt; high end performance this was the point of your experimentation because we<br>
&gt; will need to use a compile time defines and other logic to make it more<br>
&gt; efficient on your platform, a platform which we are not using.  I am<br>
&gt; curious<br>
&gt; what would happen if you install Kristian&#39;s astlinux on one of your<br>
&gt; devices,<br>
&gt; i think you should also compare the kernel versions.<br>
&gt;<br>
&gt;<br>
&gt; What OS are you running anyway?<br>
&gt;<br>
&gt; Here are some more things to try (running plain trunk with no mods) do<br>
&gt; these<br>
&gt; systematically each alone and all together with/without -hp or disable<br>
&gt; monotonic etc to see what different combos create<br>
&gt;<br>
&gt; comment out this line (line 10)<br>
&gt; #define DISABLE_1MS_COND<br>
&gt;<br>
&gt; rebuild, this tells it to run a conditional at 1ms in the same timer<br>
&gt; thread<br>
&gt; which will make all the switch_cond_next share a 1ms conditional instead<br>
&gt; of<br>
&gt; doing microsleeps<br>
&gt;<br>
&gt; next<br>
&gt;<br>
&gt; some kernels/devices work better using select(0) for sleep where others<br>
&gt; work<br>
&gt; better using usleep.<br>
&gt; comment out line 109<br>
&gt; apr_sleep(t);<br>
&gt;<br>
&gt; and try<br>
&gt; usleep(t)<br>
&gt;<br>
&gt; also mac works better using nanosleep so you could try changing it so it<br>
&gt; uses the code starting at 101 instead.<br>
&gt;<br>
&gt;<br>
&gt; also your claim about JS should be investigated because I do not think it<br>
&gt; should be the case.<br>
&gt; but you may want to move this to a jira <a href="http://jira.freeswitch.org" target="_blank">http://jira.freeswitch.org</a><br>
&gt;<br>
&gt; As for the asterisk comparison,<br>
&gt; not sure how to answer you, that&#39;s your decision.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Dec 7, 2009 at 9:28 AM, eaf &lt;<a href="mailto:erandr-junk@usa.net">erandr-junk@usa.net</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Here is what I found...<br>
&gt;&gt;<br>
&gt;&gt; I tried high-priority scheduling as per your suggestion, reniced the<br>
&gt;&gt; program<br>
&gt;&gt; explicitly, rewrote timer thread to sleep on cond. variable and activate<br>
&gt;&gt; only when there are timers and only when the timer actually had to be<br>
&gt;&gt; clicked, turned off SQL thread and removed polling from sofia profile<br>
&gt;&gt; thread.<br>
&gt;&gt;<br>
&gt;&gt; That pretty much eliminated all idle 1ms sleepers that were there except<br>
&gt;&gt; for<br>
&gt;&gt; three in sofia itself (su_epoll_port). And when I was about to be happy,<br>
&gt;&gt; I<br>
&gt;&gt; found that two outgoing calls through my VOIP providers when bridged<br>
&gt;&gt; together showed terrible distortions. I undid all my changes, tried<br>
&gt;&gt; 1.0.4,<br>
&gt;&gt; trunk (noticed btw that when I bridge two calls via loopback in JS in the<br>
&gt;&gt; trunk I must keep JS running, or the calls get terminated - NOT the same<br>
&gt;&gt; as<br>
&gt;&gt; in 1.0.4 where exitting JS left calls running), got pretty much the same<br>
&gt;&gt; sad<br>
&gt;&gt; results. At the same time calls bridged by freeswitch between LAN and any<br>
&gt;&gt; of<br>
&gt;&gt; the VOIP providers behaved just fine. And calls bridged by Asterisk any<br>
&gt;&gt; way<br>
&gt;&gt; were fine too. So that pretty much looked like the end of the freeswitch<br>
&gt;&gt; trials for me.<br>
&gt;&gt;<br>
&gt;&gt; But then I timed your code, mine and found that all those 1ms sleeps that<br>
&gt;&gt; your timer thread was doing (and all those pollers were doing as well)<br>
&gt;&gt; were<br>
&gt;&gt; actually 4ms sleeps because you know what unless kernel is configured<br>
&gt;&gt; with<br>
&gt;&gt; HZ=1000, you can&#39;t sleep for less than 4ms (HZ=250) or perhaps even 10ms<br>
&gt;&gt; (HZ=100). Mine was 250.<br>
&gt;&gt;<br>
&gt;&gt; This actually meant that the original timer thread was firing once,<br>
&gt;&gt; sleeping<br>
&gt;&gt; for 4ms, firing 3 more times back-to-back, sleeping for 4ms more, firing<br>
&gt;&gt; 4<br>
&gt;&gt; times back-to-back, etc. It was still firing 20ms timers on time, but<br>
&gt;&gt; 30ms<br>
&gt;&gt; ones of course were not, since 30ms doesn&#39;t divide by 4 evenly. Plus<br>
&gt;&gt; whoever<br>
&gt;&gt; relied on runtime.reference or switch_micro_time_now() were kind of<br>
&gt;&gt; screwed<br>
&gt;&gt; because both were running jumpy. Plus whoever assumed that<br>
&gt;&gt; apr_sleep(1000)<br>
&gt;&gt; or cond_yield() was sleeping for 1ms were also in for a surprise. It felt<br>
&gt;&gt; satisfying to find that, however it didn&#39;t explain why the same<br>
&gt;&gt; distortions<br>
&gt;&gt; were observed with rewritten timer thread and disabled RTP timers.<br>
&gt;&gt;<br>
&gt;&gt; Anyway, I sighed (pretty much like you) and recompiled the kernel with<br>
&gt;&gt; HZ=1000. Recompiling kernel on these ALIX boards is fun. If smth goes<br>
&gt;&gt; south,<br>
&gt;&gt; you need to hook up serial console and see what the heck went wrong.<br>
&gt;&gt;<br>
&gt;&gt; That eliminated distortions, ha! But made freeswitch more CPU hungry. Now<br>
&gt;&gt; the remaining 1ms threads sitting in sofia epoll were really polling for<br>
&gt;&gt; 1ms, not 4, and freeswitch was consistently sitting in the first line of<br>
&gt;&gt; the<br>
&gt;&gt; top chart showing 3% CPU utilization when idle.<br>
&gt;&gt;<br>
&gt;&gt; Don&#39;t know whether it&#39;s because of the remaining epolls in sofia or<br>
&gt;&gt; whether<br>
&gt;&gt; it&#39;s because there are still some threads left in freeswitch that I<br>
&gt;&gt; neglected to change because they were sleeping with 100ms interval, so I<br>
&gt;&gt; figured, who cares. Maybe when all things come together (sofia, 100ms*N)<br>
&gt;&gt; freeswitch ends up spending 3% of CPU while doing pretty much nothing.<br>
&gt;&gt;<br>
&gt;&gt; Btw, compared with Asterisk, the latter is not even visible on the first<br>
&gt;&gt; top&#39;s screen and spends 1% CPU when bridging two G711 calls and recording<br>
&gt;&gt; them to disk.<br>
&gt;&gt;<br>
&gt;&gt; So, at this time I have both original Asterisk and FS setups running. One<br>
&gt;&gt; is<br>
&gt;&gt; seemless but clumsy in configuration, the other one is neat and stylish<br>
&gt;&gt; but<br>
&gt;&gt; too preoccupied with smth... Should I look into sofia epollers? That&#39;s<br>
&gt;&gt; kind<br>
&gt;&gt; of deep in the code. Or should I just stick with Asterisk?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Anthony Minessale-2 wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; There is another user here with a 300mhz box.  I am willing to<br>
&gt;&gt; investigate<br>
&gt;&gt; &gt; this improved performance for weak devices but I need to do it in a<br>
&gt;&gt; sane<br>
&gt;&gt; &gt; cross-platform way.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Fri, Dec 4, 2009 at 1:32 PM, Yossi Neiman<br>
&gt;&gt; &gt; &lt;<a href="mailto:freeswitch@cartissolutions.com">freeswitch@cartissolutions.com</a><br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; A word to the wise to the general FreeSWITCH community:  If Anthony<br>
&gt;&gt; &gt;&gt; Minessale suggests that you try to do any number of things, it&#39;s a<br>
&gt;&gt; very<br>
&gt;&gt; &gt;&gt; good idea to try all those ideas before continuing on.  I&#39;ve known<br>
&gt;&gt; him,<br>
&gt;&gt; &gt;&gt; MikeJ, and bkw for several years, and they almost always have very<br>
&gt;&gt; good<br>
&gt;&gt; &gt;&gt; ideas as to troubleshoot a problem in FreeSWITCH.  It&#39;s extremely<br>
&gt;&gt; &gt;&gt; frustrating to try to help people out who won&#39;t try the provided<br>
&gt;&gt; &gt;&gt; suggestions first.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; And note directly to &quot;eaf&quot; - bogomips is quite possibly the least<br>
&gt;&gt; &gt;&gt; significant bit of data about a cpu that you will get out of<br>
&gt;&gt; &gt;&gt; /proc/cpuinfo...  The name itself - bogo, means bogus.<br>
&gt;&gt; &gt;&gt; <a href="http://en.wikipedia.org/wiki/Bogomips" target="_blank">http://en.wikipedia.org/wiki/Bogomips</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; -Yossi<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; FreeSWITCH-users mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt; &gt;&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt; &gt;&gt; UNSUBSCRIBE:<br>
&gt;&gt; <a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt; &gt;&gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Anthony Minessale II<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; FreeSWITCH <a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org/</a><br>
&gt;&gt; &gt; ClueCon <a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com/</a><br>
&gt;&gt; &gt; Twitter: <a href="http://twitter.com/FreeSWITCH_wire" target="_blank">http://twitter.com/FreeSWITCH_wire</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; AIM: anthm<br>
&gt;&gt; &gt; <a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>
&gt;&gt; &lt;<a href="mailto:MSN%253Aanthony_minessale@hotmail.com">MSN%3Aanthony_minessale@hotmail.com</a>&gt;&lt;<br>
</div></div>&gt;&gt; <a href="mailto:MSN%253Aanthony_minessale@hotmail.com">MSN%3Aanthony_minessale@hotmail.com</a>&lt;<a href="mailto:MSN%25253Aanthony_minessale@hotmail.com">MSN%253Aanthony_minessale@hotmail.com</a>&gt;<br>

<div class="im">&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a>&lt;<a href="mailto:PAYPAL%253Aanthony.minessale@gmail.com">PAYPAL%3Aanthony.minessale@gmail.com</a>&gt;<br>

</div>&gt;&gt; &lt;<a href="mailto:PAYPAL%253Aanthony.minessale@gmail.com">PAYPAL%3Aanthony.minessale@gmail.com</a>&lt;<a href="mailto:PAYPAL%25253Aanthony.minessale@gmail.com">PAYPAL%253Aanthony.minessale@gmail.com</a>&gt;<br>

<div class="im">&gt;&gt; &gt;<br>
&gt;&gt; &gt; IRC: <a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a> #freeswitch<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; FreeSWITCH Developer Conference<br>
&gt;&gt; &gt; <a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br>
&gt;&gt; &lt;<a href="mailto:sip%253A888@conference.freeswitch.org">sip%3A888@conference.freeswitch.org</a>&gt;&lt;<br>
</div>&gt;&gt; <a href="mailto:sip%253A888@conference.freeswitch.org">sip%3A888@conference.freeswitch.org</a>&lt;<a href="mailto:sip%25253A888@conference.freeswitch.org">sip%253A888@conference.freeswitch.org</a>&gt;<br>
<div class="im">&gt;&gt; &gt;<br>
&gt;&gt; &gt; <a href="http://iax:guest@conference.freeswitch.org/888" target="_blank">iax:guest@conference.freeswitch.org/888</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; <a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a>&lt;<a href="mailto:googletalk%253Aconf%252B888@conference.freeswitch.org">googletalk%3Aconf%2B888@conference.freeswitch.org</a>&gt;<br>

</div>&gt;&gt; &lt;<a href="mailto:googletalk%253Aconf%252B888@conference.freeswitch.org">googletalk%3Aconf%2B888@conference.freeswitch.org</a>&lt;<a href="mailto:googletalk%25253Aconf%25252B888@conference.freeswitch.org">googletalk%253Aconf%252B888@conference.freeswitch.org</a>&gt;<br>

<div><div></div><div class="h5">&gt;&gt; &gt;<br>
&gt;&gt; &gt; pstn:213-799-1400<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; FreeSWITCH-users mailing list<br>
&gt;&gt; &gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt; &gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt; &gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; View this message in context:<br>
&gt;&gt; <a href="http://old.nabble.com/Choppy-sound-with-PCMU-tp26594250p26678873.html" target="_blank">http://old.nabble.com/Choppy-sound-with-PCMU-tp26594250p26678873.html</a><br>
&gt;&gt; Sent from the Freeswitch-users mailing list archive at Nabble.com.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; FreeSWITCH-users mailing list<br>
&gt;&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Anthony Minessale II<br>
&gt;<br>
&gt; FreeSWITCH <a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org/</a><br>
&gt; ClueCon <a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com/</a><br>
&gt; Twitter: <a href="http://twitter.com/FreeSWITCH_wire" target="_blank">http://twitter.com/FreeSWITCH_wire</a><br>
&gt;<br>
&gt; AIM: anthm<br>
&gt; <a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a> &lt;<a href="mailto:MSN%253Aanthony_minessale@hotmail.com">MSN%3Aanthony_minessale@hotmail.com</a>&gt;<br>
&gt; GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a>&lt;<a href="mailto:PAYPAL%253Aanthony.minessale@gmail.com">PAYPAL%3Aanthony.minessale@gmail.com</a>&gt;<br>
&gt; IRC: <a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a> #freeswitch<br>
&gt;<br>
&gt; FreeSWITCH Developer Conference<br>
&gt; <a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a> &lt;<a href="mailto:sip%253A888@conference.freeswitch.org">sip%3A888@conference.freeswitch.org</a>&gt;<br>
&gt; <a href="http://iax:guest@conference.freeswitch.org/888" target="_blank">iax:guest@conference.freeswitch.org/888</a><br>
&gt; <a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a>&lt;<a href="mailto:googletalk%253Aconf%252B888@conference.freeswitch.org">googletalk%3Aconf%2B888@conference.freeswitch.org</a>&gt;<br>

&gt; pstn:213-799-1400<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; FreeSWITCH-users mailing list<br>
&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
&gt;<br>
&gt;<br>
<br>
--<br>
</div></div>View this message in context: <a href="http://old.nabble.com/Choppy-sound-with-PCMU-tp26594250p26684048.html" target="_blank">http://old.nabble.com/Choppy-sound-with-PCMU-tp26594250p26684048.html</a><br>
<div><div></div><div class="h5">Sent from the Freeswitch-users mailing list archive at Nabble.com.<br>
<br>
<br>
_______________________________________________<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Anthony Minessale II<br><br>FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
Twitter: <a href="http://twitter.com/FreeSWITCH_wire">http://twitter.com/FreeSWITCH_wire</a><br><br>AIM: anthm<br><a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch<br><br>FreeSWITCH Developer Conference<br><a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br><a href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a><br>pstn:213-799-1400<br>