Page 1 of 1

Do any Common Lisp implementations work well on VPSes?

Posted: Tue Aug 31, 2010 3:52 pm
by WalterGR
Everything I'd read before today suggested that Lisp (especially SBCL) and VPSes don't work well together. I started a discussion over at Reddit about this:
I'm looking to switch all of my web development to Common Lisp. Everything I've read over the past couple years suggests that current CL implementations don't work well on VPSes (Virtual Private Servers.) Is that still the case?

I've heard of the successful deployment of CL-based websites, but I've never seen specifics provided. Has anyone here had success running a decently-sized website on (say) Linode or Slicehost?
http://www.reddit.com/r/lisp/comments/d ... k_well_on/

I'd love to hear LispForum's thoughts as well. Any success stories? Please be sure to mention the VPS provider or implementation, Lisp implementation (any special configuration required?) and RAM amount.

Re: Do any Common Lisp implementations work well on VPSes?

Posted: Wed Sep 01, 2010 1:30 am
by sinnatagg
I got a web app running SBCL on the smallest slicehost account for about a year and a half.

It's usually working just fine with the defaults. It's not big, but it's a production app doing useful stuff for real users. The deployed version is quite lean and doesn't use too much memory.


-a

Re: Do any Common Lisp implementations work well on VPSes?

Posted: Sat Sep 04, 2010 11:45 am
by findinglisp
It highly depends on how the Lisp implementation works and how the VPS is implemented. The short description of the problem is that some Lisps (SBCL) make a lot of assumptions about the address space they are going to be loaded into, such as what address ranges are used. They optimize their load time through these assumptions, adjusting as little as possible of their core file, for instance. In a non-virtualized environment, these assumptions typically hold, but they can be violated in virtualized environment.

There are typically two types of VPS implementation:
  1. a "containers" system like Parallels Virtuozzo
  2. a true hypervisor system like VMware or Xen
Containers-based systems are much more efficient at packing VMs onto hardware (they are more memory efficient). Unfortunately, they violate the address space assumptions used by Lisps like SBCL. True hypervisor systems (VMware, Xen, VirtualBox, Parallels on Mac OSX) do not have this problem. But they also can't pack as many virtual machines onto hardware, so many hosting companies prefer containers-based systems like Virtuozzo because they make the hardware go farther.

Note that only some CLs are affected, notably SBCL and CMUCL. CLISP and ECL should still work fine, I believe. Unfortunately, most other programs and scripting languages (Perl, Python, Ruby, PHP, etc.) are not affected by this, so there is little incentive for the hosting companies to see this as a problem with their virtualization environment; rather, they'll view it as a problem with Lisp.