Do any Common Lisp implementations work well on VPSes?

Discussion of Common Lisp
Post Reply
WalterGR
Posts: 7
Joined: Fri Jan 09, 2009 6:12 pm
Contact:

Do any Common Lisp implementations work well on VPSes?

Post by WalterGR » Tue Aug 31, 2010 3:52 pm

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.

sinnatagg
Posts: 29
Joined: Tue Apr 21, 2009 3:04 am

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

Post by sinnatagg » Wed Sep 01, 2010 1:30 am

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

findinglisp
Posts: 447
Joined: Sat Jun 28, 2008 7:49 am
Location: Austin, TX
Contact:

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

Post by findinglisp » Sat Sep 04, 2010 11:45 am

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.
Cheers, Dave
Slowly but surely the world is finding Lisp. http://www.findinglisp.com/blog/

Post Reply