Hey,
I've read loads of threads on this forum and on the Zimbra forum about getting it working on OpenVZ or Virtuozzo... this is NOT going to be another one of those threads. However I am going to use Zimbra as an example of the scenario I'm trying to a) understand and b) solve.
When you make an OpenVZ container you give it memory and swap, I now know it's an absolute fraud as OpenVZ containers don't actually have swap. So my understanding is that Proxmox gives the container a limit of whatever memory + swap equals which shows in the container as simply memory, however it guarantees that what you've set as memory on the Proxmox VE control panel will be available to that container.
Now according to the Zimbra web site if you're simply evaluating the product you can get away with 1GB of memory, and that's all I'd like to do at this stage. If however I set a RAM of 1GB and swap of 1GB, then the privvmpages failcnt increases whilst installing and starting up Zimbra... and Zimbra never loads properly. If I set privvmpages and/or set the memory/swap of the container to a stupidly high number then it still has some failcnt's too!
As a test I created a tiny KVM based virtual machine with only a (purposefully tiny - to make a point) 512MB of memory, installed a minimal Debian Lenny and it automatically assigned 1.5GB of swap. Zimbra installed on it perfectly.
So I'm assigning blame to OpenVZ. Now I know this is "container virtualization" and the benefits are "overselling" the resources of your containers as it shares the hosts disk, kernel, and memory... which is why I love OpenVZ. But what you also have to consider is that what software runs inside a container shouldn't have to be modified or tweaked in anyway (the only limitation is you can't have your own kernel).
My blame is also with Proxmox VE as it gives an illusion of swap size that isn't followed through when you look at it from the point of view of the container. Now I'm told 2.6.27 includes an option for --swappages which sounds good. To me this sounds like exactly the same configuration as before, only this time a program like Java running inside the container can properly judge what it's boundaries should be for resource allocation and maybe work better?
Or perhaps there is some other reason why OpenVZ just can't cut it, and this isn't a fix after all?
I welcome any and all debate on this, but please bear in mind I do not want to see any ideas that fall along the lines of...
- Giving the container a stupid amount of memory, swap, or privvmpages (which is the same isn't it?) when it shouldn't be needed as proved by the KVM machine.
- Garbage about how you don't like Zimbra or suggestions for alternatives.
- Reconfiguring Zimbra, Java, or any other container side software to behave differently when it shouldn't have to.
- Anyone telling me to ditch OpenVZ for something else in this matter.
If there is some magic OpenVZ setting I need to use to make it deal with memory requests/restraints better, in the way a typical real physical server or a KVM server would handle it... why isn't this set as default?
Sorry if I've come across a bit strong in this post, but I've had a hell of a time with this and it has wore my patience thin.
Steven.
I've read loads of threads on this forum and on the Zimbra forum about getting it working on OpenVZ or Virtuozzo... this is NOT going to be another one of those threads. However I am going to use Zimbra as an example of the scenario I'm trying to a) understand and b) solve.
When you make an OpenVZ container you give it memory and swap, I now know it's an absolute fraud as OpenVZ containers don't actually have swap. So my understanding is that Proxmox gives the container a limit of whatever memory + swap equals which shows in the container as simply memory, however it guarantees that what you've set as memory on the Proxmox VE control panel will be available to that container.
Now according to the Zimbra web site if you're simply evaluating the product you can get away with 1GB of memory, and that's all I'd like to do at this stage. If however I set a RAM of 1GB and swap of 1GB, then the privvmpages failcnt increases whilst installing and starting up Zimbra... and Zimbra never loads properly. If I set privvmpages and/or set the memory/swap of the container to a stupidly high number then it still has some failcnt's too!
As a test I created a tiny KVM based virtual machine with only a (purposefully tiny - to make a point) 512MB of memory, installed a minimal Debian Lenny and it automatically assigned 1.5GB of swap. Zimbra installed on it perfectly.
So I'm assigning blame to OpenVZ. Now I know this is "container virtualization" and the benefits are "overselling" the resources of your containers as it shares the hosts disk, kernel, and memory... which is why I love OpenVZ. But what you also have to consider is that what software runs inside a container shouldn't have to be modified or tweaked in anyway (the only limitation is you can't have your own kernel).
My blame is also with Proxmox VE as it gives an illusion of swap size that isn't followed through when you look at it from the point of view of the container. Now I'm told 2.6.27 includes an option for --swappages which sounds good. To me this sounds like exactly the same configuration as before, only this time a program like Java running inside the container can properly judge what it's boundaries should be for resource allocation and maybe work better?
Or perhaps there is some other reason why OpenVZ just can't cut it, and this isn't a fix after all?
I welcome any and all debate on this, but please bear in mind I do not want to see any ideas that fall along the lines of...
- Giving the container a stupid amount of memory, swap, or privvmpages (which is the same isn't it?) when it shouldn't be needed as proved by the KVM machine.
- Garbage about how you don't like Zimbra or suggestions for alternatives.
- Reconfiguring Zimbra, Java, or any other container side software to behave differently when it shouldn't have to.
- Anyone telling me to ditch OpenVZ for something else in this matter.
If there is some magic OpenVZ setting I need to use to make it deal with memory requests/restraints better, in the way a typical real physical server or a KVM server would handle it... why isn't this set as default?
Sorry if I've come across a bit strong in this post, but I've had a hell of a time with this and it has wore my patience thin.
Steven.