Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-26 Thread Matt Roth

Waldo,

Thanks for the information. If you don't mind answering: are you guys 
developing this solution for your internal needs (meaning serving UAs 
from within your enterprise) or are you planning on offering services 
to the public?


This solution is being developed for our internal needs.

It's not that I'm really interested in your business or business 
model. I'm mainly curious to know how you will deal with potential UAs 
that are behind external NATs. Will you Asterisk farm stand behind a 
NAT or will it all be publicly accessible where no NAT translation 
or port forwarding will exist? I read the section on Asterisk and NAT 
on the wiki but still left me with some open questions.


Our SIP traffic will never leave our internal network.  There will be no 
NAT/firewalls to traverse.  Calls to/from the PSTN will pass through a 
Cisco AS5400HPX Universal Gateway that handles the TDM/VoIP translation.


In my particular setup, I work in a small call center. I have Asterisk 
behind one NAT with port forwarding on port 5060 and ports 
1-2, only because I have 2 remote agents. The rest of the 
agents are in-house. The remote agents themselves are behind other 
NATs (behind their DSL service provider). Some times my Asterisk 
queues have trouble contacting the remote agents. At first, I thought 
I could simply put a SER server on the public edge, but I'm not sure 
if that will really solve the problem. I question this setup in terms 
of stability and security. Even worse, what would happen if my boss 
decides to increase the remote agents?


I spoke to you privately about this and suggested using the IAX protocol 
with IAXy devices, but you indicated you needed to use SIP.  Since we 
are not dealing with remote agents in our implementation, that is really 
all I can offer.  I hope that the list members will be able to help you 
solve your problem.


Sincerely,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-23 Thread Waldo Rubinstein
Matt,Thanks for the information. If you don't mind answering: are you guys developing this solution for your internal needs (meaning serving UAs from within your enterprise) or are you planning on offering services to the public?It's not that I'm really interested in your business or business model. I'm mainly curious to know how you will deal with potential UAs that are behind external NATs. Will you Asterisk "farm" stand behind a NAT or will it all be "publicly" accessible where no NAT translation or port forwarding will exist? I read the section on Asterisk and NAT on the wiki but still left me with some open questions.In my particular setup, I work in a small call center. I have Asterisk behind one NAT with port forwarding on port 5060 and ports 1-2, only because I have 2 remote agents. The rest of the agents are in-house. The remote agents themselves are behind other NATs (behind their DSL service provider). Some times my Asterisk queues have trouble contacting the remote agents. At first, I thought I could simply put a SER server on the public edge, but I'm not sure if that will really solve the problem. I question this setup in terms of stability and security. Even worse, what would happen if my boss decides to increase the remote agents?Thanks again,WaldoOn Sep 22, 2005, at 7:24 PM, Matt Roth wrote:  Waldo,  - Is your solution 100% Asterisk or are you using other "helpers" such as SER or XXXproxy or whatever?  We are not using SER or XXXproxy.  We are using a Cisco AS5400HPX Universal Gateway to terminate our Ts. The gateway sends SIP traffic to the Asterisk server, from which point we are 100% Asterisk.  We are also a 100% open implementation, from hardware specs to software configurations.  Right now I'm a little bogged down with development and I have a deadline looming over my head, but in general if you want to know something just ask and I'll do my best to provide a quick response. ___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread lenz


Hello Matt,
very interesting setup! are you using asteriak queues for inbound or not  
at all?

Bye
l.

In data Thu, 22 Sep 2005 06:25:44 +0200, Matt Florell [EMAIL PROTECTED]  
ha scritto:

We wrote VICIDIAL(part of the GPL astGUIclient suite
http://astguiclient.sf.net) for our call center operations. Yes it does  
use

a central queue and does not use Asterisk queues or agents. The system is
based on a MySQL database and meetme rooms for the agents that use a
web-client app for lead information and call control.

We mostly do outbound and the volume is split across several servers, and
for inbound we do have forwarding to other servers if the defined  
capacity

is exceeded a certain point.

As for our distributed recording approach, it's easy with meetme rooms to
record a call on one server from another server, you just drop a call  
into
the meetme room that is a monitor exten on another server over IAX2,  
TDMoE

or a crossover Zap T1 connection.

As for phone calls at one time: for inbound we almost never exceed 50  
agents

on a single server with no more than 72 incoming lines live at once. Our
average is actually much less than that. For outbound we usually have  
about
15-40 agents per server with upto 96 lines dialing out concurrently. At  
our

main office location we've had over 100 agents on at one time across 6
Asterisk servers handling over 350 calls at once with a total of more  
than

550 live channels on our Asterisk servers(includes recording, client and
trunk channels).



--
Assum est, versa et manduca.
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread Scott Laird


On Sep 21, 2005, at 1:46 AM, Zoa wrote:



True...  But i tried several brands of cards, and several drivers, the
dual nic gigabit intel card was a lot better than all the other
combinations i tried.


Fun fact: short of buying a 10gigE card, your best performance will  
probably be from a cheap desktop board with Intel's on-board GigE  
chip connected via the CSA bus.  It bypasses the PCI bus entirely  
and drops packets straight onto the north bridge; this gives it a  
surprisingly large performance boost.  Only Intel would make its  
cheapest board outperform its more expensive server-grade solutions. :-)


In general, Intel's GigE cards are pretty good, and they're under  
$50.  It's hard to justify buying anything cheaper when you care  
about performance and reliability.



Scott
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread Waldo Rubinstein
Hi Matt,Is your solution 100% Asterisk or are you using other "helpers" such as SER or XXXproxy or whatever?Thanks,WaldoOn Sep 21, 2005, at 12:45 PM, Matt Roth wrote:All,  This message has generated a lot of responses, so I'm going to address each of them here in an attempt to consolidate the thread.   ___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread Matt Florell
We are 100% Asterisk on the VOIP side. We use SIP, IAX and Zap(channelbanks) for phones and Zap T1s for telco termination.

MATT---On 9/22/05, Waldo Rubinstein [EMAIL PROTECTED] wrote:
Hi Matt,Is your solution 100% Asterisk or are you using other helpers such as SER or XXXproxy or whatever?Thanks,Waldo
On Sep 21, 2005, at 12:45 PM, Matt Roth wrote:
All, 
 
This
message has generated a lot of responses, so I'm going to address each
of them here in an attempt to consolidate the thread. 
 
 
___--Bandwidth and Colocation sponsored by Easynews.com
 --Asterisk-Users mailing listAsterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-usersTo UNSUBSCRIBE or update options visit:  
http://lists.digium.com/mailman/listinfo/asterisk-users
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread steve


 - The reason i recommended you to use a ramdisk is because i think the
 - problem with recording to disk is saving 20ms of stream 1, then 20 ms of
 - stream 2, then 20ms of stream 3 etc etc meaning you write everytime
 - very small things. (with a lot of seeking).


I was thinking about this idly in the car yesterday, and imagined that we 
could send all the Monitor audio out in a single multiplexed stream into a 
single file.  

Then we can either dumultiplex after, or reassemble the audio stream on
the fly during playback.  Generally more is recorded than listened to.

Steve

___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread Matt Roth

Hi everyone,

This is just another attempt to address everybody in one place and 
consolidate the thread.




Zoa,

- I think its the best you can do.
If something pops into your head, even if it's off the wall, don't 
hesitate to share it.  Any idea is better than no idea if things go south.


- Maybe there should be some option to be set for the monitor command to
- buffer, with a warning that it will eat memory.
- Its also not needed to buffer the complete call at once, just buffering
- and writing to disk every 10 seconds would already be a big improvement,
- and since the calls won't all start at the same time, the writing to
- disk will be spread over time.
This would be a nice option. res_monitor.c is using ast_writefile() to 
handle writing each call leg to file. Maybe a more specialized file 
writing function that includes buffering or threading is all that is needed.


