<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openvz.org/index.php?action=history&amp;feed=atom&amp;title=User%3AKir%2F042stab040_improvements</id>
	<title>User:Kir/042stab040 improvements - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openvz.org/index.php?action=history&amp;feed=atom&amp;title=User%3AKir%2F042stab040_improvements"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;action=history"/>
	<updated>2026-06-13T22:40:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11597&amp;oldid=prev</id>
		<title>Kir: /* Some numbers */ +more patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11597&amp;oldid=prev"/>
		<updated>2011-11-14T19:50:44Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Some numbers: &lt;/span&gt; +more patches&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:50, 14 November 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l138&quot; &gt;Line 138:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 138:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Totally, there are 53 new patches in 042stab040.1, compared to previous&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Totally, there are 53 new patches in 042stab040.1, compared to previous&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;039 kernels. We hope that the end result is improved stability and&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;039 kernels. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;On top of that, 042stab042.1 adds another 30.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We hope that the end result is improved stability and&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;performance.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;performance.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key openvzwikidb:diff::1.12:old-11582:rev-11597 --&gt;
&lt;/table&gt;</summary>
		<author><name>Kir</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11582&amp;oldid=prev</id>
		<title>Kir: /* Stats and conclusions */ -&gt; /* Some numbers */</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11582&amp;oldid=prev"/>
		<updated>2011-11-09T15:51:11Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Stats and conclusions: &lt;/span&gt; -&amp;gt; ‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Some numbers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 15:51, 9 November 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l135&quot; &gt;Line 135:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 135:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;kernel NFS server and VZ disk quota.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;kernel NFS server and VZ disk quota.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Stats and conclusions &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Some numbers &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Totally, there are 53 new patches in 042stab040.1, compared to previous&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Totally, there are 53 new patches in 042stab040.1, compared to previous&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;039 kernels. We hope that the end result is improved stability and&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;039 kernels. We hope that the end result is improved stability and&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;performance.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;performance.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kir</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11581&amp;oldid=prev</id>
		<title>Kir: /* Some VSwap internals */ fix pre -&gt; code</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11581&amp;oldid=prev"/>
		<updated>2011-11-09T15:50:30Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Some VSwap internals: &lt;/span&gt; fix pre -&amp;gt; code&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 15:50, 9 November 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l77&quot; &gt;Line 77:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 77:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;by this container&amp;quot; (i.e. physpages).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;by this container&amp;quot; (i.e. physpages).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Directory &lt;/del&gt;entry cache''' (dcache for short) is yet another sort of cache,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Second is &lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;directory &lt;/ins&gt;entry cache''' (dcache for short) is yet another sort of cache,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;and another sort of the kernel memory. Disk contents is a tree of files and directories,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;and another sort of the kernel memory. Disk contents is a tree of files and directories,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;and such a tree is quite tall and wide. In order to read the contents of, say,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;and such a tree is quite tall and wide. In order to read the contents of, say,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;/bin/sh&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt; file, kernel have to read the root (&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;/&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;) directory, find '&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;bin&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;' entry&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt;/bin/sh&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt; file, kernel have to read the root (&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt;/&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt;) directory, find '&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt;bin&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt;' entry&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;in it, read &amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt;/bin&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pre&lt;/del&gt;&amp;gt; directory, find '&amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt;' entry in it and finally read it.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;in it, read &amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt;/bin&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;code&lt;/ins&gt;&amp;gt; directory, find '&amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt;' entry in it and finally read it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Although these operations are not very complex, there is a multitude of those, they take time&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Although these operations are not very complex, there is a multitude of those, they take time&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;and are repeated often for most of the &amp;quot;popular&amp;quot; files. In order to improve performance,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;and are repeated often for most of the &amp;quot;popular&amp;quot; files. In order to improve performance,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kir</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11580&amp;oldid=prev</id>
		<title>Kir: created</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=User:Kir/042stab040_improvements&amp;diff=11580&amp;oldid=prev"/>
		<updated>2011-11-09T15:49:03Z</updated>

		<summary type="html">&lt;p&gt;created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== vSwap ==&lt;br /&gt;
