After running PBX in a Flash (PiaF) in a virtual machine for a few days, I had a couple issues:
The system would generate an occasional message “TSC appears to be running slowly. Marking it as unstable.” This issue did not keep the PBX from running.
Voice quality was sometimes jittery. In a call, it would sometimes “cut out” (like a bad cell connection). In voicemail, even listening to the pre-recorded prompts, there was frequently some garbled-sounding audio.
Workarounds
The jittery voice seemed to be a horsepower issue. It’s like it couldn’t read the virtual disk fast enough and/or it couldn’t process the audio stream fast enough.
I was running PiaF under Microsoft Virtual Server 2005. The host was an old Dell Optiplex GX260, a Pentium 4 2GHz with 1GB of RAM. I dedicated 512MB of RAM to the virtual machine.
I found that if I moved the virtual machine to my IBM T60p laptop (T5300 Dual Core), still with 512MB of RAM, the jittery voice problem went away. I still got the “TSC” message, though.
Another workaround is to get Asterisk out of the audio stream altogether. I blogged this here. That solves the problem when two endpoints are talking, but it doesn’t solve the voicemail problem, and it does limit some of Asterisk’s features (call recording and transfer, for example).
Getting Physical
I concluded that I needed to convert to a physical setup to see if I could permanently solve these issues.
I hated to convert my fully-configured Windows XP machine to a dedicated PiaF box. I noticed in the PiaF status window that it was consistently using less than 40% of the 512MB RAM. Could it possibly run on the old Dell PowerEdge 2400 that has been sitting in the garage collecting dust? That’s a Pentium III 733 MHz with a whopping 256MB of RAM. Well, doesn’t hurt to try.
Following the instructions in my earlier posts, skipping the parts relating to virtual machines, I was able to get PiaF installed on the PE 2400 in a little over an hour (it took quite a while to compile Asterisk!). Transferring my setup from the virtual to the physical machine using the FreePBX Backup & Restore functionality was a snap. I forgot the tftp setup at first, but was able to quickly add that, simply copying the contents of /tftpboot from the virtual to the physical machine.
Somewhat to my astonishment, it works great! This old clunker, destined for the free Dell recycling at Staples, now has new life. Even without bridging the audio, the jittery voice is gone. I wouldn’t try this in a large office, but for a home office, it seems fine. In fact, my Kill A Watt tells me that this old PowerEdge only uses about 75 – 90 watts of power, not much more than the Optiplex workstation (53 – 80 watts).
Conclusions
I still love the idea of using a virtual machine for a PBX, and with a strong enough host, it’s probably a viable alternative for production. It’s definitely a great way to test various configurations and features. And if my physical machine fails, I can boot the virtual machine and have phone service again in about three minutes. But based on the hardware I already have and the Asterisk features I like, it looks like I’ll be running physical for now.