- Good luck with the implementation, let us know how it turns out!
- Try to find out what happens if the nfs share is gone, or overloaded too.
Thanks. The information provided by members of this list is invaluable, 
so I'll be sure to keep you informed of our progress. The plan is to 
have the application that is called via the MONITOR_EXEC hook verify the 
NFS mount before the copy. If it's not there it'll have to write locally 
until the problem is resolved.


The NFS mount will have it's own dedicated network interface (an Intel 
Pro 1000 MT) communicating to the digital recording server over a 
Gigabit connection.  That should be sufficient.


- If there is no zaptel hardware involved, i don't think you have to be
- too concerned about the network cards interrupts.
Nope, we're terminating our Ts in a Cisco AS5400HPX Universal Gateway 
and using ztdummy as a timing source for music on hold. Our Asterisk 
server (a Dell PowerEdge 6850) has configurable IRQs, so I can fix any 
conflicts that may arise with other hardware relatively easily.




Matt,

- Have you tried recording directly to GSM format? It will help reduce the
- bottleneck on disk IO although it will use more CPU cycles(in your case
- on a RAM drive this may not help at all)
We don't want to do any transcoding on the Asterisk server because of 
the drain on CPU. The RAM disk seems to be the best solution for our 
scenario.


- (Regarding Avoided deadlock warnings and their effects)
- There aren't always audio skips but they do happen more when you get more
- ast_channel_walk warnings. The audio gaps are usually less than a quarter
- second in our experience but can be upto a second depending on the
- severity of the IO problem at that instance. It's very hard to test for
- until you get into production and you have real conversations and real
- people listening to them that can hear the audio skips.
Thank you for this information. It seems like the warnings won't cause 
any unacceptable results, but we'll be listening to the audio regularly 
after we go into production.


- We have sevaral call centers as well, and we just restrict a single server
- to 50 recordings at once and then we would pass the next recording as an
- IAX2 channel to another recording server. It's a scalable system for us
- that is relatively cheap and works well since we can mix and gsm-encode
- the audio on these multiple servers at night when not in production
- leaving the NSF server just for storage and not audio processing.
That is a smart solution. Thanks for sharing it. If we have any problems 
with our setup we may start looking in this direction.


- (Regarding queue management, call volume, and system architecture of
-  his Asterisk setup)
- We wrote VICIDIAL(part of the GPL astGUIclient suite
- http://astguiclient.sf.net) for our call center operations. Yes it does
- use a central queue and does not use Asterisk queues or agents. The
- system is based on a MySQL database and meetme rooms for the agents that
- use a web-client app for lead information and call control.
We'll have to take a look at your work. We have to manage multiple 
queues and plan on using Asterisk queues and agents on our single 
Asterisk server.


- We mostly do outbound and the volume is split across several servers, and
- for inbound we do have forwarding to other servers if the defined
- capacity is exceeded a certain point.
How are you calculating this capacity?

- As for our distributed recording approach, it's easy with meetme rooms to
- record a call on one server from another server, you just drop a call into
- the meetme room that is a monitor exten on another server over IAX2, TDMoE
- or a crossover Zap T1 connection.
Great idea. Once again, if we have problems with our implementation it's 
great to have this alternative path to explore.


- As for phone calls at one time: for inbound we almost never exceed 50
- agents on a single server with no more than 72 incoming lines live at 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-22 Thread Matt Florell
On 9/22/05, Matt Roth [EMAIL PROTECTED] wrote:
Matt,- Have you tried recording directly to GSM format? It will help reduce the
- bottleneck on disk IO although it will use more CPU cycles(in your case- on a RAM drive this may not help at all)We don't want to do any transcoding on the Asterisk server because ofthe drain on CPU. The RAM disk seems to be the best solution for our
scenario.
That's pretty much what I though, wanted to mention it though. 
- (Regarding Avoided deadlock warnings and their effects)- There aren't always audio skips but they do happen more when you get more
- ast_channel_walk warnings. The audio gaps are usually less than a quarter- second in our experience but can be upto a second depending on the- severity of the IO problem at that instance. It's very hard to test for
- until you get into production and you have real conversations and real- people listening to them that can hear the audio skips.Thank you for this information. It seems like the warnings won't causeany unacceptable results, but we'll be listening to the audio regularly
after we go into production.
When we traced the recording skips back to an exact time there is
always a ast_channel_walk warning in the logs, although there is not
always an audio skip if the warning appears, but the more of those
warnings, the more skips we got.

- We mostly do outbound and the volume is split across several servers, and- for inbound we do have forwarding to other servers if the defined
- capacity is exceeded a certain point.How are you calculating this capacity?
Trial and error, astGUIclient/VICIDIAL has a very detailed
system performance logging utility built into it that tracks open
asterisk channels, ram, CPU use %, system load and a few other things
and we were best able to find a good and safe capacity at which to
limit our systems to ensure reliability:
http://astguiclient.sourceforge.net/VDreports/performance_new.gif

- As for phone calls at one time: for inbound we almost never exceed 50- agents on a single server with no more than 72 incoming lines live at
once.- Our average is actually much less than that. For outbound we usually have- about 15-40 agents per server with upto 96 lines dialing outconcurrently.- At our main office location we've had over 100 agents on at one time
across- 6 Asterisk servers handling over 350 calls at once with a total ofmore than- 550 live channels on our Asterisk servers(includes recording, client and- trunk channels).I hope you don't mind answering some questions about your setup.
It seems like you have really solid numbers to work with. We'reimplementing our own reporting (both real-time and next-day) usingAsterisk's call detail records (stored in a MySQL database) andinformation captured from the management interface (via AstManProxy).
Are we reinventing the wheel? Do you have any tips for us in regards toour reporting software?
We don't use any Asterisk-generated logs, they didn't offer enough
information for us, so we created several of our own MySQL logs for
calls and Manager actions that we use to track every action that
happens across all systems as well as all live calls that are occuring
in real-time on all systems. This allows VICIDIAL to have real-time
status screens and datetime-level statistical performance reports
available any time you want to pull them. As for tips, just log
everything, you may not think you need it now but you will eventually
want just about every little piece of call and action information that
you can get your hands on for reporting.
I'm assuming you are using VICIDIAL as a predictive dialer inconjunction with Asterisk for your outbound calling. We are looking for
an outbound dialing solution. Could you please provide a list of theabilities and limitations of VICIDIAL?
Well, since we wrote VICIDIAL we are a little biased :) it is free and
GPL so you won't get many of the pretty features you get with those
expensive dialer solutions, but you can tinker with it all you like.
We've been using it for about 2 years in production and now have it on
over 200 seats across 4 locations for our company. There are also over
50 production VICIDIAL installations in over a dozen countries that we
know about. It works better for us than any of the dialer systems we
used to use and we have total control over it which makes it easier to
change things on the fly. There are limitations and things that
we have not gotten around to writing yet, but there is an active
community around it and we are developing new features for it all the
time and releasing a new version every 2-8 weeks. One limitation is
Answering Machine detection. We haven't found a good method of doing
this and we don't like the delay that all commercial systems have when
doing AM detection so we just do a dial timeout by default, about 4-5
rings will eliminate 90% of the answering machines you receive without
any delay in the calls that are answered by a human. For other features
see the product page:

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Zoa


Hey ho,

I suppose you are the person from the digium forum :)

The reason i recommended you to use a ramdisk is because i think the
problem with recording to disk is saving 20ms of stream 1, then 20 ms of
stream 2, then 20ms of stream 3 etc etc meaning you write everytime
very small things. (with a lot of seeking).
Our best test results were with:

- buffering the recordings to a ramdisk, then
- on low load (at night) copy the files over the network (easy to shape
the pipe, so that you dont overload anything), This way, the memory
buffer will take care of the 'fragmentation' and not your harddisk.
- on the remove server, do all the mixing / indexing etc. (i really
don't mixing or converting between audio formats on the same server as
asterisk).

If you want to go even freakier, run asterisk (or you complete distro)
from a ramdisk.

