Thu, 29 Oct 2009 15:27:31 -0700 On Oct 28, 2009, at 3:42 PM, ADNET Ghislain wrote: > Jarry a écrit : >> Hi, >> >> I have set up memory limits for all my vserver-guests with >> rlimits/rss.soft and rss.hard. Now sometimes I hit on memory >> limits, e.g. when compilling gcc (which I do quite frequently >> because all my guests are gentoo). >> >> But I can not increase memory limits for all vserver-guests, >> because when counted together, it would be more than physical >> memory + swap of my vserver-host. >> >> So my question is: >> Is it possible to set those limits dynamically? What I mean >> is something similar as for cpu-time: to grant a guest certain >> memory, and in addition, some common "memory-pool" from which >> any guest could grab memory, if needed. And if "memory-pool" >> is empty, a guest does not get any extra memory. >> >> Jarry >> > hi jarry, > > from: http://linux-vserver.org/util-vserver:Cheatsheet > > it seems that > > vlimit : to change the limits of a live guest (cpu, fsize, data, > stack, core, rss, nproc,nofile, memlock, as, locks, msgqueue, nsock, > openfd, anon, shmem, semary,nsems, and dentry). > > should be the tools for that. > Here's a little shell script we use to temporarily double the available memory on a guest, setting it back how it was afterwards. It acts as a wrapper around 'vserver' and also works for 'vserver blah enter'. It's not especially robust but it works for our needs... #!/bin/sh # run a vserver command on a guest after doubling the allowed memory V=$1 shift guest as=`cat /etc/vservers/$V/rlimits/as.soft` guest rss=`cat /etc/vservers/$V/rlimits/rss.soft` guest rss hard=`cat /etc/vservers/$V/rlimits/rss.hard` let guest as big="$guest as * 2" let guest rss big="$guest rss * 2" let guest rss hard big="$guest rss hard * 2" /usr/sbin/vserver $V running && (/usr/sbin/vlimit --xid $V -H --as $guest as big; /usr/sbin/vlimit --xid $V -S --as $guest as big; /usr/ sbin/vlimit --xid $V -H --rss $guest rss hard big; /usr/sbin/vlimit -- xid $V -S --rss $guest rss big) vserver $V "$@" /usr/sbin/vserver $V running && (/usr/sbin/vlimit --xid $V -H --as $guest as; /usr/sbin/vlimit --xid $V -S --as $guest as; /usr/sbin/ vlimit --xid $V -H --rss $guest rss hard; /usr/sbin/vlimit --xid $V -S --rss $guest rss) - Dallas