64
edits
Changes
VSwap
,vswap in vz7 details added
'''New [[Download/kernel/rhel6|RHEL6-based OpenVZ]] kernel ''' has a new memory management model, which supersedes [[UBC|User beancounters]]. It is called '''VSwap'''.
* '''physpages'''
: This parameter limits sets the amount of fast physical memory (RAM) available to processes inside a container, in memory pages. Currently (as of 042stab042 kernel) the user memory, the kernel memory and the page cache are accounted into <code>physpages</code>. : The <code>barrier</code> is ignoredand should be set to 0, and the <code>limit</code> sets the limit. * '''ram''': Currently the user memory and the page cache are accounted into <code>is an easy shortcut for physpages</code>.limit, and is measured in bytes
* '''swappages'''
: This parameter limits sets the amount of swap space which can be used for "slower memory" (vswap) available to processes inside a container, in memory pages. : The <code>barrier</code> is ignoredand should be set to 0, and the <code>limit</code> sets the limit. * '''swap''': is an easy shortcut for swappages.limit, and is measured in bytes
The sum of <code>physpages.limit</code> and <code>swappages.limit</code> limits the maximum amount
of allocated memory which can be used by a container. When physpages limit
is reached, memory pages belonging to the container are pushed out to
so called virtual swap (''vswap''). The difference between normal swap
on the system.
{{Note|swap used by a container can exceed <code>swappages.limit</code>, but is always within sum of <code>physpages.limit</code> and <code>swappages.limit</code>.}} === Secondary Implicit UBC parameters === Since vzctl 4.6, if some optional beancounters are not set, vzctl sets them implicitly,based on '''ram''' and '''swap'''Even though these settings . The following formulae are classed as secondaryused: <math>lockedpages_{bar} = oomguarpages_{bar} = ram</math> <math>lockedpages_{lim} = oomguarpages_{lim} = \infty</math> <math>vmguarpages_{bar} = vmguarpages_{lim} = ram + swap</math> ==== VM overcommit and privvmpages ==== vzctl 4.6 adds a new parameter, <code>--vm_overcommit</code>.Its only purpose is to be used in privvmpages calculation,in case VSwap is used and there is no explicit settingfor privvmpages. If <math>vm\_overcommit</math> is set: : <math>privvmpages_{bar} = privvmpages_{lim} = (ram + swap) \times vm\_overcommit</math> If it is not set: : <math>privvmpages_{bar} = privvmpages_{lim} = \infty</math> == Setting == {{Note|for VSwap, you need vswap-enabled kernel, ie [[Download/kernel/rhel6|RHEL6-based OpenVZ]] kernel.}} Since vzctl 3.0.30, you can use <code>--ram</code> and <code>--swap</code> parameters, like this: vzctl set 777 --ram 512M --swap 1G --save == Convert non-VSwap CT to VSwap == If you have an existing container with usual UBC parameters set, and you want to convert this one into VSwap enabled config, here's what you need to do. # Decide on how much RAM and swap you want this CT to have. Generally, sum of your new RAM+swap should be more or less equal to sum of old PRIVVMPAGES and KMEMSIZE.# Manually remove all UBC parameters from config. '''This is optional''', they are you can still important settings!have UBC limits applied if you want.# Add PHYSPAGES and SWAPPAGES parameters to config. Easiest way is to use <code>vzctl set $CTID --ram N --swap M --save</code> Now your config is vswap enabled, and when you (re)start it (or use <code>--reset_ub</code>), vswap mechanism will be used by the kernel for this CT. Here is an example of the above steps: CTID=123 RAM=1G SWAP=2G CFG=/etc/vz/conf/${CTID}.conf cp $CFG $CFG.pre-vswap grep -Ev '^(KMEMSIZE|LOCKEDPAGES|PRIVVMPAGES|SHMPAGES|NUMPROC|PHYSPAGES|VMGUARPAGES|OOMGUARPAGES|NUMTCPSOCK|NUMFLOCK|NUMPTY|NUMSIGINFO|TCPSNDBUF|TCPRCVBUF|OTHERSOCKBUF|DGRAMRCVBUF|NUMOTHERSOCK|DCACHESIZE|NUMFILE|AVNUMPROC|NUMIPTENT|ORIGIN_SAMPLE|SWAPPAGES)=' > $CFG < $CFG.pre-vswap vzctl set $CTID --ram $RAM --swap $SWAP --save vzctl set $CTID --reset_ub == How to distinguish between vswap and non-vswap configs? == Both <code>vzctl</code> and the kernel treats a configuration file as vswap one if PHYSPAGES limit is '''not'''set to <code>unlimited</code> (a.k.a. [[LONG_MAX]]). You can also use the following command: # vzlist -o vswap $CTID
In addition , vzctl checks if kernel support vswap, and refuses to start a vswap-enabled container on a non vswap capable kernel. The check is presence of <code>physpages</code> and <code>swappagesproc/vz/vswap</code> being set, it is ''currently'' recommended to:file.
[[Category: UBC]]