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