Oh, another thing, for the people trying this the performance of hdparm
is not linear with the quality of your calls, tweaking your disks to be
faster will not help for asterisk when you do a copy. (in general).

I thought over your suggestion to use a sniffer to do the recordings,
you might pull it off, but will have to write your own to do so. (or go
to the expensive version of commercial sniffer applications).

Zoa.

-
www.asteriskguru.com


Matt Florell wrote:


On 9/20/05, *Matt Roth* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]
wrote:

Patrick,

Thank you for your suggestions.

Our initial runs were recording directly to an NFS mount and they
experienced the same problems as recording to the local disk.  In
our final setup, the copy will be done to an NFS mount as long as
it exists, falling back to local disk only when the NFS server is
down.

The theory that we're running on is that any I/O bottlenecks (or
network latencies in the case of NFS) only matter when they are
bound to a call in progress.  In that scenario, the bottleneck
would introduce a latency in Asterisk's handling of the RTP
packets causing call degradation and drops.  By decoupling I/O
from live calls and performing the copies (a very lightweight
operation) in a separate process, we hope to not affect Asterisk's
real-time handling of the RTP packets.

Because of limited access to the test equipment, we were only able
to test up to storing the digital recordings on a RAM disk. Please
shoot holes in this setup if you see any weaknesses.  Better today
than on our go-live date.

Thanks,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer


 Hello,

I'm very interested in the specifics of your setup.
How much space is on the RAM disk?
What kind of RAM drive is it?
What format are you recording to?
What codec are the SIP calls being placed over?

We've run into the Avoided deadlock recording issues several times
when trying to do more than 50 concurrent recordings. Changing the
ast_channel_lock loop from 10 to 20 has helped somewhat reduce the
warnings and reduce audio gaps on the recordings, but what is really
needed for more robust recording is a configurable recording buffer
that wouldn't freak out if a 10ms delay occurs.

Good luck and please keep us updated on your progress,

MATT---





___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users





signature.asc
Description: OpenPGP digital signature
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread trixter http://www.0xdecafbad.com
On Wed, 2005-09-21 at 10:07 +0300, Zoa wrote: 
 The reason i recommended you to use a ramdisk is because i think the
 problem with recording to disk is saving 20ms of stream 1, then 20 ms of
 stream 2, then 20ms of stream 3 etc etc meaning you write everytime
 very small things. (with a lot of seeking).
 Our best test results were with:
 
filesystems are also a consideration with larger scale projects.
Different filesystems add different amounts of overheads on different
types of operations.  Some are faster at moving small files around
others faster with large files.  This adds to the disk latency.
Removing the disk latency itself is a good thing, since that is
typically slower, but to crank out that last little bit of performance
some research into the different filesystems under the specific kernel
that you are using could also be a consideration.  The most obvious
(and easiest to update a running system) is to remove things like atime,
whih with most linux distros is on by default.  This causes a write
operation for the read of a file to update the last time accessed.  A
couple little things can add up to a few percent improvement and
generally make the cost go down.


 - buffering the recordings to a ramdisk, then
 - on low load (at night) copy the files over the network (easy to shape
 the pipe, so that you dont overload anything), 
Or have a seperate network set up (dual nic card for example) where the
2nd network is used just for NFS traffic.  Although NFS generally is
ugly network wise, it is standard and makes things easier.  Just gotta
watch the IO on the system given that the network card itself will cause
cpu cycles to be used, but lets face it cpu is cheap now.  Different
drivers also work differently, and then with the 2.6 series kernels you
can use device polling instead of interupts which can help a little.



 If you want to go even freakier, run asterisk (or you complete distro)
 from a ramdisk.
 
When you say ramdisk here I assume you mean using conventional ram, its
cheap yes but its volatile, do you have any plans for failure of the
system or ram?  Or is the data integrity itself not as critical?  The
reason that people like hard drives is because most of the time if the
system goes down for any reason the data is still intact.  


 I thought over your suggestion to use a sniffer to do the recordings,
 you might pull it off, but will have to write your own to do so. (or go
 to the expensive version of commercial sniffer applications).
 
isnt vomit free?  It was a voip sniffer that worked with some codecs
many years ago (I wanna say mid-late 90s but I may be thinking of
another back then). http://vomit.xtdnet.nl/ does G.711 only.

The bigger prIoblem that I see is that sniffers dont always get all the
traffic that is on a network particularly when the network has more
traffic on it.  While this generally isnt a concern and I would like to
think that even a poorly configured network could allow for 512 calls,
it is a factor to implement this type of a solution.

-- 
Trixter http://www.0xdecafbad.com Bret McDanel
UK +44 870 340 4605   Germany +49 801 777 555 3402
US +1 360 207 0479 or +1 516 687 5200
FreeWorldDialup: 635378


signature.asc
Description: This is a digitally signed message part
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Zoa


Also when you do things over the network, disable your onboard network
card, and go for some more expensive network card.
In our tests with small packets, we could increase the throughput with a
factor 2. (related to cpu load).

Zoa.

--
www.asteriskguru.com

trixter http://www.0xdecafbad.com wrote:


On Wed, 2005-09-21 at 10:07 +0300, Zoa wrote:



The reason i recommended you to use a ramdisk is because i think the
problem with recording to disk is saving 20ms of stream 1, then 20 ms of
stream 2, then 20ms of stream 3 etc etc meaning you write everytime
very small things. (with a lot of seeking).
Our best test results were with:




filesystems are also a consideration with larger scale projects.
Different filesystems add different amounts of overheads on different
types of operations.  Some are faster at moving small files around
others faster with large files.  This adds to the disk latency.
Removing the disk latency itself is a good thing, since that is
typically slower, but to crank out that last little bit of performance
some research into the different filesystems under the specific kernel
that you are using could also be a consideration.  The most obvious
(and easiest to update a running system) is to remove things like atime,
whih with most linux distros is on by default.  This causes a write
operation for the read of a file to update the last time accessed.  A
couple little things can add up to a few percent improvement and
generally make the cost go down.





- buffering the recordings to a ramdisk, then
- on low load (at night) copy the files over the network (easy to shape
the pipe, so that you dont overload anything),



Or have a seperate network set up (dual nic card for example) where the
2nd network is used just for NFS traffic.  Although NFS generally is
ugly network wise, it is standard and makes things easier.  Just gotta
watch the IO on the system given that the network card itself will cause
cpu cycles to be used, but lets face it cpu is cheap now.  Different
drivers also work differently, and then with the 2.6 series kernels you
can use device polling instead of interupts which can help a little.






If you want to go even freakier, run asterisk (or you complete distro)
from a ramdisk.




When you say ramdisk here I assume you mean using conventional ram, its
cheap yes but its volatile, do you have any plans for failure of the
system or ram?  Or is the data integrity itself not as critical?  The
reason that people like hard drives is because most of the time if the
system goes down for any reason the data is still intact.





I thought over your suggestion to use a sniffer to do the recordings,
you might pull it off, but will have to write your own to do so. (or go
to the expensive version of commercial sniffer applications).




isnt vomit free?  It was a voip sniffer that worked with some codecs
many years ago (I wanna say mid-late 90s but I may be thinking of
another back then). http://vomit.xtdnet.nl/ does G.711 only.

The bigger prIoblem that I see is that sniffers dont always get all the
traffic that is on a network particularly when the network has more
traffic on it.  While this generally isnt a concern and I would like to
think that even a poorly configured network could allow for 512 calls,
it is a factor to implement this type of a solution.





___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users





signature.asc
Description: OpenPGP digital signature
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread trixter http://www.0xdecafbad.com
On Wed, 2005-09-21 at 11:11 +0300, Zoa wrote:
 Also when you do things over the network, disable your onboard network
 card, and go for some more expensive network card.
 In our tests with small packets, we could increase the throughput with a
 factor 2. (related to cpu load).

I wonder how much of that is a poorly written driver and not the card
itself.  I have seen some fairly poor drivers performance wise.  :/ 


