[Asterisk-Dev] Re: New h.323 channel driver
Craig Southeren
craigs at postincrement.com
Wed May 11 21:16:53 MST 2005
On Thu, 12 May 2005 10:10:15 +0600
"Paul Cadach" <paul at odt.east.telecom.kz> wrote:
..deleted
> > In my past experience, these kinds of problems with OpenH323
> > applications have been caused by subtle race conditions in the
> > application code associated with call shutdown.
>
> You're right. 90% of all existing problems caused by application design and OS-specific "features". OpenH323 itself is
> very solid and mostly stable for basic call handling, when application is native OpenH323. But for Asterisk there is
> many problems caused chan_h323/chan_oh323/etc. isn't native OpenH323 application.
The word "application" in my previous email referred to "OpenH323
application", which in this context would mean chan_h323/chan_h323 etc
> > I've not seen any problems in the OpenH323 cleanup thread for many years.
> > That code has been tested and reviewed sixteen different ways from zero,
> > and I know of many companies who use OpenH323 for 100+ simultaneous
> > calls with application run-times measured in months without any problems
>
> Just try to run callgen323 to callgen323 with tracing on both ends under VMware, where context switches is much more
> costly than under real CPU. You can easily get very high CPU load (15-30 on about 20-50 simultaneous calls), then you
> will raise all sort of misoperations the library and an application.
I agree that turning on full debugging certainly does consume a lot of
CPU and will reduce the number of simultaneous calls that can be handled
However, it should not cause the stack to crash. If you are getting such
a crash, and you are sure it is not in the application, then lets get it
fixed.
> Probably cleaner thread problems caused by verbose tracing used to debug threads/VMware/etc only. Cleanup thread is
> single thread while call handling uses much more threads and therefore have most of CPU time used by call handling. On
> call cleanup there is one time-consuming place when cleaner thread terminates H.245 thread and waits up to 10 seconds
> for exhanging of final messages. Under high load and slow context switches list of calls to be cleaned enlarges too
> much, application eats all available file descriptors and being to have problems.
See above.
I agree that running high call volumes with full debugging will cause
the stack to run slower, because it introduces hundreds of
synchronisation points. I don't see any way to avoid that.
Craig
-----------------------------------------------------------------------
Craig Southeren craigs at postincrement.com / craigs at voxgratia.org
Phone: +61 243654666 ICQ: #86852844
Fax: +61 243673140 MSN: craig_southeren at hotmail.com
Mobile: +61 417231046 Jabber: craigs at jabber.voxgratia.org
Post Increment - Consulting & Services http://www.postincrement.com
Vox Gratia - The Open Source VoIP portal http://www.voxgratia.org
Raving Of A Strange Mind - the VoIP blog http://www.southeren.com/blog
More information about the asterisk-dev
mailing list