Hardware Requirements
From Pbxnsip Wiki
The PBX is a software-based solution. The performance depends on the used hardware. There are several things that the PBX does to preserve call quality:
- The parts of the software that are real-time critical run with a high scheduling priority
- The PBX measures the usage of the CPU by this thread and rejects further calls if the load becomes too high
- If there are too many calls coming in during a short period of time (call bursts), the PBX also rejects calls
Contents |
Memory Requirements
The PBX requires between 20 MB for small installations with around 25 extensions up to 100 MB for larger installations with 500 extensions. That number changes with the amount of logging information that is stored in the system. The size varies significantly depending on the call data duration, for example if you want to keep the information for the last two weeks and have heavy traffic, you simple need the memory to keep this information.
The hard disk requirement is minimal for the installation as well since the download is less than 20 meg and that is mostly the prompts. As the number of languages grow that number will go up or we may add language packs to keep it small. If you write the log file to disk then you run the risk of filling that disk. The number of recorded calls stored on the computer can also cause the disk to grow and will need to be kept an eye on after the system is in production for awhile.
CPU Requirements
While the memory requirements can easily be fulfilled today, the CPU requirements can be a challenge. The critical question is how many calls you will have in parallel. Other questions like how many registrations will be kept alive on the system play also a role, but compared to the number of calls they are not so important. It is critical if the CPU needs to translate the codecs (transcoding). If the CPU just has to pass the packets through, the CPU performance is practically limited by the I/O-subsystem. Embedded systems typically do not have advanced subsystems and need to calculate MAC checksums before they can send out packets. Modern server typically have smart I/O-subsystems that take care about that.
If you need to do transcoding with as low-rate codec involved, you can compare that to ten non-transcoding calls (as a rule of thumb).
Dual core CPU's do not handle RTP well. If a voice converstation has RTP packets traverse a dual core cpu then it injects noticeable delay/jitter in the packets. Due to this fact pbxnsip binds to one core automatically (core 1) and this can be set with the affinity mask setting in system settings. We do not recommend quad core systems since we can't take advantage of the extra cores. A dual core is fine since the OS can use the other core and most systems now are only dual core anyways.
Configuration Examples
In order to help you with the procurement of suitable hardware, we provide a list of hardware and software combinations that we found useful. If you would like to propose other combinations please drop us a line.
IBM System x3250
This server runs a dual core 3.0 GHz processor with 2 MB cache running on 512 MB main memory. You can get these servers for about 1,400 USD from the IBM web site. We are running SuSE10 on this machine, 64-bit bit version.
pbx:~ # cat /etc/SuSE-release SUSE LINUX 10.0 (X86-64) VERSION = 10.0
You can run this machine also on the Windows Server Web Edition which is very well suitable for running the PBX service. This machine is suitable for up to 100 calls (except transcoding of low-rate codec). You can purchase this system from our web store for $1990 with windows 2003 Web edition preloaded and then you just need to select which pbxnsip software version you would like to have on it.
Performance Numbers
We constantly get asked how many calls can a particular system handle. This is a hard question to answer since each system is different. What we can tell you is that we have tested a dual Xeon 1.86 CPU running windows 2003 Web edition with Winsip and we were able to handle 100 calls. We had winsip (http://www.touchstone-inc.com) loaded on two IBM computers where one side was initiating calls and one system was receiving and we generated 100 G.711 calls. The system could handle 128 calls and the CPU was at 55%. This was pushing the limit and we would recommend to cut the load in half ~50 calls in a production environment. This was the lowest dual core CPU we could find so if you are going to purchase a new system do not overspend on the RAM if you are only running pbxnsip on the system. 256 or 512 meg of RAM is fine and spend the money on the CPU, since the more is the merrier! You can always add RAM later but upgrading the CPU is not as easy. Number of domains, accounts, extensions don't take up a lot of resources since they are just table entries. The number of trunks, registrations, and active calls are what needs to be taken into consideration. Recording and transcoding really tax the CPU. If a system can handle 80 calls at 75% CPU and recording is turned on then it will drop down to 50 calls. If low bit rate codecs are used in the recording it will drop down to 25 calls. The moral of the story is try not to record low bit rate codec calls! The pbx tries to avoid transoding at all costs as well since that is not desirable.