-- 
Trixter http://www.0xdecafbad.com Bret McDanel
UK +44 870 340 4605   Germany +49 801 777 555 3402
US +1 360 207 0479 or +1 516 687 5200
FreeWorldDialup: 635378


signature.asc
Description: This is a digitally signed message part
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Zoa


True...  But i tried several brands of cards, and several drivers, the
dual nic gigabit intel card was a lot better than all the other
combinations i tried.

zoa

trixter http://www.0xdecafbad.com wrote:


On Wed, 2005-09-21 at 11:11 +0300, Zoa wrote:



Also when you do things over the network, disable your onboard network
card, and go for some more expensive network card.
In our tests with small packets, we could increase the throughput with a
factor 2. (related to cpu load).




I wonder how much of that is a poorly written driver and not the card
itself.  I have seen some fairly poor drivers performance wise.  :/






___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users





signature.asc
Description: OpenPGP digital signature
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Matt Roth

All,

This message has generated a lot of responses, so I'm going to address 
each of them here in an attempt to consolidate the thread.




Matt,

- I'm very interested in the specifics of your setup.
- How much space is on the RAM disk?
Currently it is 10 GB.  We are upgrading it to 16 GB.

- What kind of RAM drive is it?
The current RAM is 12 GB DDR2 400 MHz (12 x 1GB) Single Ranked DIMMs. 
The details for each 1 GB DIMM can be seen here:


http://www.samsung.com/Products/Semiconductor/DRAM/DDR2SDRAM/DDR2SDRAMmodule/RegisteredDIMM/M393T2950CZ3/M393T2950CZ3.htm

The upgrade will involve adding 2 GB DIMMs to the system, but I don't 
have the details on these yet.


The RAM disk is setup by adding the following kernel command line option 
to grub.conf:


ramdisk_size=10485760

We are running Fedora Core 3 with the most up to date 2.6 SMP kernel.

By default the RAM disk's block size is 1024 bytes, so we are formatting 
it as an ext2 file system with a block size of 1024 bytes using the 
following command:


mke2fs -b 1024 -m 0 /dev/ram0

The block size can easily be changed from the kernel's view (using the 
kernel command line option ramdisk_blocksize=) or from mke2fs's view 
(using the -b  argument), so please let me know if I can make an 
easy optimization here.


Finally, the RAM disk is mounted using the command:

mount /dev/ram0 /digrec

A good RAMDISK howto exists at:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

- What format are you recording to?
- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.  High 
voice quality is essential to our application (we are a call center) so 
we partnered with MCI to configure our network for the required 
bandwidth and chose the highest quality, zero compression codec.  We 
noload all other codecs in order to avoid transcoding on the switch, so 
we must record to PCM. Later (on a separate server) the recordings are 
mixed to GSM which provides a 5 to 1 compression ratio with very little 
artifacts.


- We've run into the Avoided deadlock recording issues several times 
when trying to do
- more than 50 concurrent recordings. Changing the ast_channel_lock loop 
from 10 to 20 has
- helped somewhat reduce the warnings and reduce audio gaps on the 
recordings, but what is
- really needed for more robust recording is a configurable recording 
buffer that wouldn't

- freak out if a 10ms delay occurs.
Are you saying that these messages indicate a gap in a digital 
recording?  If so, what is the duration of the gap? If it's comparable 
to a CD skip, I think we can deal with it until a buffer or another 
solution is implemented.


- Good luck and please keep us updated on your progress
Thank you.  I'll be keeping the list informed of our progress.



Zoa,

- I suppose you are the person from the digium forum
That was actually my boss's boss.  We thank you all the way up and down 
the line for your suggestion.


- The reason i recommended you to use a ramdisk is because i think the
- problem with recording to disk is saving 20ms of stream 1, then 20 ms of
- stream 2, then 20ms of stream 3 etc etc meaning you write everytime
- very small things. (with a lot of seeking).
Agreed.  This is why we hope that decoupling the copy (memory to disk) 
from Asterisk itself and, more importantly, Asterisk's real-time 
handling of the call being recorded will be sufficient.


For the record, when recording 512 simultaneous calls to the local disk 
we saw a peek of about 13,000 blocks written per second.


- Our best test results were with:
-
- - buffering the recordings to a ramdisk, then
We're doing that, as per your suggestion.

- - on low load (at night) copy the files over the network (easy to shape
-   the pipe, so that you dont overload anything), This way, the memory
-   buffer will take care of the 'fragmentation' and not your harddisk.
If you'll note the format of the recordings and that we'll be recording 
up to 200,000 minutes of calls a day, with a little quick math you'll 
realize that it would take 80 to 100 GBs of memory for us to buffer a 
full day's recordings.  Combined with the fact that a server failure 
late in the day would cause us to lose them all, this is not a desirable 
solution.


Instead, we plan to write an application to call from the MONITOR_EXEC 
hook that will be executed at the end of each call.  This application 
will be niced down to the lowest priority, and simply copy the leg files 
from memory to disk.  Under normal conditions (ie. our NFS server is up) 
this will actually be a copy to a remote disk using an asynchronous NFS 
transfer.  All actual disk I/O will occur on our digital recording 
server and any handling of the digital recordings will occur only after 
the call they are bound to is completed.


Do you have any suggestions regarding this 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Matt Hess
In light of the I/O bottleneck problem I'd have to ask why asterisk 
can't just buffer incoming audio and then flush a complete audio file to 
disk.. I'm assuming that recordings vary in length.. the problem with 
this idea is what happens if 50 recordings all complete at the same 
time.. a dump like that might not be very pretty (a fast drive plus a 
little scheduler or limiter so that only x number of files get written 
to disk at a time would probably help out there) but I can imagine that 
a single file being written is much more efficient and more 
disk-friendly.. perhaps I don't know what the heck I'm talking about but 
 at least in my mind the theory sounds better than the current 
'stream-to-file' method employed by asterisk.




Matt Roth wrote:

All,

This message has generated a lot of responses, so I'm going to address 
each of them here in an attempt to consolidate the thread.




Matt,

- I'm very interested in the specifics of your setup.
- How much space is on the RAM disk?
Currently it is 10 GB.  We are upgrading it to 16 GB.

- What kind of RAM drive is it?
The current RAM is 12 GB DDR2 400 MHz (12 x 1GB) Single Ranked DIMMs. 
The details for each 1 GB DIMM can be seen here:


http://www.samsung.com/Products/Semiconductor/DRAM/DDR2SDRAM/DDR2SDRAMmodule/RegisteredDIMM/M393T2950CZ3/M393T2950CZ3.htm 



The upgrade will involve adding 2 GB DIMMs to the system, but I don't 
have the details on these yet.


The RAM disk is setup by adding the following kernel command line option 
to grub.conf:


ramdisk_size=10485760

We are running Fedora Core 3 with the most up to date 2.6 SMP kernel.

By default the RAM disk's block size is 1024 bytes, so we are formatting 
it as an ext2 file system with a block size of 1024 bytes using the 
following command:


mke2fs -b 1024 -m 0 /dev/ram0

The block size can easily be changed from the kernel's view (using the 
kernel command line option ramdisk_blocksize=) or from mke2fs's view 
(using the -b  argument), so please let me know if I can make an 
easy optimization here.


Finally, the RAM disk is mounted using the command:

mount /dev/ram0 /digrec

A good RAMDISK howto exists at:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

- What format are you recording to?
- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.  High 
voice quality is essential to our application (we are a call center) so 
we partnered with MCI to configure our network for the required 
bandwidth and chose the highest quality, zero compression codec.  We 
noload all other codecs in order to avoid transcoding on the switch, so 
we must record to PCM. Later (on a separate server) the recordings are 
mixed to GSM which provides a 5 to 1 compression ratio with very little 
artifacts.


- We've run into the Avoided deadlock recording issues several times 
when trying to do
- more than 50 concurrent recordings. Changing the ast_channel_lock loop 
from 10 to 20 has
- helped somewhat reduce the warnings and reduce audio gaps on the 
recordings, but what is
- really needed for more robust recording is a configurable recording 
buffer that wouldn't

