Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

UBC secondary parameters

4,517 bytes added, 13:13, 22 August 2006
created (needs more work)
{{UBC toc}}

Secondary (dependant) UBC parameters are directly connected
to the [[UBC primary parameters|primary ones]] and can't be configured arbitrarily.

== kmemsize ==
Size of unswappable memory, allocated by the operating system kernel.

It includes all the kernel internal data structures associated with the
Virtual Environment's processes, except the network buffers discussed below.
These data structures reside in the first gigabyte of the computer's RAM,
so called [[UBC systemwide configuration#“Low memory”|“low memory”]].

This parameter is related to the number of processes ([[numproc]]).
Each process consumes certain amount of kernel memory —
24 kilobytes at minimum, 30–60 KB typically.
Very large processes may consume much more than that.

It is important to have a certain safety gap between the <code>barrier</code> and
the <code>limit</code> of the <code>kmemsize</code> parameter
(for example, 10%, as in [[UBC examples]]). Equal <code>barrier</code> and <pre>limit</pre> of
the <code>kmemsize</code> parameter may lead to the situation where the kernel will
need to kill Virtual Environment's applications to keep the <code>kmemsize</code>
usage under the limit.

<code>Kmemsize</code> limits can't be set arbitrarily high.
The total amount of <code>kmemsize</code> consumable by all Virtual Environments
in the system plus the socket buffer space (see below) is limited by the
hardware resources of the system.
This total limit is discussed in [[UBC systemwide configuration#“Low memory”|“low memory”]].

== tcpsndbuf ==
The total size of buffers used to send data over TCP network connections.
These socket buffers reside in [[UBC systemwide configuration#“Low memory”|“low memory”]].

<code>Tcpsndbuf</code> parameter depends on number of TCP
sockets ([[numtcpsock]]) and should allow for some minimal amount of
socket buffer memory for each socket, as discussed in [[UBC consistency check]]:

<math>tcpsndbuf_{lim} - tcpsndbuf_{bar} \ge 2.5KB \cdot numtcpsock \rm.\cr}</math>

If this restriction is not satisfied, some network connections
may silently stall, being unable to transmit data.

Setting high values for <code>tcpsndbuf</code> parameter
may, but doesn't necessarily, increase performance of network communications.
Note that, unlike most other parameters, hitting <code>tcpsndbuf</code>
limits and failed socket buffer allocations
do not have strong negative effect on the applications, but just reduce
performance of network communications.

<code>Tcpsndbuf</code> limits can't be set arbitrarily high.
The total amount of <code>tcpsndbuf</code> consumable by all Virtual Environments
in the system plus the <code>kmemsize</code> and other socket buffers is limited
by the hardware resources of the system.
This total limit is discussed in [[UBC systemwide configuration#“Low memory”|“low memory”]].

== tcprcvbuf ==
The total size of buffers used to temporary store the data coming from TCP network connections.
These socket buffers also reside in [[UBC systemwide configuration#“Low memory”|“low memory”]].

<code>Tcprcvbuf</code> parameter depends on number of TCP
sockets ([[numtcpsock]]) and should allow for some minimal amount of
socket buffer memory for each socket, as discussed in [[UBC consistency check]]:

<math>
tcprcvbuf_{lim} - tcprcvbuf_{bar} \ge 2.5KB \cdot numtcpsock \rm.\cr}
</math>

If this restriction is not satisfied, some network connections
may stall, being unable to receive data, and will be terminated
after a couple of minutes.

Similarly to <code>tcpsndbuf</code>, setting high values for <code>tcprcvbuf</code>
parameter may, but doesn't necessarily, increase performance of network
communications.
Hitting <code>tcprcvbuf</code> limits and failed socket buffer allocations
do not have strong negative effect on the applications, but just reduce
performance of network communications.
However, staying above the <code>barrier</code> of <code>tcprcvbuf</code> parameter
for a long time is less harmless than for <code>tcpsndbuf</code>.
Long periods of exceeding the <code>barrier</code> may cause termination
of some connections.

<code>Tcprcvbuf</code> limits can't be set arbitrarily high.
The total amount of <code>tcprcvbuf</code> consumable by all Virtual Environments
in the system plus the <code>kmemsize</code> and other socket buffers is limited
by the hardware resources of the system.
This total limit is discussed in [UBC systemwide configuration#“Low memory”|“low memory”]].