[Seaside] Deploying a big Squeak/Pharo Seaside application

Miguel Enrique Cobá Martinez miguel.coba at gmail.com
Wed Sep 16 22:05:10 UTC 2009


El mié, 16-09-2009 a las 19:29 -0100, Mariano Martinez Peck escribió:
> Hi folks: First of all, please if someone answers this mail do it to
> all as I have cc Gerardo.
> 
> After ESUG talks I was imagining a way to deploy big seaside
> applications. Something like this architecture:
> 
> SqueakNOS
> SqueakVM 
> Image: The KernelImage that Pavel did. For Pharo it is something like
> 3MB I think. If you add morphic you can then use the VNC and I think
> it is 5MB. Then we should load there seaside, the dependencies and all
> of our code.
> 
> With this, I can have one real server with a host OS and use VMWare
> for example to have N number of SqueakNOS images. Each of the
> SqueakNOS image can have in addition, M number of images running at
> the same time. 
> Finally we can have a cluster of real pcs and just drag and drop our
> SqueakNOS VMWare images from one pc to another.
> 
> So...I wonder:
> 
> ¿Is this a good idea?
Maybe but must be refined.

> ¿Should this have better performance than just having several images
> running in the same pc?
Nope I would think.

- Unless you have a dedicated VMWare ESX server running in bare hardware
you will have other layer until the CPU.
- VMWare will be doing a lot of process swapping to give each vmware
virtual machine its cpu slice time if you have a lot of virtual machines
(that I think is your idea)
- SqueakNOS will be swaping also between squeakvm instances, also, doing
disk access for them.
- The squeakvm will be managing squeak processes that run your
application.

I don't know what is the performance and tuning that squeaknos has been
given to, but I don't think that can compete with the vmware and OS
memory and disk managers.

> ¿Are there any advantages or disadvantages with this approach?
> 
> I don't have any big seaside application at all, but I was just
> thinking hahaha.

I think that the best approach is to have a couple of medium-big servers
with scsi disks and a several good cpus. This servers will run a lot of
squeakvm/pharo images pairs, on different ports. Lets say 8M from pharo
+ 1 MB from squeakvm + 13 MB from your app ~ 32 MB per pair, in a
machine with 6GB ram free for user processes you can host 6*1024/32 =
192 pairs per machine. Lets suppose that in a real situation you can
have 50 images running in each machine without swaping and a lot of
process swaping (a lot more can be made work of course, but lets stay
with 50). If you have 2 servers like this, you will have 100 images
running without problems.
Now you get a cisco router or a cheap pentium (even a 486 can do it)
with good ethernet cards and a bare bone linux install to proxy and load
balancing your app between the 100 images. If a linux server you can
use:
- iptables
- the linux kernel webserver
- nginx
- lighttpd
- apache

This:

1. avoids several layers of process swapping
2. uses a fine tuned filesystem to write to disk
3. uses a fine tuned os to do the process scheduling
4. is more easily administered/configured
5. could be grown/reduced anytime with a setup like the one Avi and
Ramon use

Believe me, the vmware stuff runs ok if you don't put a lot of virtual
machines on the same physical machine and sharing the same resources
(net, i/o, etc)

-- 
Miguel Cobá
http://miguel.leugim.com.mx



More information about the seaside mailing list