&lt;br /&gt;
The best feature of the new (RHEL6-based) 042 series of the OpenVZ kernels&lt;br /&gt;
is definitely vSwap. The short story is, we used to have 22 user beancounter&lt;br /&gt;
parameters which every seasoned OpenVZ user knows by heart. Each of these&lt;br /&gt;
parameters is there for a reason, but 22 knobs are a bit too complex&lt;br /&gt;
to manage for a mere mortal, especially bearing in mind that&lt;br /&gt;
&lt;br /&gt;
* many of them are interdependent;&lt;br /&gt;
* the sum of all limits should not exceed the resources of a given physical server.&lt;br /&gt;
&lt;br /&gt;
Keeping this configuration optimal (or even consistent) is quite a&lt;br /&gt;
challenging task even for a senior OpenVZ admin (with a probable exception&lt;br /&gt;
of an ex airline pilot). This complexity is the main reason why&lt;br /&gt;
there are multiple articles and blog entries complaining OpenVZ is worse&lt;br /&gt;
than Xen, or that it is not suitable for hosting Java apps.&lt;br /&gt;
&lt;br /&gt;
We do have some workarounds to mitigate this complexity, such as:&lt;br /&gt;
* precreated container configs with sane defaults for beancounters;&lt;br /&gt;
* some special tools (vzsplit and vzcfgvalidate);&lt;br /&gt;
* the comprehensive User Beancounters manual.&lt;br /&gt;
&lt;br /&gt;
This is still not the way to go. While we think high of our users,&lt;br /&gt;
we do not expect all of them to be ex airline pilots. To solve the complexity,&lt;br /&gt;
the number of per-container knobs and handles should be reduced to some decent number,&lt;br /&gt;
or at least most of these knobs should be optional.&lt;br /&gt;
&lt;br /&gt;
We worked on that for a few years, and the end result is called vSwap&lt;br /&gt;
(where V is for Vendetta, oh, pardon me, Virtual).&lt;br /&gt;
&lt;br /&gt;
'''vSwap concept''' is as simple as a rectangular. For each container, there are&lt;br /&gt;
only two required parameters: the memory size (known as [[physpages]])&lt;br /&gt;
and the swap size ([[swappages]]). Almost everyone (not only an admin,&lt;br /&gt;
but even an advanced end user) knows what is RAM and what is swap.&lt;br /&gt;
On a physical server, if there is not enough memory, the system starts to&lt;br /&gt;
swap out memory pages to disk, then swap in some other pages, which results in&lt;br /&gt;
severe performance degradation but it keeps the system from failing miserably.&lt;br /&gt;
&lt;br /&gt;
It's about the same with vSwap, except that&lt;br /&gt;
* RAM and swap are configured on a per container basis;&lt;br /&gt;
* no I/O is performed until it is really necessary (this is why swap is virtual).&lt;br /&gt;
&lt;br /&gt;
== Some VSwap internals ==&lt;br /&gt;
&lt;br /&gt;
Now, there are only two knobs per container on a dashboard, namely RAM and swap,&lt;br /&gt;
and all the complexity is hidden under the hood. I am going to describe just&lt;br /&gt;
a bit of that undercover mechanics and explain what does the&lt;br /&gt;
&amp;quot;Reworked VSwap kernel memory accounting&amp;quot; line from the 042stab040.1 kernel&lt;br /&gt;
changelog stands for.&lt;br /&gt;
&lt;br /&gt;
The biggest problem is, RAM for containers is not just RAM. First of all,&lt;br /&gt;
there is a need to distinguish between&lt;br /&gt;
* the user memory&lt;br /&gt;
* the kernel memory&lt;br /&gt;
* the page cache&lt;br /&gt;
* and the directory entry cache.&lt;br /&gt;
&lt;br /&gt;
The '''user memory''' is more or less clear, it is simply the memory that programs&lt;br /&gt;
allocate for themselves to run. It is relatively easy to account for, and it is&lt;br /&gt;
relatively simple to limit it (but read on).&lt;br /&gt;
&lt;br /&gt;
The '''kernel memory''' is really complex thingie. Right, it is the memory that kernel&lt;br /&gt;
allocates for itself in order for programs in a particular container to run.&lt;br /&gt;
This includes a lot of stuff I'd rather not dive into, if I want to keep&lt;br /&gt;
this piece as an article not a tome. Having said that, two particular kernel&lt;br /&gt;
memory types are worth explaining.&lt;br /&gt;
&lt;br /&gt;
First is a '''page cache''', the kernel mechanism that caches disk contents in&lt;br /&gt;
memory (that would be unused otherwise) to minimize the I/O. When a program&lt;br /&gt;
reads some data from a disk, that data are read into the page cache first,&lt;br /&gt;
and when a program writes to a disk, data goes to the page cache (and&lt;br /&gt;
then eventually are written (flushed) to disk). In case of repeated disk&lt;br /&gt;
access (which happens quite often) data is taken from a page cache, not&lt;br /&gt;
from the real disk, which greatly improves the overall system performance,&lt;br /&gt;
since a disk is much slower than RAM. Now, some of the page cache is used&lt;br /&gt;
on behalf of a container, and this amount must be charged into &amp;quot;RAM used&lt;br /&gt;
by this container&amp;quot; (i.e. physpages).&lt;br /&gt;
&lt;br /&gt;
'''Directory entry cache''' (dcache for short) is yet another sort of cache,&lt;br /&gt;
and another sort of the kernel memory. Disk contents is a tree of files and directories,&lt;br /&gt;
and such a tree is quite tall and wide. In order to read the contents of, say,&lt;br /&gt;
&amp;lt;pre&amp;gt;/bin/sh&amp;lt;/pre&amp;gt; file, kernel have to read the root (&amp;lt;pre&amp;gt;/&amp;lt;/pre&amp;gt;) directory, find '&amp;lt;pre&amp;gt;bin&amp;lt;/pre&amp;gt;' entry&lt;br /&gt;
in it, read &amp;lt;pre&amp;gt;/bin&amp;lt;/pre&amp;gt; directory, find '&amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt;' entry in it and finally read it.&lt;br /&gt;
Although these operations are not very complex, there is a multitude of those, they take time&lt;br /&gt;
and are repeated often for most of the &amp;quot;popular&amp;quot; files. In order to improve performance,&lt;br /&gt;
kernel keeps directory entries in memory — this is what dcache is for.&lt;br /&gt;
The memory used by dcache should also be accounted and limited, since otherwise&lt;br /&gt;
it's easily exploitable (not only by root, but also by an ordinary user, since&lt;br /&gt;
any user is free to change into directories and read files).&lt;br /&gt;
&lt;br /&gt;
Now, the physical memory of a container is the sum of its user memory,&lt;br /&gt;
the kernel memory, the page cache and the dcache. Technically, dcache is accounted&lt;br /&gt;
into the kernel memory, then kernel memory is accounted into the physical memory,&lt;br /&gt;
but it's not overly important.&lt;br /&gt;
&lt;br /&gt;
== Improvements in the new 042stab040 kernel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Better reclamation and memory balancing ===&lt;br /&gt;
What to do if a container hit a physical memory limit? Free some pages by&lt;br /&gt;
writing their contents to the abovementioned virtual swap. Well, not quite yet.&lt;br /&gt;
Remember that there is also a page cache and a dcache, so the kernel can easily&lt;br /&gt;
discard some of the pages from these caches, which is way cheaper than swapping out.&lt;br /&gt;
&lt;br /&gt;
The process of finding some free memory is known as reclamation. Kernel&lt;br /&gt;
needs to decide very carefully when to start reclamation, how many and&lt;br /&gt;
what exact pages to reclaim  in every particular situation, and when&lt;br /&gt;
it is the right time to swap out rather than discard some of the cache contents.&lt;br /&gt;
&lt;br /&gt;
Remember, we have four types of memory (kernel, user, dcache and page cache)&lt;br /&gt;
and only one knob which limits the sum of all these. It would be easier for&lt;br /&gt;
the kernel, but not for the user, to have separate limits for each type&lt;br /&gt;
of memory. But, for the user convenience and simplicity, the kernel only have&lt;br /&gt;
one knob for these four parameters, so it needs to balance between those four.&lt;br /&gt;
One major improvement in 042stab040 kernel is that such balancing is now&lt;br /&gt;
performed better.&lt;br /&gt;
&lt;br /&gt;
=== Stricter memory limit ===&lt;br /&gt;
&lt;br /&gt;
During the lifetime of a container, the kernel might face a situation when it&lt;br /&gt;
needs more kernel memory, or user memory, or perhaps more dcache entries, and&lt;br /&gt;
the memory for the container is tight (i.e. close to the limit), so it needs&lt;br /&gt;
to either reclaim or swap. The problem is there are some situations when&lt;br /&gt;
neither reclamation nor swapping is possible, so the kernel can either fail&lt;br /&gt;
miserably (say by killing a process) or go beyond the limit and hope that&lt;br /&gt;
everything will be fine and mommy won't notice. Another big improvement&lt;br /&gt;
in 042stab040 kernel is it reduces the number of such situations, in other&lt;br /&gt;
words, the new kernel obeys memory limit in a more strict way.&lt;br /&gt;
&lt;br /&gt;
=== Polishing ===&lt;br /&gt;
&lt;br /&gt;
Finally, the kernel is now in a pretty good shape, so we can afford some&lt;br /&gt;
polishing, minor optimizations, and fine tuning. Such polishing was performed&lt;br /&gt;
in a few subsystems, including checkpointing, user beancounters, netfilter,&lt;br /&gt;
kernel NFS server and VZ disk quota.&lt;br /&gt;
&lt;br /&gt;
=== Stats and conclusions ===&lt;br /&gt;
&lt;br /&gt;
Totally, there are 53 new patches in 042stab040.1, compared to previous&lt;br /&gt;
039 kernels. We hope that the end result is improved stability and&lt;br /&gt;
performance.&lt;/div&gt;</summary>
		<author><name>Kir</name></author>
		
	</entry>
</feed>