- freak out if a 10ms delay occurs.
Are you saying that these messages indicate a gap in a digital 
recording?  If so, what is the duration of the gap? If it's comparable 
to a CD skip, I think we can deal with it until a buffer or another 
solution is implemented.


- Good luck and please keep us updated on your progress
Thank you.  I'll be keeping the list informed of our progress.



Zoa,

- I suppose you are the person from the digium forum
That was actually my boss's boss.  We thank you all the way up and down 
the line for your suggestion.


- The reason i recommended you to use a ramdisk is because i think the
- problem with recording to disk is saving 20ms of stream 1, then 20 ms of
- stream 2, then 20ms of stream 3 etc etc meaning you write everytime
- very small things. (with a lot of seeking).
Agreed.  This is why we hope that decoupling the copy (memory to disk) 
from Asterisk itself and, more importantly, Asterisk's real-time 
handling of the call being recorded will be sufficient.


For the record, when recording 512 simultaneous calls to the local disk 
we saw a peek of about 13,000 blocks written per second.


- Our best test results were with:
-
- - buffering the recordings to a ramdisk, then
We're doing that, as per your suggestion.

- - on low load (at night) copy the files over the network (easy to shape
-   the pipe, so that you dont overload anything), This way, the memory
-   buffer will take care of the 'fragmentation' and not your harddisk.
If you'll note the format of the recordings and that we'll be recording 
up to 200,000 minutes of calls a day, with a little quick math you'll 
realize that it would take 80 to 100 GBs of 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread [EMAIL PROTECTED]
I would think memory would be the limiting factor.  A 3-4 minute wav 
file is what, 30Meg or so?  And there is one for each end of the call, 
so that's 60Meg.  Now let's say it's a 15 minute call and then are 10 of 
them at once.  That's 30Meg x 5 (5 times the length of my estimate) x 2 
(each leg) x 10 simultaneous callsequals 3 Gig of RAM.  Once you run 
out of RAM, then what does it do?  It would have to try and dump it all 
to disk at once and you are back where you started.  I think the average 
* implementation doesn't have nearly enough free RAM to do this.


The RAMdisk solution seems to be pretty elegant in it's simplicity.



Matt Hess wrote:
In light of the I/O bottleneck problem I'd have to ask why asterisk 
can't just buffer incoming audio and then flush a complete audio file to 
disk.. I'm assuming that recordings vary in length.. the problem with 
this idea is what happens if 50 recordings all complete at the same 
time.. a dump like that might not be very pretty (a fast drive plus a 
little scheduler or limiter so that only x number of files get written 
to disk at a time would probably help out there) but I can imagine that 
a single file being written is much more efficient and more 
disk-friendly.. perhaps I don't know what the heck I'm talking about but 
 at least in my mind the theory sounds better than the current 
'stream-to-file' method employed by asterisk.




Matt Roth wrote:


All,

This message has generated a lot of responses, so I'm going to address 
each of them here in an attempt to consolidate the thread.




Matt,

- I'm very interested in the specifics of your setup.
- How much space is on the RAM disk?
Currently it is 10 GB.  We are upgrading it to 16 GB.

- What kind of RAM drive is it?
The current RAM is 12 GB DDR2 400 MHz (12 x 1GB) Single Ranked DIMMs. 
The details for each 1 GB DIMM can be seen here:


http://www.samsung.com/Products/Semiconductor/DRAM/DDR2SDRAM/DDR2SDRAMmodule/RegisteredDIMM/M393T2950CZ3/M393T2950CZ3.htm 



The upgrade will involve adding 2 GB DIMMs to the system, but I don't 
have the details on these yet.


The RAM disk is setup by adding the following kernel command line 
option to grub.conf:


ramdisk_size=10485760

We are running Fedora Core 3 with the most up to date 2.6 SMP kernel.

By default the RAM disk's block size is 1024 bytes, so we are 
formatting it as an ext2 file system with a block size of 1024 bytes 
using the following command:


mke2fs -b 1024 -m 0 /dev/ram0

The block size can easily be changed from the kernel's view (using the 
kernel command line option ramdisk_blocksize=) or from mke2fs's 
view (using the -b  argument), so please let me know if I can make 
an easy optimization here.


Finally, the RAM disk is mounted using the command:

mount /dev/ram0 /digrec

A good RAMDISK howto exists at:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

- What format are you recording to?
- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.  
High voice quality is essential to our application (we are a call 
center) so we partnered with MCI to configure our network for the 
required bandwidth and chose the highest quality, zero compression 
codec.  We noload all other codecs in order to avoid transcoding on 
the switch, so we must record to PCM. Later (on a separate server) the 
recordings are mixed to GSM which provides a 5 to 1 compression ratio 
with very little artifacts.


- We've run into the Avoided deadlock recording issues several times 
when trying to do
- more than 50 concurrent recordings. Changing the ast_channel_lock 
loop from 10 to 20 has
- helped somewhat reduce the warnings and reduce audio gaps on the 
recordings, but what is
- really needed for more robust recording is a configurable recording 
buffer that wouldn't

- freak out if a 10ms delay occurs.
Are you saying that these messages indicate a gap in a digital 
recording?  If so, what is the duration of the gap? If it's comparable 
to a CD skip, I think we can deal with it until a buffer or another 
solution is implemented.


- Good luck and please keep us updated on your progress
Thank you.  I'll be keeping the list informed of our progress.



Zoa,

- I suppose you are the person from the digium forum
That was actually my boss's boss.  We thank you all the way up and 
down the line for your suggestion.


- The reason i recommended you to use a ramdisk is because i think the
- problem with recording to disk is saving 20ms of stream 1, then 20 
ms of

- stream 2, then 20ms of stream 3 etc etc meaning you write everytime
- very small things. (with a lot of seeking).
Agreed.  This is why we hope that decoupling the copy (memory to disk) 
from Asterisk itself and, more importantly, Asterisk's real-time 
handling of the call being recorded will be sufficient.


For 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Zoa

The problem is that then it won't work on systems with little memory. 50
streams would eat memory like crazy.

Zoa


Matt Hess wrote:


In light of the I/O bottleneck problem I'd have to ask why asterisk
can't just buffer incoming audio and then flush a complete audio file
to disk.. I'm assuming that recordings vary in length.. the problem
with this idea is what happens if 50 recordings all complete at the
same time.. a dump like that might not be very pretty (a fast drive
plus a little scheduler or limiter so that only x number of files get
written to disk at a time would probably help out there) but I can
imagine that a single file being written is much more efficient and
more disk-friendly.. perhaps I don't know what the heck I'm talking
about but  at least in my mind the theory sounds better than the
current 'stream-to-file' method employed by asterisk.



Matt Roth wrote:


All,

This message has generated a lot of responses, so I'm going to
address each of them here in an attempt to consolidate the thread.



Matt,

- I'm very interested in the specifics of your setup.
- How much space is on the RAM disk?
Currently it is 10 GB.  We are upgrading it to 16 GB.

- What kind of RAM drive is it?
The current RAM is 12 GB DDR2 400 MHz (12 x 1GB) Single Ranked DIMMs.
The details for each 1 GB DIMM can be seen here:

http://www.samsung.com/Products/Semiconductor/DRAM/DDR2SDRAM/DDR2SDRAMmodule/RegisteredDIMM/M393T2950CZ3/M393T2950CZ3.htm


The upgrade will involve adding 2 GB DIMMs to the system, but I don't
have the details on these yet.

The RAM disk is setup by adding the following kernel command line
option to grub.conf:

ramdisk_size=10485760

We are running Fedora Core 3 with the most up to date 2.6 SMP kernel.

By default the RAM disk's block size is 1024 bytes, so we are
formatting it as an ext2 file system with a block size of 1024 bytes
using the following command:

mke2fs -b 1024 -m 0 /dev/ram0

