Page 43 - Asterisk™: The Future of Telephony
P. 43

any non-Asterisk services the system is performing concurrently. Let’s take a look at
               the effects of several key factors:

               Codecs and transcoding
                   Simply put, a codec (short for coder/decoder, or compression/decompression) is a
                   set of mathematical rules that define how an analog waveform will be digitized.
                   The differences between the various codecs are due in large part to the levels of
                   compression and quality that they offer. Generally speaking, the more compression
                   that’s required, the more work the DSP must do to code or decode the signal.
                   Uncompressed codecs, therefore, put far less strain on the CPU (but require more
                   network bandwidth). Codec selection must strike a balance between bandwidth
                   and processor usage.
               Central processing unit (and Floating Point Unit)
                   A CPU is comprised of several components, one of which is the floating point unit
                   (FPU). The speed of the CPU, coupled with the efficiency of its FPU, will play a
                   significant role in the number of concurrent connections a system can effectively
                   support. The next section (“Choosing a Processor) offers some general guidelines
                   for choosing a CPU that will meet the needs of your system.
               Other processes running concurrently on the system
                   Being Unix-like, Linux is designed to be able to multitask several different pro-
                   cesses. A problem arises when one of those processes (such as Asterisk) demands
                   a very high level of responsiveness from the system. By default, Linux will distribute
                   resources fairly among every application that requests them. If you install a system
                   with many different server applications, those applications will each be allowed
                   their fair use of the CPU. Since Asterisk requires frequent high-priority access to
                   the CPU, it does not get along well with other applications, and if Asterisk must
                   coexist with other apps, the system may require special optimizations. This pri-
                   marily involves the assignment of priorities to various applications in the system
                   and, during installation, careful attention to which applications are installed as
                   services.
               Kernel optimizations
                   A kernel optimized for the performance of one specific application is something
                   that  very  few  Linux  distributions  offer  by  default  and,  thus,  it  requires  some
                   thought. At the very minimum—whichever distribution you choose—a fresh copy
                   of the Linux kernel (available from http://www.kernel.org) should be downloaded
                   and compiled on your platform. You may also be able to acquire patches that will
                   yield performance improvements, but these are considered hacks to the officially
                   supported kernel.
               IRQ latency
                   Interrupt request (IRQ) latency is basically the delay between the moment a pe-
                   ripheral card (such as a telephone interface card) requests the CPU to stop what
                   it’s doing and the moment when the CPU actually responds and is ready to handle
                   the task. Asterisk’s peripherals (especially the Zaptel cards) are extremely intoler-


                                                                    Server Hardware Selection | 15
   38   39   40   41   42   43   44   45   46   47   48