The block size can easily be changed from the kernel's view (using
the kernel command line option ramdisk_blocksize=) or from
mke2fs's view (using the -b  argument), so please let me know if
I can make an easy optimization here.

Finally, the RAM disk is mounted using the command:

mount /dev/ram0 /digrec

A good RAMDISK howto exists at:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

- What format are you recording to?
- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.
High voice quality is essential to our application (we are a call
center) so we partnered with MCI to configure our network for the
required bandwidth and chose the highest quality, zero compression
codec.  We noload all other codecs in order to avoid transcoding on
the switch, so we must record to PCM. Later (on a separate server)
the recordings are mixed to GSM which provides a 5 to 1 compression
ratio with very little artifacts.

- We've run into the Avoided deadlock recording issues several
times when trying to do
- more than 50 concurrent recordings. Changing the ast_channel_lock
loop from 10 to 20 has
- helped somewhat reduce the warnings and reduce audio gaps on the
recordings, but what is
- really needed for more robust recording is a configurable recording
buffer that wouldn't
- freak out if a 10ms delay occurs.
Are you saying that these messages indicate a gap in a digital
recording?  If so, what is the duration of the gap? If it's
comparable to a CD skip, I think we can deal with it until a buffer
or another solution is implemented.

- Good luck and please keep us updated on your progress
Thank you.  I'll be keeping the list informed of our progress.



Zoa,

- I suppose you are the person from the digium forum
That was actually my boss's boss.  We thank you all the way up and
down the line for your suggestion.

- The reason i recommended you to use a ramdisk is because i think the
- problem with recording to disk is saving 20ms of stream 1, then 20
ms of
- stream 2, then 20ms of stream 3 etc etc meaning you write
everytime
- very small things. (with a lot of seeking).
Agreed.  This is why we hope that decoupling the copy (memory to
disk) from Asterisk itself and, more importantly, Asterisk's
real-time handling of the call being recorded will be sufficient.

For the record, when recording 512 simultaneous calls to the local
disk we saw a peek of about 13,000 blocks written per second.

- Our best test results were with:
-
- - buffering the recordings to a ramdisk, then
We're doing that, as per your suggestion.

- - on low load (at night) copy the files over the network (easy to
shape
-   the pipe, so that you dont overload anything), This way, the memory
-   buffer will take care of the 'fragmentation' and not your harddisk.
If you'll note the format of the recordings and that we'll be
recording up to 200,000 minutes of calls a 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Matt Roth
It's true that the average Asterisk implementation doesn't have enough 
RAM, but we are replacing a legacy NorTel switch in a call center.  If 
you look at the cost of traditional PBXs, the cost of additional memory 
starts to look a little better.  = )


Now for some quick math:

1 minute of PCM audio = 480 KB
* 2 leg files ~= 1 MB/minute
Avail. Mem. = 10 GB = 10,000 MB = 10,000 minutes of digital recordings
Peak calling = 200,000 minutes/day
10,000 / 200,000 = 5%

So our buffer is 5% of our total calling for the day.  We'll be bumping 
the RAM disk up to 16 GB yielding an 8% buffer.


We'll be moving calls out of memory to a remote disk (via NFS) as soon 
as they are finished, so I think we'll be okay.  We'll be monitoring 
memory usage and sharing our data.  It's my hope that this is the 
solution for large scale (250-500 simultaneous calls) Asterisk 
installations.


I hope my math was right,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer

Zoa wrote:

- The problem is that then it won't work on systems with little memory. 50
- streams would eat memory like crazy.
-
- Zoa

[EMAIL PROTECTED] wrote:

I would think memory would be the limiting factor.  A 3-4 minute wav 
file is what, 30Meg or so?  And there is one for each end of the call, 
so that's 60Meg.  Now let's say it's a 15 minute call and then are 10 
of them at once.  That's 30Meg x 5 (5 times the length of my estimate) 
x 2 (each leg) x 10 simultaneous callsequals 3 Gig of RAM.  Once 
you run out of RAM, then what does it do?  It would have to try and 
dump it all to disk at once and you are back where you started.  I 
think the average * implementation doesn't have nearly enough free RAM 
to do this.


The RAMdisk solution seems to be pretty elegant in it's simplicity.



Matt Hess wrote:

In light of the I/O bottleneck problem I'd have to ask why asterisk 
can't just buffer incoming audio and then flush a complete audio file 
to disk.. I'm assuming that recordings vary in length.. the problem 
with this idea is what happens if 50 recordings all complete at the 
same time.. a dump like that might not be very pretty (a fast drive 
plus a little scheduler or limiter so that only x number of files get 
written to disk at a time would probably help out there) but I can 
imagine that a single file being written is much more efficient and 
more disk-friendly.. perhaps I don't know what the heck I'm talking 
about but  at least in my mind the theory sounds better than the 
current 'stream-to-file' method employed by asterisk.




Matt Roth wrote:


All,

This message has generated a lot of responses, so I'm going to 
address each of them here in an attempt to consolidate the thread.




Matt,

- I'm very interested in the specifics of your setup.
- How much space is on the RAM disk?
Currently it is 10 GB.  We are upgrading it to 16 GB.

- What kind of RAM drive is it?
The current RAM is 12 GB DDR2 400 MHz (12 x 1GB) Single Ranked 
DIMMs. The details for each 1 GB DIMM can be seen here:


http://www.samsung.com/Products/Semiconductor/DRAM/DDR2SDRAM/DDR2SDRAMmodule/RegisteredDIMM/M393T2950CZ3/M393T2950CZ3.htm 



The upgrade will involve adding 2 GB DIMMs to the system, but I 
don't have the details on these yet.


The RAM disk is setup by adding the following kernel command line 
option to grub.conf:


ramdisk_size=10485760

We are running Fedora Core 3 with the most up to date 2.6 SMP kernel.

By default the RAM disk's block size is 1024 bytes, so we are 
formatting it as an ext2 file system with a block size of 1024 bytes 
using the following command:


mke2fs -b 1024 -m 0 /dev/ram0

The block size can easily be changed from the kernel's view (using 
the kernel command line option ramdisk_blocksize=) or from 
mke2fs's view (using the -b  argument), so please let me know if 
I can make an easy optimization here.


Finally, the RAM disk is mounted using the command:

mount /dev/ram0 /digrec

A good RAMDISK howto exists at:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

- What format are you recording to?
- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.  
High voice quality is essential to our application (we are a call 
center) so we partnered with MCI to configure our network for the 
required bandwidth and chose the highest quality, zero compression 
codec.  We noload all other codecs in order to avoid transcoding on 
the switch, so we must record to PCM. Later (on a separate server) 
the recordings are mixed to GSM which provides a 5 to 1 compression 
ratio with very little artifacts.


- We've run into the Avoided deadlock recording issues several 
times when trying to do
- more than 50 concurrent recordings. Changing the ast_channel_lock 
loop from 10 to 20 has
- helped somewhat reduce the warnings and reduce audio gaps on the 
recordings, but what is
- really needed 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Zoa



I think its the best you can do.

Maybe there should be some option to be set for the monitor command to
buffer, with a warning that it will eat memory.
Its also not needed to buffer the complete call at once, just buffering
and writing to disk every 10 seconds would already be a big improvement,
and since the calls won't all start at the same time, the writing to
disk will be spread over time.
Good luck with the implementation, let us know how it turns out!
Try to find out what happens if the nfs share is gone, or overloaded too.

If there is no zaptel hardware involved, i don't think you have to be
too concerned about the network cards interrupts.

greetings,

Zoa.

Matt Roth wrote:


It's true that the average Asterisk implementation doesn't have enough
RAM, but we are replacing a legacy NorTel switch in a call center.  If
you look at the cost of traditional PBXs, the cost of additional
memory starts to look a little better.  = )

Now for some quick math:

1 minute of PCM audio = 480 KB
* 2 leg files ~= 1 MB/minute
Avail. Mem. = 10 GB = 10,000 MB = 10,000 minutes of digital recordings
Peak calling = 200,000 minutes/day
10,000 / 200,000 = 5%

So our buffer is 5% of our total calling for the day.  We'll be
bumping the RAM disk up to 16 GB yielding an 8% buffer.

We'll be moving calls out of memory to a remote disk (via NFS) as soon
as they are finished, so I think we'll be okay.  We'll be monitoring
memory usage and sharing our data.  It's my hope that this is the
solution for large scale (250-500 simultaneous calls) Asterisk
installations.

I hope my math was right,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer

Zoa wrote:

- The problem is that then it won't work on systems with little
memory. 50
- streams would eat memory like crazy.
-
- Zoa

[EMAIL PROTECTED] wrote:


I would think memory would be the limiting factor.  A 3-4 minute wav
file is what, 30Meg or so?  And there is one for each end of the
call, so that's 60Meg.  Now let's say it's a 15 minute call and then
are 10 of them at once.  That's 30Meg x 5 (5 times the length of my
estimate) x 2 (each leg) x 10 simultaneous callsequals 3 Gig of
RAM.  Once you run out of RAM, then what does it do?  It would have
to try and dump it all to disk at once and you are back where you
started.  I think the average * implementation doesn't have nearly
enough free RAM to do this.

The RAMdisk solution seems to be pretty elegant in it's simplicity.



Matt Hess wrote:


In light of the I/O bottleneck problem I'd have to ask why asterisk
can't just buffer incoming audio and then flush a complete audio
file to disk.. I'm assuming that recordings vary in length.. the
problem with this idea is what happens if 50 recordings all complete
at the same time.. a dump like that might not be very pretty (a fast
drive plus a little scheduler or limiter so that only x number of
files get written to disk at a time would probably help out there)
but I can imagine that a single file being written is much more
efficient and more disk-friendly.. perhaps I don't know what the
heck I'm talking about but  at least in my mind the theory sounds
better than the current 'stream-to-file' method employed by asterisk.



Matt Roth wrote:


All,

This message has generated a lot of responses, so I'm going to
address each of them here in an attempt to consolidate the thread.



Matt,

- I'm very interested in the specifics of your setup.
- How much space is on the RAM disk?
Currently it is 10 GB.  We are upgrading it to 16 GB.

- What kind of RAM drive is it?
The current RAM is 12 GB DDR2 400 MHz (12 x 1GB) Single Ranked
DIMMs. The details for each 1 GB DIMM can be seen here:

http://www.samsung.com/Products/Semiconductor/DRAM/DDR2SDRAM/DDR2SDRAMmodule/RegisteredDIMM/M393T2950CZ3/M393T2950CZ3.htm


The upgrade will involve adding 2 GB DIMMs to the system, but I
don't have the details on these yet.

The RAM disk is setup by adding the following kernel command line
option to grub.conf:

ramdisk_size=10485760

We are running Fedora Core 3 with the most up to date 2.6 SMP kernel.

By default the RAM disk's block size is 1024 bytes, so we are
formatting it as an ext2 file system with a block size of 1024
bytes using the following command:

mke2fs -b 1024 -m 0 /dev/ram0

The block size can easily be changed from the kernel's view (using
the kernel command line option ramdisk_blocksize=) or from
mke2fs's view (using the -b  argument), so please let me know
if I can make an easy optimization here.

Finally, the RAM disk is mounted using the command:

mount /dev/ram0 /digrec

A good RAMDISK howto exists at:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

- What format are you recording to?
- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.
High voice quality is essential to our application (we are a call
center) so we 

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Matt Florell
On 9/21/05, Matt Roth [EMAIL PROTECTED] wrote:
- What format are you recording to?- What codec are the SIP calls being placed over?
We are recording to the PCM format and using the G711 uLaw codec.Highvoice quality is essential to our application (we are a call center) sowe partnered with MCI to configure our network for the required
bandwidth and chose the highest quality, zero compression codec.Wenoload all other codecs in order to avoid transcoding on the switch, sowe must record to PCM. Later (on a separate server) the recordings are
mixed to GSM which provides a 5 to 1 compression ratio with very littleartifacts.
Have you tried recording directly to GSM format? It will help reduce
the bottleneck on disk IO although it will use more CPU cycles(in your
case on a RAM drive this may not help at all) 
- We've run into the Avoided deadlock recording issues several times
when trying to do- more than 50 concurrent recordings. Changing the ast_channel_lock loopfrom 10 to 20 has- helped somewhat reduce the warnings and reduce audio gaps on therecordings, but what is- really needed for more robust recording is a configurable recording
buffer that wouldn't- freak out if a 10ms delay occurs.Are you saying that these messages indicate a gap in a digitalrecording?If so, what is the duration of the gap? If it's comparableto a CD skip, I think we can deal with it until a buffer or another
solution is implemented.There
aren't always audio skips but they do happen more when you get more
ast_channel_walk warnings. The audio gaps are usually less than a
quarter second in our experience but can be upto a second depending on
the severity of the IO problem at that instance. It's very hard to test
for until you get into production and you have real conversations and
real people listening to them that can hear the audio skips.

We have sevaral call centers as well, and we just restrict a single
server to 50 recordings at once and then we would pass the next
recording as an IAX2 channel to another recording server. It's a
scalable system for us that is relatively cheap and works well since we
can mix and gsm-encode the audio on these multiple servers at night
when not in production leaving the NSF server just for storage and not
audio processing.

MATT---

___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread izo
On 9/21/05, Matt Florell [EMAIL PROTECTED] wrote:
  We have sevaral call centers as well, and we just restrict a single server
 to 50 recordings at once and then we would pass the next recording as an
 IAX2 channel to another recording server. It's a scalable system for us that
 is relatively cheap and works well since we can mix and gsm-encode the audio
 on these multiple servers at night when not in production leaving the NSF
 server just for storage and not audio processing.

Interesting approach,
How do you deal with queue management ?
Do you have central server that manages all queues ?
How many phone calls u have at same time ? Inbound or outbound ?
Could you share a little bit more on the architecture of your system ?

regards
m.
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-21 Thread Matt Florell
On 9/21/05, izo [EMAIL PROTECTED] wrote:
On 9/21/05, Matt Florell [EMAIL PROTECTED] wrote:We have sevaral call centers as well, and we just restrict a single server to 50 recordings at once and then we would pass the next recording as an
 IAX2 channel to another recording server. It's a scalable system for us that is relatively cheap and works well since we can mix and gsm-encode the audio on these multiple servers at night when not in production leaving the NSF
 server just for storage and not audio processing.Interesting approach,How do you deal with queue management ?Do you have central server that manages all queues ?How many phone calls u have at same time ? Inbound or outbound ?
Could you share a little bit more on the architecture of your system ?regardsm
We wrote VICIDIAL(part of the GPL astGUIclient suite
http://astguiclient.sf.net) for our call center operations. Yes it does
use a central queue and does not use Asterisk queues or agents. The
system is based on a MySQL database and meetme rooms for the agents
that use a web-client app for lead information and call control.

We mostly do outbound and the volume is split across several servers,
and for inbound we do have forwarding to other servers if the defined
capacity is exceeded a certain point. 

As for our distributed recording approach, it's easy with meetme rooms
to record a call on one server from another server, you just drop a
call into the meetme room that is a monitor exten on another server
over IAX2, TDMoE or a crossover Zap T1 connection.

As for phone calls at one time: for inbound we almost never exceed 50
agents on a single server with no more than 72 incoming lines live at
once. Our average is actually much less than that. For outbound we
usually have about 15-40 agents per server with upto 96 lines dialing
out concurrently. At our main office location we've had over 100 agents
on at one time across 6 Asterisk servers handling over 350 calls at
once with a total of more than 550 live channels on our Asterisk
servers(includes recording, client and trunk channels). 

We mostly use cheaper single CPU systems instead of more expensive
multi-CPU systems which is more cost effective in a larger setup and
allows for greater flexibility, redundancy and scalability.

I'll also be presenting a case-study on our whole setup at Astricon
next month. The presentation file will be available on the astGUIclient
project website after I present it for those who are interested.

MATT---

___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

[Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-20 Thread Matt Roth

List users,

Over the last few days we have been working with MCI's development lab 
to test our Asterisk setup.  We were using a piece of hardware called an 
Abacus 5000 that is capable of creating and terminating thousands of SIP 
calls.  Initially, we could not get past 64 simultaneous digitally 
recorded calls without having call quality issues including dropped 
calls.  We identified an I/O bottleneck and rectified it by digitally 
recording to a RAM disk.  Using this method, we were able to digitally 
record 512 simultaneous SIP-to-SIP calls with 100% call completion.


Our plan is to use the MONITOR_EXEC hook to call a custom program that 
will copy files to the hard disk at call completion.  This should be no 
problem when calling Monitor directly from the dialplan, but I need to 
know if there are any complications when digitally recording from 
app_queue or chan_agent.  If anyone has experience with using 
MONITOR_EXEC and MONITOR_EXEC_ARGS with these applications, your input 
would be greatly appreciated.  Digital recording seems to be the 
limiting factor when scaling an Asterisk system and we will share any 
advances we make with the community.


We also noticed some Avoided initial deadlock and Avoided deadlock 
warnings in the messages file that Asterisk generates.  Our 128 and 256 
simultaneous call tests each produced one of these warnings.  Our 512 
simultaneous call test produced 18 of them all within a 10 second span, 
each on a separate SIP channel.  Can anyone shed light on what these 
warnings mean, how they can be avoided, and if they are something to 
worry about.  They did not seem to affect the outcome of the testing in 
any way.


Details of our testing (hardware configuration, OS tweaks, system 
resource usage, reports from the Abacus 5000, etc.) will be made 
available over time.  Please bear with me, as I am working on a deadline.


Thank you,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-20 Thread Patrick
On Tue, 2005-09-20 at 18:37 -0400, Matt Roth wrote:
 List users,
 
 Over the last few days we have been working with MCI's development lab 
 to test our Asterisk setup.  We were using a piece of hardware called an 
 Abacus 5000 that is capable of creating and terminating thousands of SIP 
 calls.  Initially, we could not get past 64 simultaneous digitally 
 recorded calls without having call quality issues including dropped 
 calls.  We identified an I/O bottleneck and rectified it by digitally 
 recording to a RAM disk.  Using this method, we were able to digitally 
 record 512 simultaneous SIP-to-SIP calls with 100% call completion.
 
 Our plan is to use the MONITOR_EXEC hook to call a custom program that 
 will copy files to the hard disk at call completion.

Matt,

Interesting stuff. Did you test copying of the recordings on the ramdisk
to a local harddisk also during that 512 call load? Just wondering if
that copy action wouldn't also create an I/O bottleneck and cause call
quality issues under load. Did you consider using remote storage e.g.
via nfs, a fibre channel or iSCSI link to a SAN?

Regards,
Patrick
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-20 Thread Michael Welter

Patrick wrote:

On Tue, 2005-09-20 at 18:37 -0400, Matt Roth wrote:


List users,

Over the last few days we have been working with MCI's development lab 
to test our Asterisk setup.  We were using a piece of hardware called an 
Abacus 5000 that is capable of creating and terminating thousands of SIP 
calls.  Initially, we could not get past 64 simultaneous digitally 
recorded calls without having call quality issues including dropped 
calls.  We identified an I/O bottleneck and rectified it by digitally 
recording to a RAM disk.  Using this method, we were able to digitally 
record 512 simultaneous SIP-to-SIP calls with 100% call completion.


Our plan is to use the MONITOR_EXEC hook to call a custom program that 
will copy files to the hard disk at call completion.



Matt,

Interesting stuff. Did you test copying of the recordings on the ramdisk
to a local harddisk also during that 512 call load? Just wondering if
that copy action wouldn't also create an I/O bottleneck and cause call
quality issues under load. Did you consider using remote storage e.g.
via nfs, a fibre channel or iSCSI link to a SAN?



I use 3Ware RAID cards in my systems with write cache turned on.  I'm 
wondering if this presents a reduced interrupt load on the system than 
directly-attached hard drives?



___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-20 Thread Matt Roth




Patrick,

Thank you for your suggestions.

Our initial runs were recording directly to an NFS mount and they
experienced the same problems as recording to the local disk. In our
final setup, the copy will be done to an NFS mount as long as it
exists, falling back to local disk only when the NFS server is down.

The theory that we're running on is that any I/O bottlenecks (or
network latencies in the case of NFS) only matter when they are bound
to a call in progress. In that scenario, the bottleneck would
introduce a latency in Asterisk's handling of the RTP packets causing
call degradation and drops. By decoupling I/O from live calls and
performing the copies (a very lightweight operation) in a separate
process, we hope to not affect Asterisk's real-time handling of the RTP
packets.

Because of limited access to the test equipment, we were only able to
test up to storing the digital recordings on a RAM disk. Please shoot
holes in this setup if you see any weaknesses. Better today than on
our go-live date.

Thanks,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer

Patrick wrote:

  On Tue, 2005-09-20 at 18:37 -0400, Matt Roth wrote:
  
  
List users,

Over the last few days we have been working with MCI's development lab 
to test our Asterisk setup.  We were using a piece of hardware called an 
Abacus 5000 that is capable of creating and terminating thousands of SIP 
calls.  Initially, we could not get past 64 simultaneous digitally 
recorded calls without having call quality issues including dropped 
calls.  We identified an I/O bottleneck and rectified it by digitally 
recording to a RAM disk.  Using this method, we were able to digitally 
record 512 simultaneous SIP-to-SIP calls with 100% call completion.

Our plan is to use the MONITOR_EXEC hook to call a custom program that 
will copy files to the hard disk at call completion.

  
  
Matt,

Interesting stuff. Did you test copying of the recordings on the ramdisk
to a local harddisk also during that 512 call load? Just wondering if
that copy action wouldn't also create an I/O bottleneck and cause call
quality issues under load. Did you consider using remote storage e.g.
via nfs, a fibre channel or iSCSI link to a SAN?

Regards,
Patrick
___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

  



___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [Asterisk-Users] SUCCESS - 512 Simultaneous Calls with Digital Recording

2005-09-20 Thread Matt Florell
On 9/20/05, Matt Roth [EMAIL PROTECTED] wrote:



  
  


Patrick,

Thank you for your suggestions.

Our initial runs were recording directly to an NFS mount and they
experienced the same problems as recording to the local disk. In our
final setup, the copy will be done to an NFS mount as long as it
exists, falling back to local disk only when the NFS server is down.

The theory that we're running on is that any I/O bottlenecks (or
network latencies in the case of NFS) only matter when they are bound
to a call in progress. In that scenario, the bottleneck would
introduce a latency in Asterisk's handling of the RTP packets causing
call degradation and drops. By decoupling I/O from live calls and
performing the copies (a very lightweight operation) in a separate
process, we hope to not affect Asterisk's real-time handling of the RTP
packets.

Because of limited access to the test equipment, we were only able to
test up to storing the digital recordings on a RAM disk. Please shoot
holes in this setup if you see any weaknesses. Better today than on
our go-live date.

Thanks,

Matthew Roth
InterMedia Marketing Solutions
Software Engineer and Systems Developer
Hello,

I'm very interested in the specifics of your setup. 
How much space is on the RAM disk? 
What kind of RAM drive is it? 
What format are you recording to?
What codec are the SIP calls being placed over?

We've run into the Avoided deadlock recording issues several times
when trying to do more than 50 concurrent recordings. Changing the
ast_channel_lock loop from 10 to 20 has helped somewhat reduce the
warnings and reduce audio gaps on the recordings, but what is really
needed for more robust recording is a configurable recording buffer
that wouldn't freak out if a 10ms delay occurs. 

Good luck and please keep us updated on your progress,

MATT---


___
--Bandwidth and Colocation sponsored by Easynews.com --

Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users