<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>OpenVZ</title>
  <link>http://openvz.livejournal.com/</link>
  <description>OpenVZ - LiveJournal.com</description>
  <lastBuildDate>Wed, 08 May 2013 00:06:13 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>openvz</lj:journal>
  <lj:journalid>9392309</lj:journalid>
  <lj:journaltype>community</lj:journaltype>
  <image>
    <url>http://l-userpic.livejournal.com/41043950/9392309</url>
    <title>OpenVZ</title>
    <link>http://openvz.livejournal.com/</link>
    <width>100</width>
    <height>84</height>
  </image>

<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/44228.html</guid>
  <pubDate>Wed, 08 May 2013 00:06:13 GMT</pubDate>
  <title>Announcing the OpenVZ Maintenance Partnership</title>
  <link>http://openvz.livejournal.com/44228.html</link>
  <description>&lt;small&gt;Big news for every serious OpenVZ user. Finally we have it!&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Parallels, a sponsor behind OpenVZ project, is now offering an &lt;a href=&quot;http://www.parallels.com/support/virtualization-suite/openvz/&quot; rel=&quot;nofollow&quot;&gt;OpenVZ Maintenance Partnership program&lt;/a&gt;. The program provides bug resolution support and feature development to the OpenVZ community. The OpenVZ Maintenance Partnership has a small annual fee and provides two benefits to partnership members.&lt;br /&gt;&lt;br /&gt;Partnership members will receive a support ID that will allow them to submit up to 10 high priority bugs per year. These bugs will be placed at the highest priority level in the development stack.&lt;br /&gt;&lt;br /&gt;Partnership members will also be able to submit a feature request(s) which will be reviewed by the Parallels engineering team. They will work with you to clarify the requirements and implementation options and provide an implementation estimate and a schedule.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.parallels.com/support/virtualization-suite/openvz/&quot; rel=&quot;nofollow&quot;&gt;Learn more and join the OpenVZ Maintenance Partnership here&lt;/a&gt;</description>
  <comments>http://openvz.livejournal.com/44228.html</comments>
  <category>maintenance</category>
  <category>openvz</category>
  <category>parallels</category>
  <category>support</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/43876.html</guid>
  <pubDate>Mon, 29 Apr 2013 18:52:48 GMT</pubDate>
  <title>vzstats in beta</title>
  <link>http://openvz.livejournal.com/43876.html</link>
  <description>For the last two weeks or so we&apos;ve been working on vzstats -- a way to get some statistics about OpenVZ usage. The system consists of a server, deployed to &lt;a href=&apos;http://stats.openvz.org/&apos; rel=&apos;nofollow&apos;&gt;http://stats.openvz.org/&lt;/a&gt;, and clients installed onto OpenVZ machines (hardware nodes). This is currently in beta testing, with 71 servers participating at the moment. If you want to participate, read &lt;a href=&apos;http://openvz.org/vzstats&apos; rel=&apos;nofollow&apos;&gt;http://openvz.org/vzstats&lt;/a&gt; and run &lt;code&gt;yum install vzstats&lt;/code&gt; on your OpenVZ boxes.&lt;br /&gt;&lt;br /&gt;So far we have some interesting results. We are not sure how representative they are -- probably they aren&apos;t, much more servers are needed to participate-- but nevertheless they are interested. Let&apos;s share a few preliminary findings.&lt;br /&gt;&lt;br /&gt;First, it looks like almost no one is using 32-bits on the host system anymore. This is reasonable and expected. Indeed, who needs system limited to 4GB of RAM nowdays?&lt;br /&gt;&lt;br /&gt;Second, many hosts stay on latest stable RHEL6-based OpenVZ kernel. This is pretty good and above our expectations.&lt;br /&gt;&lt;br /&gt;Third, very few run ploop-based containers. We don&apos;t understand why. Maybe we should write more about features you get from ploop, such as instant snapshots and improved live migration.</description>
  <comments>http://openvz.livejournal.com/43876.html</comments>
  <category>openvz</category>
  <category>beta</category>
  <category>vzstats</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>23</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/43728.html</guid>
  <pubDate>Sat, 23 Feb 2013 13:22:00 GMT</pubDate>
  <title>SCALE 11x Day 1 Report</title>
  <link>http://openvz.livejournal.com/43728.html</link>
  <description>The OpenVZ Project has a booth at SCALE 11x.  Kir and I will be staffing it.  I wrote a lengthy blog post with the day 1 report where you can read more if you want:&lt;br /&gt;&lt;br /&gt;&lt;a href=&apos;http://www.montanalinux.org/scale-11x-day-1.html&apos; rel=&apos;nofollow&apos;&gt;http://www.montanalinux.org/scale-11x-day-1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I talked with Kir for about a hour last night and asked him a lot of questions.  I got a lot of inside information that I will be sharing in the coming days... I promise... with pictures even.&lt;br /&gt;&lt;br /&gt;If you are in the Southern California area and can make it to SCALE, please stop by our booth.  We are #93.  Assuming there is a reasonable Internet connection at the booth, I also try to be &quot;Live from SCALE&quot; in the #openvz IRC channel.  The times are Saturday 10:00 - 18:00 PST and Sunday 10:00-16:00 PST.</description>
  <comments>http://openvz.livejournal.com/43728.html</comments>
  <category>openvz</category>
  <lj:music>Prince</lj:music>
  <media:title type="plain">Prince</media:title>
  <lj:mood>Excited</lj:mood>
  <lj:security>public</lj:security>
  <lj:poster>dowdle</lj:poster>
  <lj:posterid>9725912</lj:posterid>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/43275.html</guid>
  <pubDate>Mon, 22 Oct 2012 15:15:19 GMT</pubDate>
  <title>yet another strange performance comparison</title>
  <link>http://openvz.livejournal.com/43275.html</link>
  <description>You know I love to write about performance comparisons, right?&lt;br /&gt;&lt;br /&gt;I just came across the one I saw some time ago and forgot about it, but now it&apos;s linked from the Wikipedia article about OpenVZ. The paper (presented at OLS&apos;08) is comparing performance of OpenVZ, Linux-VServer, Xen, KVM and QEMU with the performance of non-virtualized Linux. The results are shocking! OpenVZ is &lt;b&gt;twice slower&lt;/b&gt; than reference system when doing bzip -9 of an iso image! Yet better, on a dbench test OpenVZ performance was about 13% of a reference system (which is &lt;b&gt;almost eight times slower&lt;/b&gt;), while Linux-VServer gave about 98%.&lt;br /&gt;&lt;br /&gt;Well guys, I want to tell you just one thing. If someone offers to sell you a car for 13% of the usual price — don&apos;t buy it, it&apos;s a scam and a seller is not to be trusted. If someone tells you OpenVZ is 2 (or 8) times slower than non-virtualized system — don&apos;t buy it either!&lt;br /&gt;&lt;br /&gt;I mean, I do know how complicated it is to have a sane test results. I spent about a year leading SWsoft QA team, mostly testing Linux kernels, and trying to make sure test results are sane and reproducible (not dependent on the moon phase etc). There are lots and lots of factors involved. But the main idea is simple: if results doesn&apos;t look plausible, if you can&apos;t explain them, dig deeper and find out why. Once you will, you will know how to exclude all the bad factors and conduct a proper test.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam</description>
  <category>linux-vserver</category>
  <category>performance</category>
  <category>openvz</category>
  <category>comparison</category>
  <category>xen</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/43060.html</guid>
  <pubDate>Tue, 16 Oct 2012 08:15:31 GMT</pubDate>
  <title>vzctl / ploop update</title>
  <link>http://openvz.livejournal.com/43060.html</link>
  <description>&lt;p&gt;We have updated vzctl, ploop and vzquota recently (I wrote about vzctl &lt;a href=&quot;http://openvz.livejournal.com/42793.html&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;). Some changes in packaging are tricky, so let me explain why and give some hints.&lt;/p&gt;

&lt;h3&gt;For RHEL5-based kernel users (i.e. ovzkernel-2.6.18-028stabXXX) and earlier kernels&lt;/h3&gt;

&lt;p&gt;Since ploop is only supported in RHEL6 kernel, we have removed ploop dependency from vzctl-4.0 (ploop library is loaded dynamically when needed and if available). Since you have earlier vzctl version installed, you also have ploop installed. Now you can remove it, at the same time upgrading to vzctl-4.0. That &quot;at the same time&quot; part is done via yum shell:&lt;/p&gt;

&lt;pre&gt;# yum shell
&amp;gt; remove ploop ploop-lib
&amp;gt; update vzctl
&amp;gt; run&lt;/pre&gt;

&lt;p&gt;That should fix it. In the meantime, think about upgrading your systems to RHEL6-based kernel which is better in terms of performance, features, and speed of development.&lt;/p&gt;

&lt;h3&gt;For RHEL6-based users (i.e. vzkernel-2.6.32-042stabXXX)&lt;/h3&gt;

&lt;p&gt;New ploop library (1.5) requires very recent RHEL6-based kernel kernel (version 2.6.32-042stab061.1 or later) and is not supposed to work with earlier kernels. To protect ploop from earlier kernels, its packaging says &quot;Conflicts: vzkernel &amp;lt; 2.6.32-042stab061.1&quot; which usually prevents ploop 1.5 installation on systems having those kernels.&lt;/p&gt;

&lt;p&gt;To fix this conflict, make sure you run the latest kernel, and then remove the old ones:&lt;/p&gt;

&lt;code&gt;# yum remove &quot;vzkernel &amp;lt; 2.6.32-042stab061.1&quot;&lt;/code&gt;

&lt;p&gt;Then you can run update as usual:&lt;/p&gt;
&lt;code&gt;# yum update&lt;/code&gt;

&lt;p&gt;Hope that helps&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam.&lt;/p&gt;</description>
  <category>yum</category>
  <category>ploop</category>
  <category>openvz</category>
  <category>vzctl</category>
  <category>rpm</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/42793.html</guid>
  <pubDate>Sat, 06 Oct 2012 09:31:53 GMT</pubDate>
  <title>OpenVZ turns 7, gifts are available!</title>
  <link>http://openvz.livejournal.com/42793.html</link>
  <description>&lt;p&gt;&lt;b&gt;OpenVZ project is 7 years old&lt;/b&gt; as of last month. It&apos;s hard to believe the number, but looking back, we&apos;ve done a lot of things together with you, our users.&lt;/p&gt;

&lt;p&gt;One of the main project goals was (and still is) to include the containers support upstream, i.e. to vanilla Linux kernel. In practice, OpenVZ kernel is a fork of the Linux kernel, and we don&apos;t like it that way, for a number of reasons. The main ones are:&lt;/p&gt;

&lt;p&gt;&lt;ul&gt;&lt;li&gt; We want everyone to benefit from containers, not just ones using OpenVZ kernel. Yes to world domination!&lt;/li&gt;
&lt;li&gt;We&apos;d like to concentrate on new features, improvements and bug fixes, rather than forward porting our changes to the next kernel.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;So, we were (and still are) working hard to bring in-kernel containers support upstream, and many key pieces are already there in the kernel -- for example, PID and network namespaces, cgroups and memory controller. This is the functionality that lxc tool and libvirt library are using. We also use the features we merged into upstream, so with every new kernel branch we have to port less, and the size of our patch set decreases.&lt;/p&gt;

&lt;h3&gt;CRIU&lt;/h3&gt;

&lt;p&gt;One of such features for upstream is checkpoint/restore, an ability to save running container state and then restore it. The main use of this feature is live migration, but there are other &lt;a href=&quot;http://criu.org/Usage_scenarios&quot; rel=&quot;nofollow&quot;&gt;usage scenarios as well&lt;/a&gt;. While the feature is present in OpenVZ kernel since April 2006, it was never accepted to upstream Linux kernel (nor was the other implementation proposed by Oren Laadan).&lt;/p&gt;

&lt;p&gt;For the last year we are working on &lt;a href=&quot;http://criu.org/&quot; rel=&quot;nofollow&quot;&gt;CRIU&lt;/a&gt; project, which aims to reimplement most of the checkpoint/restore functionality in userspace, with bits of kernel support where required. As of now, most of the additional kernel patches needed for CRIU are already there in kernel 3.6, and a few more patches are on its way to 3.7 or 3.8. Speaking of CRIU tools, they are currently at version 0.2, released 20th of September, which already have limited support for checkpointing and restoring an upstream container. Check &lt;a href=&quot;http://criu.org/&quot; rel=&quot;nofollow&quot;&gt;criu.org&lt;/a&gt; for more details, and give it a try. Note that this project is not only for containers -- you can checkpoint any process trees -- it&apos;s just the container is better because it is clearly separated from the rest of the system.&lt;/p&gt;

&lt;p&gt;One of the most important things about CRIU is we are NOT developing it behind the closed doors. As usual, we have wiki and git, but most important thing is every patch is going through the &lt;a href=&quot;http://openvz.org/pipermail/criu/&quot; rel=&quot;nofollow&quot;&gt;public mailing list&lt;/a&gt;, so everyone can join the fun.&lt;/p&gt;

&lt;h3&gt;vzctl for upstream kernel&lt;/h3&gt;

&lt;p&gt;We have also released vzctl 4.0 recently (25th of September). As you can see by the number, it is a major release, and the main feature is support for non-OpenVZ kernels. Yes it&apos;s true -- now you can have a feeling of OpenVZ without installing OpenVZ kernel. Any recent 3.x kernel should work.&lt;/p&gt;

&lt;p&gt;As with OpenVZ kernel, you can use ready container images we have for OpenVZ (so called &quot;OS templates&quot;) or employ your own. You can create, start, stop, and delete containers, set various resource parameters such as RAM and CPU limits. Networking (aside from routed-based) is also supported -- you can either move a network interface from host system to inside container (&lt;code&gt;--netdev_add&lt;/code&gt;), or use bridged setup (&lt;code&gt;--netif_add&lt;/code&gt;). I personally run this stuff on my Fedora 17 desktop using stock F17 kernel -- it just works!&lt;/p&gt;

&lt;p&gt;Having said all that, surely OpenVZ kernel is in much better shape now as it comes for containers support -- it has more features (such as live container shapshots and live migration), better resource management capabilities, and overall is more stable and secure. But the fact that the kernel is now optional makes the whole thing more appealing (or so I hope).&lt;/p&gt;

&lt;p&gt;You can find information on how to setup and start using vzctl at &lt;a href=&quot;http://wiki.openvz.org/Vzctl_for_upstream_kernel&quot; rel=&quot;nofollow&quot;&gt;vzctl for upstream kernel&lt;/a&gt; wiki page. The page also lists known limitations are pointers to other resources. I definitely recommend you to give it a try and share your experience! As usual, any bugs found are to be reported to &lt;a href=&quot;http://bugzilla.openvz.org/&quot; rel=&quot;nofollow&quot;&gt;OpenVZ bugzilla&lt;/a&gt;.

&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam&lt;/p&gt;</description>
  <category>kernel</category>
  <category>openvz</category>
  <category>vzctl</category>
  <category>criu</category>
  <category>crtools</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/42717.html</guid>
  <pubDate>Wed, 29 Aug 2012 21:02:16 GMT</pubDate>
  <title>OpenVZ Container Migration Screencast</title>
  <link>http://openvz.livejournal.com/42717.html</link>
  <description>In the last week or so I&apos;ve had several questions from new OpenVZ users about container migration.  They want to know how it works, what is the difference between live / online migration vs. offline... and how long it will take.  I made a silent screencast a few years ago but it is rather dated... and since I can easily add sound now, I thought I&apos;d make an updated screencast.  I didn&apos;t really put a lot of production value into it but overall it meets its objective.  I posted it to archive.org as a webm but they automatically convert it to flash and embed it... so enjoy whichever format you prefer.&lt;br /&gt;&lt;br /&gt;&lt;a href=&apos;http://archive.org/details/OpenvzContainerMigration&apos; rel=&apos;nofollow&apos;&gt;http://archive.org/details/OpenvzContainerMigration&lt;/a&gt; (archive.org page)&lt;br /&gt;&lt;a href=&apos;http://archive.org/download/OpenvzContainerMigration/openvz-vzmigrate.webm&apos; rel=&apos;nofollow&apos;&gt;http://archive.org/download/OpenvzContainerMigration/openvz-vzmigrate.webm&lt;/a&gt; (direct link to webm)</description>
  <comments>http://openvz.livejournal.com/42717.html</comments>
  <category>containers</category>
  <category>openvz</category>
  <lj:mood>amused</lj:mood>
  <lj:security>public</lj:security>
  <lj:poster>dowdle</lj:poster>
  <lj:posterid>9725912</lj:posterid>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/42414.html</guid>
  <pubDate>Tue, 24 Jul 2012 13:48:59 GMT</pubDate>
  <title>[CRIU] CRtools 0.1 released!</title>
  <link>http://openvz.livejournal.com/42414.html</link>
  <description>Checkpoint/restore, or CPT for short, is a nice feature of OpenVZ, and probably the most amazing one. In a nutshell, it&apos;s a way to freeze a container and dump its complete state (processes, memory, network connections etc) to a file on disk, and then restore from that dump, resuming processes execution as if nothing happened. This opens a way to do nifty things such as live container migration, fast reboots, high availability setups etc.&lt;br /&gt;&lt;br /&gt;It is our ultimate goal to merge all bits and pieces of OpenVZ to the mainstream Linux kernel. It&apos;s not a big secret that we failed miserably trying to merge the checkpoint/restore functionality (and yes, we have tried more than once). The fact that everyone else failed as well soothes the pain a bit, but is not really helpful. The reason is simple: CPT code is big, complex, and touches way too many places in the kernel.&lt;br /&gt;&lt;br /&gt;So we&lt;sup&gt;*&lt;/sup&gt; came up with an idea to implement most of CPT stuff in user space, i.e. as a separate program not as a part of the Linux kernel. In practice this is impossible because some kernel trickery is still required here and there, but the whole point was to limit kernel intervention to the bare minimum.&lt;br /&gt;&lt;br /&gt;Guess what? It worked even better that we expected. As of today, after about a year of development, up to 90% of the stuff that is needed to be in the kernel is already there, and the rest is ready and seems to be relatively easy to merge (see &lt;a href=&quot;http://criu.org/Commits&quot; rel=&quot;nofollow&quot;&gt;this table&lt;/a&gt; to get an idea what&apos;s in and what&apos;s not).&lt;br /&gt;&lt;br /&gt;As for the user space stuff, &lt;b&gt;we are happy to announce the release of CRtools version 0.1&lt;/b&gt;. Now, let me step aside and quote Pavel&apos;s announcement:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The tool can already be used for checkpointing and restoring various individual&lt;br /&gt;applications. And the greatest thing about this so far is that most of the below&lt;br /&gt;functionality has the required kernel support in the recently released v3.5!&lt;br /&gt;&lt;br /&gt;So, we support now&lt;br /&gt;&lt;br /&gt;* x86_64 architecture&lt;br /&gt;* process&apos; linkage&lt;br /&gt;* process groups and sessions (without ttys though :\ )&lt;br /&gt;* memory mappings of any kind (shared, file, etc.)&lt;br /&gt;* threads&lt;br /&gt;* open files (shared between tasks and partially opened-and-unlinked)&lt;br /&gt;* pipes and fifos with data&lt;br /&gt;* unix sockets with packet queues contents&lt;br /&gt;* TCP and UDP sockets (TCP connections support exists, but needs polishing)&lt;br /&gt;* inotifies, eventpoll and eventfd&lt;br /&gt;* tasks&apos; sigactions setup, credentials and itimers&lt;br /&gt;* IPC, mount and PID namespaces&lt;br /&gt;&lt;br /&gt;Though namespaces support is in there, we do not yet support an LXC container c/r,&lt;br /&gt;but we&apos;re close to it :)&lt;br /&gt;&lt;br /&gt;I&apos;d like to thank everyone who took part in new kernel APIs discussions, the&lt;br /&gt;feedback was great! Special thanks goes to Linus for letting the kernel parts&lt;br /&gt;in early, instead of making them sit out of tree till becoming stable enough.&lt;br /&gt;&lt;br /&gt;Tarball with the tool sources is at&lt;br /&gt;  &lt;a href=&apos;http://download.openvz.org/criu/crtools-0.1.tar.bz2&apos; rel=&apos;nofollow&apos;&gt;http://download.openvz.org/criu/crtools-0.1.tar.bz2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The git repo is at&lt;br /&gt;  &lt;a href=&apos;http://git.criu.org/&apos; rel=&apos;nofollow&apos;&gt;http://git.criu.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And some sort of docs growing at&lt;br /&gt;  &lt;a href=&apos;http://criu.org/&apos; rel=&apos;nofollow&apos;&gt;http://criu.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are still things for which we don&apos;t have the kernel support merged (SysVIPC&lt;br /&gt;and various anon file descriptors, i.e. inotify, eventpoll, eventfd) yet. We have&lt;br /&gt;the kernel branch with the stuff applied available at&lt;br /&gt;&lt;br /&gt;  &lt;a href=&apos;https://github.com/cyrillos/linux-2.6.git&apos; rel=&apos;nofollow&apos;&gt;https://github.com/cyrillos/linux-2.6.git&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;What&apos;s next? We will be rebasing OpenVZ to Linux Kernel 3.5 (most probably) and will try to re-use CRIU for checkpoint and restore of OpenVZ containers, effectively killing a huge chunk of out-of-tree kernel code that we have in OpenVZ kernel.&lt;br /&gt;&lt;br /&gt;* - In fact it was Pavel Emelyanov, our chief kernel architect, but it feels oh so nice to say &lt;i&gt;we&lt;/i&gt; that we can&apos;t refrain).&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;lj-like&quot;&gt;&lt;!--



&lt;div class=&quot;lj-like-item lj-like-item-facebook&quot;&gt;
    &lt;fb:like href=&quot;http://openvz.livejournal.com/42414.html&quot; send=&quot;false&quot; layout=&quot;button_count&quot; width=&quot;100&quot; show_faces=&quot;false&quot; font=&quot;&quot; action=&quot;recommend&quot;&gt;
    &lt;/fb:like&gt;
&lt;/div&gt;



&lt;div class=&quot;lj-like-item lj-like-item-twitter&quot;&gt;
    &lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://openvz.livejournal.com/42414.html&quot; data-text=&quot;%5BCRIU%5D%20CRtools%200.1%20released%21&quot; data-count=&quot;horizontal&quot; 
            data-lang=&quot;en&quot; data-hashtags=&quot;&quot;&gt;Tweet&lt;/a&gt;
&lt;/div&gt;




&lt;div class=&quot;lj-like-item lj-like-item-google&quot;&gt;
    &lt;g:plusone size=&quot;medium&quot; href=&quot;http://openvz.livejournal.com/42414.html&quot;&gt;
    &lt;/g:plusone&gt;
&lt;/div&gt;












--&gt;&lt;/div&gt;

&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam.</description>
  <category>kernel</category>
  <category>openvz</category>
  <category>criu</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/42146.html</guid>
  <pubDate>Fri, 29 Jun 2012 12:25:25 GMT</pubDate>
  <title>vzubc: better cat /proc/user_beancounters</title>
  <link>http://openvz.livejournal.com/42146.html</link>
  <description>Managing user beancounters is not for the faint of heart, I must say. One has to read through &lt;a href=&quot;http://wiki.openvz.org/UBC&quot; rel=&quot;nofollow&quot;&gt;a lot of documentation&lt;/a&gt; and understand all this stuff pretty well. Despite the fact we have made a great improvement recently, a feature called &lt;a href=&quot;http://wiki.openvz.org/VSwap&quot; rel=&quot;nofollow&quot;&gt;VSwap&lt;/a&gt;, many people still rely on traditional beancounters.&lt;br /&gt;&lt;br /&gt;This post is about a utility I initially wrote for myself in May 2011. Surely I have added it to vzctl, it is available since vzctl 3.0.27. Simply speaking, it is just a replacement for cat /proc/user_beancounters, and of course it can do much more than cat.&lt;br /&gt;&lt;br /&gt;Here&apos;s a brief list of vzubc features:&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Shows human-readable held, maxheld, barrier, limit, and fail counter for every beancounter, fitting into standard 80-columns terminal (unlike /proc/user_beancounters on an x86_64 system)&lt;br /&gt;&lt;li&gt; Values that are in pages (such as physpages) are converted to bytes&lt;br /&gt;&lt;li&gt; Long values are then converted to kilo-, mega-, gigabytes etc, similar to -h flag for ls or df&lt;br /&gt;&lt;li&gt; For held and maxheld, it shows how close the value to the barrier and the limit, in per cent&lt;br /&gt;&lt;li&gt; Can be used both inside CT and on HN&lt;br /&gt;&lt;li&gt; User can specify CTIDs or CT names to output info about specific containers only&lt;br /&gt;&lt;li&gt; Optional top-like autoupdate mode (internally using &quot;watch&quot; utility)&lt;br /&gt;&lt;li&gt; Optional &quot;relative failcnt&quot; mode (show increase in UBC fail counters since the last run&lt;br /&gt;&lt;li&gt; Optional quiet mode (only shows &quot;worth to look at&quot; UBCs, ie ones close to limits and/or with failcnt)&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Now, this is how default vzubc output for a particular VE (with non-vswap configuration) looks like:&lt;br /&gt;&lt;pre&gt;
# vzubc 1009
----------------------------------------------------------------
CT 1009      | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+---------------+---------------+-----+-----+------
     kmemsize|1.52M  11%  10%|1.81M  13%  12%|13.7M|14.1M|    - 
  lockedpages|   -    -    - |   -    -    - |   8M|   8M|    - 
  privvmpages| 2.6M   1%   1%|4.32M   2%   2%| 256M| 272M|    - 
     shmpages|   -    -    - |   -    -    - |  84M|  84M|    - 
      numproc|  10    4%   4%|  15    6%   6%| 240 | 240 |    - 
    physpages|17.3M   -    - |18.6M   -    - |   - |   - |    - 
  vmguarpages|   -    -    - |   -    -    - | 132M|   - |    - 
 oomguarpages|1.52M   2%   - |1.52M   2%   - | 102M|   - |    - 
   numtcpsock|   2  0.6% 0.6%|   3  0.8% 0.8%| 360 | 360 |    - 
     numflock|   1  0.5% 0.5%|   2    1%   1%| 188 | 206 |    - 
       numpty|   -    -    - |   -    -    - |  16 |  16 |    - 
   numsiginfo|   -    -    - |   6    2%   2%| 256 | 256 |    - 
    tcpsndbuf|34.1K   2%   1%|51.1K   3%   2%|1.64M|2.58M|    - 
    tcprcvbuf|  32K   2%   1%|  48K   2%   2%|1.64M|2.58M|    - 
 othersockbuf|2.26K 0.2% 0.1%|14.6K   1% 0.7%|1.07M|   2M|    - 
  dgramrcvbuf|   -    -    - |   -    -    - | 256K| 256K|    - 
 numothersock|  44   12%  12%|  47   13%  13%| 360 | 360 |    - 
   dcachesize| 618K  18%  17%| 627K  18%  17%|3.25M|3.46M|    - 
      numfile| 114    1%   1%| 125    1%   1%|9.09K|9.09K|    - 
    numiptent|  20   15%  15%|  20   15%  15%| 128 | 128 |    - 
    swappages|   -    -    - |   -    -    - |   - |   - |    - 
----------------------------------------------------------------
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see, it shows all beancounters in human-readable form. Zero or unlimited values are shown by a dash. It also shows the ratio of held and maxheld to barrier and limit, in per cent.&lt;br /&gt;&lt;br /&gt;Now, let&apos;s try to explore functionality available via command-line switches.&lt;br /&gt;&lt;br /&gt;First of all, &lt;b&gt;-q or --quiet enables quiet mode&lt;/b&gt; to only show beancounters with fails and those with held/maxheld values close to limits. If vzubc --q produces empty output, that probably means you don&apos;t have to worry about anything related to UBC. There are two built-in thresholds for quiet mode, one for barrier and one for limit. They can be changed to your liking using -qh and -qm options.&lt;br /&gt;&lt;br /&gt;Next, &lt;b&gt;-c or --color&lt;/b&gt; enables using colors to highlight interesting fields. In this mode &quot;warnings&quot; are shown in yellow, and &quot;errors&quot; are in red. Here a warning means a parameter close to limit (same thresholds are used as for the quiet mode), and an error means non-zero fail counter.&lt;br /&gt;&lt;br /&gt;The following screenshot demonstrates the effect of -c and -q options. I have run a forkbomb inside CT to create a resource shortage:&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://wiki.openvz.org/images/3/37/Vzubc-c-q-forkbomb.png&quot;&gt;&lt;br /&gt;&lt;br /&gt;Now, &lt;b&gt;-r or --relative&lt;/b&gt; is the ultimate answer to the frequently asked &quot;how do I reset failcnt?&quot; question. Basically it saves the current failcnt value during the first run, and shows its delta (rather than the absolute value) during the next runs. This is how it works:&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://wiki.openvz.org/images/9/9d/Vzubc-r-failcnt.png&quot;&gt;&lt;br /&gt;&lt;br /&gt;There is also &lt;b&gt;-i or --incremental&lt;/b&gt; flag to activate a mode in which an additional column shows a difference in held value from the previous run, so you can see the change in usage. This option also affects quiet mode: all lines with changed held values are shown.&lt;br /&gt;&lt;br /&gt;Here&apos;s a screenshot demonstrating the &quot;color, relative, incremental, quiet&quot; mode for vzubc:&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://wiki.openvz.org/images/1/12/Vzubc-incremental.png&quot;&gt;&lt;br /&gt;&lt;br /&gt;Finally, you can use &lt;b&gt;-w or --watch&lt;/b&gt; to enable a la top mode, to monitor beancounters. It&apos;s not as powerful as top, in fact it just uses watch(1) tool to run vzubc every 2 seconds and that&apos;s it. Please note that this mode is not compatible with --color, and you have to press Ctrl-C to quit. Oh, and since I am not a big fan of animated gifs, there will be no screenshot. &lt;br /&gt;&lt;br /&gt;Man page &lt;a href=&quot;http://wiki.openvz.org/Man/vzubc.8&quot; rel=&quot;nofollow&quot;&gt;vzubc(8)&lt;/a&gt; man page gives you more formal description of vzubc, including some minor options I haven&apos;t described here. Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;lj-like&quot;&gt;&lt;!--



&lt;div class=&quot;lj-like-item lj-like-item-facebook&quot;&gt;
    &lt;fb:like href=&quot;http://openvz.livejournal.com/42146.html&quot; send=&quot;false&quot; layout=&quot;button_count&quot; width=&quot;100&quot; show_faces=&quot;false&quot; font=&quot;&quot; action=&quot;recommend&quot;&gt;
    &lt;/fb:like&gt;
&lt;/div&gt;



&lt;div class=&quot;lj-like-item lj-like-item-twitter&quot;&gt;
    &lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://openvz.livejournal.com/42146.html&quot; data-text=&quot;vzubc%3A%20better%20cat%20%2Fproc%2Fuser_beancounters&quot; data-count=&quot;horizontal&quot; 
            data-lang=&quot;en&quot; data-hashtags=&quot;&quot;&gt;Tweet&lt;/a&gt;
&lt;/div&gt;




&lt;div class=&quot;lj-like-item lj-like-item-google&quot;&gt;
    &lt;g:plusone size=&quot;medium&quot; href=&quot;http://openvz.livejournal.com/42146.html&quot;&gt;
    &lt;/g:plusone&gt;
&lt;/div&gt;












--&gt;&lt;/div&gt;

&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam</description>
  <category>user beancounters</category>
  <category>vzctl</category>
  <category>vzubc</category>
  <category>cli</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/41835.html</guid>
  <pubDate>Sun, 03 Jun 2012 10:53:25 GMT</pubDate>
  <title>Effective live migration with ploop write tracker</title>
  <link>http://openvz.livejournal.com/41835.html</link>
  <description>During my last holiday on the of hospitable Turkey sunny seaside at night, instead of quenching my thirst or taking rest after a long and tedious day at a beach, I was sitting in a hotel lobby, where they have free Wi-Fi, trying to make live migration of a container on a ploop device working. I succeeded, with &lt;a href=&quot;http://git.openvz.org/?p=ploop;a=history;f=lib/pcopy.c;h=1c8b52c3ecb735c7a47e769da5e7eb8a2363d870;hb=312780a4ba3c6c1bccb6fad619033ebf438eca8e&quot; rel=&quot;nofollow&quot;&gt;about 20 commits to ploop&lt;/a&gt; and &lt;a href=&quot;http://git.openvz.org/?p=vzctl;a=log;h=7bc785f65d929b57caf4b329e30f21a38413e78e&quot; rel=&quot;nofollow&quot;&gt;another 15 to vzctl&lt;/a&gt;, so now I&apos;d like to share my findings and tell the story about it.&lt;br /&gt;&lt;br /&gt;Let&apos;s start from the basics and see how migration (i.e. moving a container from one OpenVZ server to another) is implemented. It&apos;s vzmigrate, a shell script which does the following (simplified for clarity):&lt;br /&gt;&lt;br /&gt;1. Checks that a destination server is available via ssh w/o entering a password, that there is no container with the same ID on it, and so on.&lt;br /&gt;2. Runs rsync of /vz/private/$CTID to the destination server&lt;br /&gt;3. Stops the container&lt;br /&gt;4. Runs a second rsync of /vz/private/$CTID to the destination&lt;br /&gt;5. Starts the container on the destination&lt;br /&gt;6. Removes it locally&lt;br /&gt;&lt;br /&gt;Obviously, two rsync runs are needed, so the first one moves most of the data, while the container is still up and running, and the second one moves the changes made during the time period between the first rsync run and the container stop.&lt;br /&gt;&lt;br /&gt;Now, if we need live migration (option --online to vzmigrate), then instead of CT stop we do vzctl checkpoint, and instead of start we do vzctl restore. As a result, a container will move to another system without your users noticing (process are not stopping, just freezing for a few seconds, TCP connections are migrating, IP addresses are not changed etc. -- no cheating, just a little bit of magic).&lt;br /&gt;&lt;br /&gt;So this is the way it was working for years, making users happy and singing in the rain. One fine day, though, ploop was introduced and it was soon discovered that live migration is not working for ploop-based containers. I found a few reasons why (for example, one can&apos;t use rsync --sparse for copying ploop images, because in-kernel ploop driver can&apos;t work with files having holes). But the main thing I found is the proper way of migrating a ploop image: not with rsync, but with ploop copy.&lt;br /&gt;&lt;br /&gt;ploop copy is a mechanism of effective copy of a ploop image with the help of build-in ploop kernel driver feature called write tracker. One ploop copy process is reading blocks of data from ploop image and sends them to stdout (prepending each block with a short header consisting of a magic label, a block position and its size). The other ploop copy process receives this data from stdin and writes them down to disk. If you connect these two processes via a pipe, and add ssh $DEST in between, you are all set.&lt;br /&gt;&lt;br /&gt;You can say, cat utility can do almost the same thing. Right. The difference is, before starting to read and send data, ploop copy asks the kernel to turn on the write tracker, and the kernel starts to memorize a list of data blocks that are modified (written into). Then, after all the blocks are sent, ploop copy is politely expressing the interest in this list, and send the blocks from the list again, while the kernel is creating another list. The process repeats a few times, and the list becomes shorter and shorter. After a few iterations (either the list is empty, or it is not getting shorter, or we just decide that we already did enough iterations) ploop copy executes an external command, which should stop any disk activity for this ploop device. This command is either vzctl stop for offline migration or vzctl checkpoint for live migration; obviously, stopped or frozen container will not write anything to disk. After that, ploop copy asks the kernel for the list of modified blocks again, transfers the blocks listed, and finally asks the kernel for this list again. If this time the list is not empty, that means something is very wrong, meaning that stopping command haven&apos;t done what it should and we fail. Otherwise all is good and ploop copy sends a marker telling the transfer is over. So this is how the sending&lt;br /&gt;process works.&lt;br /&gt;&lt;br /&gt;The receiving ploop copy process is trivial -- it just reads the blocks from stdin and writes those to file (to a specified position). If you want to see the code of both sending and receiving sides, &lt;a href=&quot;http://git.openvz.org/?p=ploop;a=blob;f=lib/pcopy.c&quot; rel=&quot;nofollow&quot;&gt;look no further&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All right, in the previous migration description ploop copy is used in place of second rsync run (steps 3 and 4). I&apos;d like to note that this way it&apos;s more effective, because rsync is trying to figure out which files have changed and where, while ploop copy just asks about it from the kernel. Also, because the &quot;ask and send&quot; process is iterative, container will be stopped or frozen as late as it can be and, even if container is writing data to disk actively, the period for which it is stopped is minimal.&lt;br /&gt;&lt;br /&gt;Just out of pure curiosity I performed a quick non-scientific test, having &quot;od -x /dev/urandom &amp;gt; file&quot; running inside a container and live migrating it back and forth. ploop copy time after the freeze was a bit over 1 second, and the total frozen time a bit less than 3 seconds. Similar numbers can be obtained from the traditional simfs+rsync migration, but only if a container is not doing any significant I/O. Then I tried to migrate similar container on simfs running the same command running inside, and the frozen time increased to 13-16 seconds. I don&apos;t want to say these measurements are to be trusted, I just ran it without any precautions, with OpenVZ instances running inside Parallels VMs, with the physical server busy with something else...&lt;br /&gt;&lt;br /&gt;Oh, the last thing. All this functionality is already included into latest tools releases: ploop 1.3 and vzctl 3.3.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;lj-like&quot;&gt;&lt;!--



&lt;div class=&quot;lj-like-item lj-like-item-facebook&quot;&gt;
    &lt;fb:like href=&quot;http://openvz.livejournal.com/41835.html&quot; send=&quot;false&quot; layout=&quot;button_count&quot; width=&quot;100&quot; show_faces=&quot;false&quot; font=&quot;&quot; action=&quot;recommend&quot;&gt;
    &lt;/fb:like&gt;
&lt;/div&gt;



&lt;div class=&quot;lj-like-item lj-like-item-twitter&quot;&gt;
    &lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://openvz.livejournal.com/41835.html&quot; data-text=&quot;Effective%20live%20migration%20with%20ploop%20write%20tracker&quot; data-count=&quot;horizontal&quot; 
            data-lang=&quot;en&quot; data-hashtags=&quot;&quot;&gt;Tweet&lt;/a&gt;
&lt;/div&gt;




&lt;div class=&quot;lj-like-item lj-like-item-google&quot;&gt;
    &lt;g:plusone size=&quot;medium&quot; href=&quot;http://openvz.livejournal.com/41835.html&quot;&gt;
    &lt;/g:plusone&gt;
&lt;/div&gt;












--&gt;&lt;/div&gt;

&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam</description>
  <category>ploop</category>
  <category>openvz</category>
  <category>vzctl</category>
  <category>live migration</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/41500.html</guid>
  <pubDate>Fri, 27 Apr 2012 00:39:50 GMT</pubDate>
  <title>Ubuntu 12.04 templates available</title>
  <link>http://openvz.livejournal.com/41500.html</link>
  <description>I have just uploaded +Ubuntu 12.04 templates for OpenVZ to &lt;a href=&apos;http://wiki.openvz.org/Download/template/precreated#Beta_templates&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/Download/template/precreated#Beta_templates&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In case it doesn&apos;t work with vzctl-3.1 (haven&apos;t tried it, going to release 3.2 really soon), try the recent pre-3.2 vzctl nightly build, see more info at &lt;a href=&apos;http://wiki.openvz.org/Download/vzctl/nightly&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/Download/vzctl/nightly&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy =)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam</description>
  <category>openvz</category>
  <category>templates</category>
  <category>ubuntu</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>27</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/41317.html</guid>
  <pubDate>Tue, 03 Apr 2012 13:31:48 GMT</pubDate>
  <title>OpenVZ containers</title>
  <link>http://openvz.livejournal.com/41317.html</link>
  <description>OpenVZ concept art by &lt;a href=&quot;https://plus.google.com/115065910381489598519/posts&quot; rel=&quot;nofollow&quot;&gt;Andrew Vagin&lt;/a&gt;. Notice the high containers density!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://static.openvz.org/lj/Container_Vessel_Web_1_179114733.jpg&quot; rel=&quot;nofollow&quot;&gt;&lt;small&gt;[click for full size picture]&lt;/small&gt;&lt;br /&gt;&lt;img src=&quot;http://static.openvz.org/lj/Container_Vessel_Web_1_179114733-small.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam bots.</description>
  <category>containers</category>
  <category>openvz</category>
  <category>art</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/41077.html</guid>
  <pubDate>Sun, 01 Apr 2012 13:00:50 GMT</pubDate>
  <title>Announcing OpenVZ rebase to Windows</title>
  <link>http://openvz.livejournal.com/41077.html</link>
  <description>I am glad to officially announce that we decided to rebase OpenVZ from Linux to Windows. The main reason is of course Windows market share, but it&apos;s not the only reason. Windows is well-known for being user friendly, stable and secure operating system, very well supported by third-party vendors, and we would like to leverage on that and be a part of that huge and wonderful Windows ecosystem.&lt;br /&gt;&lt;br /&gt;Has it ever come to your mind that while Linux guys are only blabbering about clouds, many huge Windows-based clouds (they call them botnets) are already fully operational? This is yet another indication of the platform superiority.&lt;br /&gt;&lt;br /&gt;The project of rebasing is currently on its early stages, frankly speaking we haven&apos;t done much yet except for some preliminary research. But I have already designed the new logo, which I am proud to show to you today.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://static.openvz.org/lj/openvzwin-nnn-logo-slogan.png&quot;&gt;&lt;br /&gt;&lt;br /&gt;Logo design was tough because it should not be too different from the old one (after all, OpenVZ is still OpenVZ), but at the same time remind our users that this software is Windows-based. You can already enjoy the new logo and the tagline on &lt;a href=&apos;http://wiki.openvz.org/&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As for the actual software, don&apos;t hold your breath, we will let you know than it will become available. But don&apos;t waste your time waiting! I suggest everyone to stop using Linux and start using Windows on their personal machines in order to familiarize with it. Me myself, I am planning to rm -rf / (or should I say delete *.* instead?) for both Fedora 16 on my notebook and the Gentoo Linux on my home desktop, and reinstall Windows 8!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to excessive spam.</description>
  <category>openvz</category>
  <category>windows</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/40830.html</guid>
  <pubDate>Tue, 27 Mar 2012 08:48:03 GMT</pubDate>
  <title>Introducing container in a file aka ploop</title>
  <link>http://openvz.livejournal.com/40830.html</link>
  <description>OpenVZ have just introduced kernel and tools support for container-in-a-file technology, also known as ploop. This post tries to summarize why ploop is needed, and why is it a superior technology to what we had before.&lt;br /&gt;&lt;h3&gt;Before ploop: simfs and vzquota&lt;/h3&gt;&lt;br /&gt;First of all, a few facts about the pre-ploop era technologies and their limitations.&lt;br /&gt;&lt;br /&gt;As you are probably aware, a container file system was just a directory on the host, which a new container was chroot()-ed into. Although it seems like a good and natural idea, there are a number of limitations.&lt;br /&gt;&lt;br /&gt;Since containers are living on one same file system, they all share common properties of that file system (it&apos;s type, block size, and other options). That means we can not configure the above properties on a per-container basis.&lt;br /&gt;&lt;br /&gt;One such property that deserves a special item in this list is file system journal. While journal is a good thing to have, because it helps to maintain file system integrity and improve reboot times (by eliminating fsck in many cases), it is also a bottleneck for containers. If one container will fill up in-memory journal (with lots of small operations leading to file metadata updates, e.g. file truncates), all the other containers I/O will block waiting for the journal to be written to disk. In some extreme cases we saw up to 15 seconds of such blockage.&lt;br /&gt;&lt;br /&gt;Since many containers share the same file system with limited space, in order to limit containers disk space we had to develop per-directory disk quotas (i.e. vzquota).&lt;br /&gt;&lt;br /&gt;Again, since many containers share the same file system, and the number of inodes on a file system is limited [for most file systems], vzquota should also be able to limit inodes on a per container (per directory) basis.&lt;br /&gt;&lt;br /&gt;In order for in-container (aka second-level) disk quota (i.e. standard per-user and per-group UNIX dist quota) to work, we had to provide a dummy file system called simfs. Its sole purpose is to have a superblock which is needed for disk quota to work.&lt;br /&gt;&lt;br /&gt;When doing a live migration without some sort of shared storage (like NAS or SAN), we sync the files to a destination system using rsync, which does the exact copy of all files, except that their i-node numbers on disk will change. If there are some apps that rely on files&apos; i-node numbers being constant (which is normally the case), those apps are not surviving the migration.&lt;br /&gt;&lt;br /&gt;Finally, a container backup or snapshot is harder to do because there is a lot of small files that need to be copied.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Introducing ploop&lt;/h3&gt;&lt;br /&gt;In order to address the above problems and ultimately make a world a better place, we decided to implement a container-in-a-file technology, not different from what various VM products are using, but working as effectively as all the other container bits and pieces in OpenVZ.&lt;br /&gt;&lt;br /&gt;The main idea of ploop is to have an image file, use it as a block device, and create and use a file system on that device. Some readers will recognize that this is exactly what Linux loop device does! Right, the only thing is loop device is very inefficient (say, using it leads to double caching of data in memory) and its functionality is very limited.&lt;br /&gt;&lt;br /&gt;Ploop implementation in the kernel have a modular and layered design.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The top layer is the main ploop module&lt;/b&gt;, which provides a virtual block device to be used for CT file system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The middle layer is the image format module&lt;/b&gt;, which does translation of block device block numbers into image file block numbers. A simple format module which is called &quot;raw&quot; is doing trivial 1:1 translation, same as existing loop device.&lt;br /&gt;&lt;br /&gt;More sophisticated format module is keeping the translation table and is able to dynamically grow and shrink the image file. That means, if you create a container with 2GB of disk space, the image file size will not be 2GB, but less -- the size of the actual data stored in the container. It is also possible to support other image formats by writing other ploop format modules, such as the one for QCOW2 (used by QEMU and KVM).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The bottom layer is the I/O module&lt;/b&gt;. Currently modules for direct I/O on an ext4 device, and for NFS are available. There are plans to also have a generic VFS module, which will be able to store images on any decent file system, but that needs an efficient direct I/O implementation in the VFS layer which is still being worked on.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Ploop benefits&lt;/h3&gt;&lt;br /&gt;In a nutshell:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;File system journal is not bottleneck anymore&lt;br /&gt;&lt;li&gt;Large-size image files I/O instead of lots of small-size files I/O on management operations&lt;br /&gt;&lt;li&gt;Disk space quota can be implemented based on virtual device sizes; no need for per-directory quotas&lt;br /&gt;&lt;li&gt;Number of inodes doesn&apos;t have to be limited because this is not a shared resource anymore (each CT has its own file system)&lt;br /&gt;&lt;li&gt;Live backup is easy and consistent&lt;br /&gt;&lt;li&gt;Live migration is reliable and efficient&lt;br /&gt;&lt;li&gt;Different containers may use file systems of different types and properties&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;In addition:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Efficient container creation&lt;br /&gt;&lt;li&gt;[Potential] support for QCOW2 and other image formats&lt;br /&gt;&lt;li&gt;Support for different storage types&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments are disabled due to spam.</description>
  <category>ploop</category>
  <category>kernel</category>
  <category>openvz</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>33</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/40599.html</guid>
  <pubDate>Thu, 23 Feb 2012 14:28:15 GMT</pubDate>
  <title>CT console</title>
  <link>http://openvz.livejournal.com/40599.html</link>
  <description>Are you ready for the next cool feature? Please welcome CT console.&lt;br /&gt;&lt;br /&gt;Available in RHEL6-based kernel since 042stab048.1, this feature is pretty simple to use. Use &lt;code&gt;vzctl attach &lt;i&gt;CTID&lt;/i&gt;&lt;/code&gt; to attach to this container&apos;s console, and you will be able to see all the messages CT init is writing to console, or run getty on it, or anything else.&lt;br /&gt;&lt;br /&gt;Please note that the console is persistent, i.e. it is available even if a container is not running. That way, you can run &lt;s&gt;&lt;code&gt;vzctl attach&lt;/s&gt; vzctl console&lt;/code&gt;and then (in another terminal) &lt;code&gt;vzctl start&lt;/code&gt;. That also means that if a container is stopped, vzctl attach is still there.&lt;br /&gt;&lt;br /&gt;Press &lt;b&gt;Esc .&lt;/b&gt; to detach from the console.&lt;br /&gt;&lt;br /&gt;The feature (&lt;a href=&quot;http://git.openvz.org/?p=vzctl;a=commitdiff;h=a1f523f59a6e321ce2cc6dd42d0f5a660a712339&quot; rel=&quot;nofollow&quot;&gt;vzctl git commit&lt;/a&gt;) will be available in up-coming vzctl-3.0.31. I have just made a nightly build of vzctl (version 3.0.30.2-18.git.a1f523f) available so you can test this. Check &lt;a href=&apos;http://wiki.openvz.org/Download/vzctl/nightly&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/Download/vzctl/nightly&lt;/a&gt; for information of how to get a nightly build.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; the feature is renamed to &lt;code&gt;vzctl console&lt;/code&gt;.&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam.</description>
  <category>kernel</category>
  <category>openvz</category>
  <category>console</category>
  <category>feature</category>
  <category>vzctl</category>
  <category>container</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/40402.html</guid>
  <pubDate>Tue, 14 Feb 2012 19:21:30 GMT</pubDate>
  <title>Kir&apos;s OpenVZ presentation at FOSDEM 2012</title>
  <link>http://openvz.livejournal.com/40402.html</link>
  <description>Just got done watching the video recording of Kir&apos;s presentation from last Saturday at FOSDEM 2012.  They recorded it and I&apos;m writing this to share it with you too.  Here&apos;s a link to the video in .webm format:&lt;br /&gt;&lt;br /&gt;&lt;a href=&apos;http://video.fosdem.org/2012/maintracks/janson/Linux_containers_and_OpenVZ.webm&apos; rel=&apos;nofollow&apos;&gt;http://video.fosdem.org/2012/maintracks/janson/Linux_containers_and_OpenVZ.webm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Feel free to right click on the link and &quot;Save link as...&quot; to download it, or stream play it in your browser if desired since Firefox 4.x and up, as well as Chrome and Opera will play .webm directly.  I prefer to download and watch with gmplayer so it plays more efficiently.  You do have a video player that supports webm, right?&lt;br /&gt;&lt;br /&gt;In the first half Kir talks generally about what containers are and what features OpenVZ has.  In the second half of it he talks about recent features that are available now (vswap) and a few upcoming features (ploop and criu).  Then he takes a number of questions from the audience.  I really enjoyed the questions and the answers Kir gave.  Some nice conversation on the &quot;OpenVZ vs. LXC&quot; concept.</description>
  <comments>http://openvz.livejournal.com/40402.html</comments>
  <category>openvz</category>
  <lj:mood>excited</lj:mood>
  <lj:security>public</lj:security>
  <lj:poster>dowdle</lj:poster>
  <lj:posterid>9725912</lj:posterid>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/40185.html</guid>
  <pubDate>Wed, 18 Jan 2012 15:17:01 GMT</pubDate>
  <title>SOPA protest</title>
  <link>http://openvz.livejournal.com/40185.html</link>
  <description>wiki.openvz.org is down today, joining the SOPA and PIPA protest. Read more:&lt;br /&gt;* &lt;a href=&apos;http://americancensorship.org/&apos; rel=&apos;nofollow&apos;&gt;http://americancensorship.org/&lt;/a&gt;&lt;br /&gt;* &lt;a href=&apos;https://www.eff.org/deeplinks/2012/01/how-pipa-and-sopa-violate-white-house-principles-supporting-free-speech&apos; rel=&apos;nofollow&apos;&gt;https://www.eff.org/deeplinks/2012/01/how-pipa-and-sopa-violate-white-house-principles-supporting-free-speech&lt;/a&gt;&lt;br /&gt;* &lt;a href=&apos;http://google.com/takeaction&apos; rel=&apos;nofollow&apos;&gt;http://google.com/takeaction&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The site will come alive tomorrow. Now, if you need access to the site, just reload the page.</description>
  <comments>http://openvz.livejournal.com/40185.html</comments>
  <category>pipa</category>
  <category>sopa</category>
  <category>openvz</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/39765.html</guid>
  <pubDate>Tue, 27 Dec 2011 16:03:39 GMT</pubDate>
  <title>Recent improvements in vzctl</title>
  <link>http://openvz.livejournal.com/39765.html</link>
  <description>&lt;b&gt;Update: note you need VSwap enabled (ie currently RHEL6-based) kernel for the below stuff to work, see &lt;a href=&apos;http://wiki.openvz.org/VSwap&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/VSwap&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VSwap is an excellent feature, simplifying container resource management a lot. Now it&apos;s time to also simplify the command line interface, i.e. vzctl. Here is what we did recently (take a look at vzctl git repo if you want to review the actual changes):&lt;br /&gt;&lt;br /&gt;1. We no longer require to set kmemsize, dcachesize and lockedpages parameters to non-unlimited values (this is one of the enhancements in the recent kernels we have talked about recently). Therefore, setting these parameters to fractions of CT RAM (physpages) are now removed from configuration files and vzsplit output.&lt;br /&gt;&lt;br /&gt;2. There is no longer a need to specify all the UBC parameters in per-container configuration file. If you leave some parameters unset, the kernel will use default values (usually unlimited). So, VSwap example configs are now much smaller, with as much as 19 parameters removed from those.&lt;br /&gt;&lt;br /&gt;3. vzctl set now supports two new options: --ram and --swap. These are just convenient short aliases for --physpages and --swappages, the differences being that you only need to specify one value (the limit) and the argument is in bytes rather than pages.&lt;br /&gt;&lt;br /&gt;So, to configure a container named MyCT to have 1.5GB of RAM and 3GB of swap space available, all you need to do is just run this command:&lt;br /&gt;&lt;code&gt;vzctl set MyCT --ram 1.5G --swap 3G --save&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;4. This is not VSwap-related, but nevertheless worth sharing. Let&apos;s illustrate it by a copy-paste from a terminal:&lt;br /&gt;&lt;code&gt;# vzctl create 123 --ostemplate centos-4-x86_64&lt;br /&gt;Creating container private area (centos-4-x86_64)&lt;br /&gt;Found centos-4-x86_64.tar.gz at &lt;a href=&apos;http://download.openvz.org/template/precreated//centos-4-x86_64.tar.gz&apos; rel=&apos;nofollow&apos;&gt;http://download.openvz.org/template/precreated//centos-4-x86_64.tar.gz&lt;/a&gt;&lt;br /&gt;Downloading...&lt;br /&gt;-- 2011-11-29 18:54:08 -- &lt;a href=&apos;http://download.openvz.org/template/precreated//centos-4-x86_64.tar.gz&apos; rel=&apos;nofollow&apos;&gt;http://download.openvz.org/template/precreated//centos-4-x86_64.tar.gz&lt;/a&gt;&lt;br /&gt;Resolving download.openvz.org... 64.131.90.11&lt;br /&gt;Connecting to download.openvz.org|64.131.90.11|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 171979832 (164M) [application/x-gzip]&lt;br /&gt;Saving to: `/vz/template/cache/centos-4-x86_64.tar.gz&apos;&lt;br /&gt;&lt;br /&gt;100%[======================================&amp;gt;] 171,979,832 588K/s in 4m 27s &lt;br /&gt;&lt;br /&gt;2011-11-29 18:58:35 (630 KB/s) - `/vz/template/cache/centos-4-x86_64.tar.gz&apos; saved [171979832/171979832]&lt;br /&gt;&lt;br /&gt;Success!&lt;br /&gt;Performing postcreate actions&lt;br /&gt;Saved parameters for CT 123&lt;br /&gt;Container private area was created&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;All this will be available in vzctl-3.0.30, which is to be released soon (next week? who knows). If you can&apos;t wait and want to test this stuff, here&apos;s a nightly build of vzctl available (version 3.0.29.3-27.git.0535fe1) from &lt;a href=&apos;http://wiki.openvz.org/Download/vzctl/nightly&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/Download/vzctl/nightly&lt;/a&gt;. Please give it a try and tell me what you think.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam</description>
  <category>openvz</category>
  <category>vzctl</category>
  <category>git</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>22</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/39644.html</guid>
  <pubDate>Mon, 14 Nov 2011 20:03:12 GMT</pubDate>
  <title>On vSwap and 042stab04x kernel improvements</title>
  <link>http://openvz.livejournal.com/39644.html</link>
  <description>&lt;h3&gt;vSwap&lt;/h3&gt;The best feature of the new (RHEL6-based) 042 series of the OpenVZ kernels is definitely vSwap. The short story is, we used to have 22 user beancounter parameters which every seasoned OpenVZ user knows by heart. Each of these parameters is there for a reason, but 22 knobs are a bit too complex to manage for a mere mortal, especially bearing in mind that&lt;ul&gt;&lt;li&gt;many of them are interdependent;&lt;/li&gt;&lt;li&gt;the sum of all limits should not exceed the resources of a given physical server.&lt;/li&gt;&lt;/ul&gt;Keeping this configuration optimal (or even consistent) is quite a challenging task even for a senior OpenVZ admin (with a probable exception of an ex airline pilot). This complexity is the main reason why there are multiple articles and blog entries complaining OpenVZ is worse than Xen, or that it is not suitable for hosting Java apps. We do have some workarounds to mitigate this complexity, such as:&lt;ul&gt;&lt;li&gt;precreated &lt;a href=&quot;http://git.openvz.org/?p=vzctl;a=tree;f=etc/conf&quot; rel=&quot;nofollow&quot;&gt;container configs&lt;/a&gt; with sane defaults for beancounters;&lt;/li&gt;&lt;li&gt;some special tools (&lt;a href=&quot;http://wiki.openvz.org/Man/vzsplit.8&quot; rel=&quot;nofollow&quot;&gt;vzsplit&lt;/a&gt; and &lt;a href=&quot;http://wiki.openvz.org/Man/vzcfgvalidate.8&quot; rel=&quot;nofollow&quot;&gt;vzcfgvalidate&lt;/a&gt;);&lt;/li&gt;&lt;li&gt;the comprehensive &lt;a href=&quot;http://wiki.openvz.org/UBC&quot; rel=&quot;nofollow&quot;&gt;User Beancounters manual&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;This is still not the way to go. While we think high of our users, we do not expect all of them to be ex airline pilots. To solve the complexity, the number of per-container knobs and handles should be reduced to some decent number, 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 &lt;b&gt;vSwap&lt;/b&gt; (where V is for Vendetta, oh, pardon me, Virtual).&lt;br /&gt;&lt;br /&gt;vSwap concept is as simple as a rectangle. For each container, there are only two required parameters: the memory size (known as &lt;code&gt;physpages&lt;/code&gt;) and the swap size (&lt;code&gt;swappages&lt;/code&gt;). Almost everyone (not only an admin, but even an advanced end user) knows what is RAM and what is swap. On a physical server, if there is not enough memory, the system starts to swap out memory pages to disk, then swap in some other pages, which results in severe performance degradation but it keeps the system from failing miserably.&lt;br /&gt;&lt;br /&gt;It&amp;#39;s about the same with vSwap, except that&lt;ul&gt;&lt;li&gt;RAM and swap are configured on a per container basis;&lt;/li&gt;&lt;li&gt;no I/O is performed until it is really necessary (this is why swap is virtual).&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Some VSwap internals&lt;/h3&gt;Now, there are only two knobs per container on a dashboard, namely RAM and swap, and all the complexity is hidden under the hood. I am going to describe just a bit of that undercover mechanics and explain what does the &amp;quot;&lt;i&gt;Reworked VSwap kernel memory accounting&lt;/i&gt;&amp;quot; line from the 042stab040.1 kernel changelog stands for.&lt;br /&gt;&lt;br /&gt;The biggest problem is, RAM for containers is not just RAM. First of all, there is a need to distinguish between&lt;ul&gt;&lt;li&gt;the user memory,&lt;/li&gt;&lt;li&gt;the kernel memory,&lt;/li&gt;&lt;li&gt;the page cache,&lt;/li&gt;&lt;li&gt;and the directory entry cache.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;The user memory&lt;/b&gt; is more or less clear, it is simply the memory that programs allocate for themselves to run. It is relatively easy to account for, and it is relatively simple to limit it (but read on).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The kernel memory&lt;/b&gt; is really complex thingie. Right, it is the memory that kernel allocates for itself in order for programs in a particular container to run. This includes a lot of stuff I&amp;#39;d rather not dive into, if I want to keep this piece as an article not a tome. Having said that, two particular kernel memory types are worth explaining.&lt;br /&gt;&lt;br /&gt;First is &lt;b&gt;the&amp;nbsp;page cache&lt;/b&gt;, the kernel mechanism that caches disk contents in memory (that would be unused otherwise) to minimize the I/O. When a program reads some data from a disk, that data are read into the page cache first, and when a program writes to a disk, data goes to the page cache (and then eventually are written (flushed) to disk). In case of repeated disk access (which happens quite often) data is taken from a page cache, not from the real disk, which greatly improves the overall system performance, since a disk is much slower than RAM. Now, some of the page cache is used on behalf of a container, and this amount must be charged into &amp;quot;RAM used by this container&amp;quot; (i.e. physpages).&lt;br /&gt;&lt;br /&gt;Second is &lt;b&gt;the directory entry cache&lt;/b&gt; (dcache for short) is yet another sort of cache, and another sort of the kernel memory. Disk contents is a tree of files and directories, and such a tree is quite tall and wide. In order to read the contents of, say, /bin/sh file, kernel have to read the root (/) directory, find &amp;#39;bin&amp;#39; entry in it, read /bin directory, find &amp;#39;sh&amp;#39; entry in it and finally read it. Although these operations are not very complex, there is a multitude of those, they take time and are repeated often for most of the &amp;quot;popular&amp;quot; files. In order to improve performance, kernel keeps directory entries in memory &amp;mdash; this is what dcache is for. The memory used by dcache should also be accounted and limited, since otherwise it&amp;#39;s easily exploitable (not only by root, but also by an ordinary user, since 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, the kernel memory, the page cache and the dcache. Technically, dcache is accounted into the kernel memory, then kernel memory is accounted into the physical memory, but it&amp;#39;s not overly important.&lt;br /&gt;&lt;h3&gt;Improvements in the new 042stab04x kernels&lt;/h3&gt;&lt;h4&gt;Better reclamation and memory balancing&lt;/h4&gt;What to do if a container hit a physical memory limit? Free some pages by writing their contents to the abovementioned virtual swap. Well, not quite yet. Remember that there is also a page cache and a dcache, so the kernel can easily 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 needs to decide very carefully when to start reclamation, how many and what exact pages to reclaim in every particular situation, and when 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) and only one knob which limits the sum of all these. It would be easier for the kernel, but not for the user, to have separate limits for each type of memory. But, for the user convenience and simplicity, the kernel only have one knob for these four parameters, so it needs to balance between those four. One major improvement in 042stab040 kernel is that such balancing is now performed better.&lt;br /&gt;&lt;h4&gt;Stricter memory limit&lt;/h4&gt;During the lifetime of a container, the kernel might face a situation when it needs more kernel memory, or user memory, or perhaps more dcache entries, and the memory for the container is tight (i.e. close to the limit), so it needs to either reclaim or swap. The problem is there are some situations when neither reclamation nor swapping is possible, so the kernel can either fail miserably (say by killing a process) or go beyond the limit and hope that everything will be fine and mommy won&amp;#39;t notice. Another big improvement in 042stab040 kernel is it reduces the number of such situations, in other words, the new kernel obeys memory limit in a more strict way.&lt;br /&gt;&lt;h4&gt;Polishing&lt;/h4&gt;Finally, the kernel is now in a pretty good shape, so we can afford some polishing, minor optimizations, and fine tuning. Such polishing was performed in a few subsystems, including checkpointing, user beancounters, netfilter, kernel NFS server and VZ disk quota.&lt;br /&gt;&lt;h4&gt;Some numbers&lt;/h4&gt;Totally, there are 53 new patches in 042stab040.1, compared to previous 039 kernels. On top of that, 042stab042.1 adds another 30. We hope that the end result is improved stability and performance.</description>
  <comments>http://openvz.livejournal.com/39644.html</comments>
  <category>kernel</category>
  <category>openvz</category>
  <category>vswap</category>
  <category>rhel6</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/39369.html</guid>
  <pubDate>Fri, 14 Oct 2011 21:40:02 GMT</pubDate>
  <title>Announcing rhel6-testing kernel branch/repo</title>
  <link>http://openvz.livejournal.com/39369.html</link>
  <description>Instead of having a nice drink in a bar, I spent this Friday night splitting the RHEL6-based OpenVZ kernel branch/repository into two, so now we have &apos;rhel6&apos; and &apos;rhel6-testing&apos; branches/repos. Let me explain why.&lt;br /&gt;&lt;br /&gt;When we made an initial port of OpenVZ to RHEL6 kernel and released the first kernel (in October 2010, named 042test001), I created a repository named openvz-kernel-rhel6 (or just rhel6), and this repository was marked as &quot;development, unstable&quot;. When, after almost a year, we announced it as &quot;testing&quot; and then, finally, &quot;stable&quot; (in August 2011, named 042stab035.1).&lt;br /&gt;&lt;br /&gt;After that, all the kernels in that repository were supposed to be stable, because they are incremental improvements of the kernel we call stable. In theory it is. In practice, of course, there can always be new bugs (both introduced by us and by Red Hat folks releasing their kernel updates which we rebase to). Thus a kernel update from a repo which is supposed to be stable can do bad things.&lt;br /&gt;&lt;br /&gt;Better late than never, I have fixed the situation tonight by basically renaming &quot;rhel6&quot; repository into &quot;rhel6-testing&quot;, and creating a new repository called just &quot;rhel6&quot;. For now, I put 042stab037.1 (which is the latest kernel which has passed our internal QA) into rhel6 (aka stable), while all the other kernels, up to and including 042stab039.3, are in rhel6-testing repo.&lt;br /&gt;&lt;br /&gt;Now, very similar to what we do with RHEL5 kernels, all the new fresh-from-the-build-farm kernels will appear in rhel6-testing repo, at about the same time they go to internal QA. Then, the kernels which will have QA approval will appear in rhel6 (aka -stable) repo. What it means for you as a user is you can now choose whether to stay at the bleeding edge and have the latest stuff, or to take a conservative approach and have less frequent and delayed updates, but be more confident about kernel quality and stability.&lt;br /&gt;&lt;br /&gt;A few links:&lt;br /&gt;* &lt;a href=&quot;http://wiki.openvz.org/Download/kernel/rhel6&quot; rel=&quot;nofollow&quot;&gt;Stable RHEL6-based OpenVZ kernels&lt;/a&gt;&lt;br /&gt;* &lt;a href=&quot;http://wiki.openvz.org/Download/kernel/rhel6-testing&quot; rel=&quot;nofollow&quot;&gt;Testing RHEL6-based OpenVZ kernels&lt;/a&gt;&lt;br /&gt;* &lt;a href=&quot;http://download.openvz.org/openvz.repo&quot; rel=&quot;nofollow&quot;&gt;OpenVZ yum repository setup file&lt;/a&gt;&lt;br /&gt;* &lt;a href=&quot;http://openvz.org/pipermail/announce/2011-October/000268.html&quot; rel=&quot;nofollow&quot;&gt;Official announce of rhel6-testing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam.</description>
  <category>kernel</category>
  <category>openvz</category>
  <category>rhel6</category>
  <category>qa</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/38982.html</guid>
  <pubDate>Fri, 30 Sep 2011 11:26:07 GMT</pubDate>
  <title>LinuxCon Europe 2011 in Prague is coming</title>
  <link>http://openvz.livejournal.com/38982.html</link>
  <description>&lt;p&gt;And we are coming to Prague, too! This time, there will be as many as six people and two talks from us, plus we will held a memory cgroup controller meeting.&lt;/p&gt;

&lt;p&gt;The following OpenVZ/Parallels people are coming:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;James Bottomley&lt;/b&gt;, Parallels virtualization CTO&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Kir Kolyshkin&lt;/b&gt;, OpenVZ project manager&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pavel Emelyanov&lt;/b&gt;, OpenVZ kernel team leader (he&apos;s also taking part in Linux Kernel Summit)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Glauber Costa&lt;/b&gt;, OpenVZ kernel developer&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Maxim Patlasov&lt;/b&gt;, OpenVZ kernel developer&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Andrey Vagin&lt;/b&gt;, OpenVZ kernel developer&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;p&gt;Two talks will be presented. Since linuxsymposium.org site is currently down, let me quote talk descriptions here.&lt;/p&gt;
&lt;p&gt;1. &lt;b&gt;Container in a file&lt;/b&gt; by Maxim Patlasov.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;One of the feature differences between hypervisors and containers is the ability to store a virtual machine image in a single file, since most containers exist as a chroot within the host OS rather than as fully independent entities.  However, the ability to save and restore state in a machine image file is invaluable in managing virtual machine life cycles in the data centre.&lt;/p&gt;

&lt;p&gt;This talk will début a new loopback device which gives all the advantages of virtual machine images by storing the container in a file
while preserving the benefits of sharing significant portions with the host OS.  We will compare and contrast the technology with the
traditional loopback device, and describe some changes to the ext4 filesystem which make it more friendly to new loopback device needs.&lt;/p&gt;

&lt;p&gt;This talk will be technical in nature but should be accessible to people interested in cloud, virtualisation and container technologies.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;2. &lt;b&gt;OpenVZ and Linux kernel testing&lt;/b&gt; by Andrey Vagin.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;One of the less appealing but very important part of software development is testing. This talk tries to summarize our 10+ years of experience in Linux kernel testing (including OpenVZ and Red Hat Enterprise Linux kernels). Overall description of our test system is provided, followed by details on some of the interesting test cases developed. Finally, a few anecdotal cases of bugs found will be presented.&lt;/p&gt;

&lt;p&gt;In a sense, the talk is an answer to Andrew Morton&apos;s question from 2007: &quot;I&apos;m curious. For the past few months, people@openvz.org have discovered (and fixed) an ongoing stream of obscure but serious and quite long-standing bugs. How are you discovering these bugs?&quot;&lt;/p&gt;

&lt;p&gt;Talk is of interest to those concerned about kernel quality, and in general to people doing development and testing.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Finally, there will be a &lt;b&gt;memcg meeting&lt;/b&gt;. Since LinuxCon will be right after the Kernel Summit, a number of kernel guys will still be there so anyone interested in cgroups can come. This meeting is a continuation of &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/events/LPC2011MC/tracks/105&quot; rel=&quot;nofollow&quot;&gt;our recent discussion at Linux Plumbers&lt;/a&gt; (see etherpad and presentations).&lt;/p&gt;

&lt;p&gt; See you all in Prague in less than a month!&lt;/p&gt;
&lt;div class=&quot;lj-like&quot;&gt;&lt;!--



&lt;div class=&quot;lj-like-item lj-like-item-facebook&quot;&gt;
    &lt;fb:like href=&quot;http://openvz.livejournal.com/38982.html&quot; send=&quot;false&quot; layout=&quot;button_count&quot; width=&quot;100&quot; show_faces=&quot;false&quot; font=&quot;&quot; action=&quot;recommend&quot;&gt;
    &lt;/fb:like&gt;
&lt;/div&gt;



&lt;div class=&quot;lj-like-item lj-like-item-twitter&quot;&gt;
    &lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://openvz.livejournal.com/38982.html&quot; data-text=&quot;LinuxCon%20Europe%202011%20in%20Prague%20is%20coming&quot; data-count=&quot;horizontal&quot; 
            data-lang=&quot;en&quot; data-hashtags=&quot;&quot;&gt;Tweet&lt;/a&gt;
&lt;/div&gt;




&lt;div class=&quot;lj-like-item lj-like-item-google&quot;&gt;
    &lt;g:plusone size=&quot;medium&quot; href=&quot;http://openvz.livejournal.com/38982.html&quot;&gt;
    &lt;/g:plusone&gt;
&lt;/div&gt;












--&gt;&lt;/div&gt;

</description>
  <comments>http://openvz.livejournal.com/38982.html</comments>
  <category>linuxcon</category>
  <category>kernel</category>
  <category>prague</category>
  <category>openvz</category>
  <category>event</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/38801.html</guid>
  <pubDate>Tue, 30 Aug 2011 17:22:43 GMT</pubDate>
  <title>RHEL6 goes stable!</title>
  <link>http://openvz.livejournal.com/38801.html</link>
  <description>Guys, I am very proud to inform you that today we mark RHEL6 kernel branch as stable. Below is a copy-paste from &lt;a href=&quot;http://openvz.org/pipermail/announce/2011-August/000250.html&quot; rel=&quot;nofollow&quot;&gt;the relevant announce@ post&lt;/a&gt;. I personally highly recommend RHEL6-based OpenVZ kernel to everyone -- it is a major step forward compared to RHEL5.&lt;br /&gt;&lt;br /&gt;In the other news, Parallels has &lt;a href=&quot;http://www.parallels.com/products/pvcl/whatsnew/&quot; rel=&quot;nofollow&quot;&gt;just released Virtuozzo Containers for Linux 4.7&lt;/a&gt;, bringing the same cool stuff (VSwap et al) to commercial customers. Despite being only a &quot;dot&quot; (or &quot;minor&quot;) release, this product incorporates an impressive amount of man-hours of best Parallels engineers.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;== Stable: RHEL6 ==&lt;br /&gt;&lt;br /&gt;This is to announce that RHEL6-based kernel branch (starting from kernel 042stab035.1) is now marked as stable, and it is now the recommended branch to use.&lt;br /&gt;&lt;br /&gt;We are not aware of any major bugs or show-stoppers in this kernel. As always, we still recommend to test any new kernels before rolling out to production.&lt;br /&gt;&lt;br /&gt;New features of RHEL6-based kernel branch (as compared to previous stable kernel branch, RHEL5) includes better performance, better scalability (especially on high-end SMP systems), and better resource management (notably, vSwap support -- see &lt;a href=&apos;http://wiki.openvz.org/VSwap&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/VSwap&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;RHEL6 kernels can be downloaded from &lt;a href=&apos;http://wiki.openvz.org/Download/kernel/rhel6&apos; rel=&apos;nofollow&apos;&gt;http://wiki.openvz.org/Download/kernel/rhel6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;== Frozen: 2.6.27, 2.6.32 ==&lt;br /&gt;&lt;br /&gt;Also, from now we no longer maintain the following kernel branches:&lt;br /&gt;&lt;br /&gt;   * 2.6.27&lt;br /&gt;   * 2.6.32&lt;br /&gt;&lt;br /&gt;No more new releases of the above kernels are expected. Existing users (if any) are recommended to switch to other (maintained) branches, such as RHEL6-2.6.32 or RHEL5-2.6.18.&lt;br /&gt;&lt;br /&gt;This change does not affect vendor OpenVZ kernels (such as Debian or Ubuntu) -- those will still be supported for the lifetime of their distributions via the usual means (i.e. bugzilla.openvz.org).&lt;br /&gt;&lt;br /&gt;== Development: none ==&lt;br /&gt;&lt;br /&gt;Currently, there are no non-stable kernels in development. Eventually we will port to Linux kernel 3.x, but it might not happen this year. Instead, we are currently focused on bringing more of OpenVZ features to mainstream Linux kernels.&lt;br /&gt;&lt;br /&gt;Regards, OpenVZ team.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class=&quot;lj-like&quot;&gt;&lt;!--



&lt;div class=&quot;lj-like-item lj-like-item-facebook&quot;&gt;
    &lt;fb:like href=&quot;http://openvz.livejournal.com/38801.html&quot; send=&quot;false&quot; layout=&quot;button_count&quot; width=&quot;100&quot; show_faces=&quot;false&quot; font=&quot;&quot; action=&quot;recommend&quot;&gt;
    &lt;/fb:like&gt;
&lt;/div&gt;



&lt;div class=&quot;lj-like-item lj-like-item-twitter&quot;&gt;
    &lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://openvz.livejournal.com/38801.html&quot; data-text=&quot;RHEL6%20goes%20stable%21&quot; data-count=&quot;horizontal&quot; 
            data-lang=&quot;en&quot; data-hashtags=&quot;&quot;&gt;Tweet&lt;/a&gt;
&lt;/div&gt;




&lt;div class=&quot;lj-like-item lj-like-item-google&quot;&gt;
    &lt;g:plusone size=&quot;medium&quot; href=&quot;http://openvz.livejournal.com/38801.html&quot;&gt;
    &lt;/g:plusone&gt;
&lt;/div&gt;












--&gt;&lt;/div&gt;

&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; comments disabled due to spam</description>
  <category>kernel</category>
  <category>openvz</category>
  <category>rhel6</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>13</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/38447.html</guid>
  <pubDate>Wed, 24 Aug 2011 15:16:32 GMT</pubDate>
  <title>Linux Plumbers: Containers and CGroups miniconf</title>
  <link>http://openvz.livejournal.com/38447.html</link>
  <description>We have finally filed &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/users/963&quot; rel=&quot;nofollow&quot;&gt;a number of proposals&lt;/a&gt; for the up-coming Containers and CGroups miniconf to be held during &lt;a href=&quot;http://www.linuxplumbersconf.org/&quot; rel=&quot;nofollow&quot;&gt;Linux Plumbers Conference&lt;/a&gt;, 7 to 9 September 2011 in Santa Rosa, CA.&lt;br /&gt;&lt;br /&gt;From those proposals, one can clearly see what are our plans regarding the mainline integration. In a few words: &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/819&quot; rel=&quot;nofollow&quot;&gt;dcache management&lt;/a&gt;, &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/825&quot; rel=&quot;nofollow&quot;&gt;memory&lt;/a&gt; and &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/861&quot; rel=&quot;nofollow&quot;&gt;CPU&lt;/a&gt; cgroup controllers improvements, &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/849&quot; rel=&quot;nofollow&quot;&gt;container enter&lt;/a&gt;, &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/843&quot; rel=&quot;nofollow&quot;&gt;improved /proc virtualization&lt;/a&gt;, &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/831&quot; rel=&quot;nofollow&quot;&gt;checkpoint/restart [mostly] in userspace&lt;/a&gt; (of which I have &lt;a href=&quot;http://openvz.livejournal.com/38287.html&quot; rel=&quot;nofollow&quot;&gt;blogged recently&lt;/a&gt;), and &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/855&quot; rel=&quot;nofollow&quot;&gt;making vzctl work with mainline kernel containers&lt;/a&gt;. Oh, and the interesting &lt;a href=&quot;http://www.linuxplumbersconf.org/2011/ocw/proposals/837&quot; rel=&quot;nofollow&quot;&gt;loopback-like block device to hold a container filesystem&lt;/a&gt; (a.k.a. ploop).&lt;br /&gt;&lt;br /&gt;Quite a lot of interesting stuff, what do you think?&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;lj-like&quot;&gt;&lt;!--



&lt;div class=&quot;lj-like-item lj-like-item-facebook&quot;&gt;
    &lt;fb:like href=&quot;http://openvz.livejournal.com/38447.html&quot; send=&quot;false&quot; layout=&quot;button_count&quot; width=&quot;100&quot; show_faces=&quot;false&quot; font=&quot;&quot; action=&quot;recommend&quot;&gt;
    &lt;/fb:like&gt;
&lt;/div&gt;



&lt;div class=&quot;lj-like-item lj-like-item-twitter&quot;&gt;
    &lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://openvz.livejournal.com/38447.html&quot; data-text=&quot;Linux%20Plumbers%3A%20Containers%20and%20CGroups%20miniconf&quot; data-count=&quot;horizontal&quot; 
            data-lang=&quot;en&quot; data-hashtags=&quot;&quot;&gt;Tweet&lt;/a&gt;
&lt;/div&gt;




&lt;div class=&quot;lj-like-item lj-like-item-google&quot;&gt;
    &lt;g:plusone size=&quot;medium&quot; href=&quot;http://openvz.livejournal.com/38447.html&quot;&gt;
    &lt;/g:plusone&gt;
&lt;/div&gt;












--&gt;&lt;/div&gt;

</description>
  <comments>http://openvz.livejournal.com/38447.html</comments>
  <category>containers</category>
  <category>kernel</category>
  <category>linux plumbers</category>
  <category>mainline</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/38287.html</guid>
  <pubDate>Sat, 13 Aug 2011 09:26:08 GMT</pubDate>
  <title>Checkpoint/restart (mostly) in user space</title>
  <link>http://openvz.livejournal.com/38287.html</link>
  <description>There is a &lt;a href=&quot;http://lwn.net/Articles/452184/&quot; rel=&quot;nofollow&quot;&gt;good article at lwn.net&lt;/a&gt; telling about one of our latest development.&lt;br /&gt;&lt;br /&gt;We have checkpoint/restart (CPT) and live migration in OpenVZ for ages (well, OK, since 2007 or so), allowing for containers to be freely moved between physical servers without any service interruption. It is a great feature which is valued by our users. The problem is we can&apos;t merge it upstream, ie to vanilla kernel.&lt;br /&gt;&lt;br /&gt;Various people from our team worked on that, and they all gave up. Then, Oren Laadan was trying very hard to merge his CPT implementation -- unfortunately it didn&apos;t worked out very well either. The thing is, checkpointing is a complex thing, and the patch implementing it is very intrusive. &lt;br /&gt;&lt;br /&gt;Recently, our kernel team leader Pavel Emelyanov got a new idea of moving most of the checkpointing complexity out of the kernel and into user space, thus minimizing the amount of the in-kernel changes needed. In about two weeks of time he wrote a working prototype. So far the reaction is mostly positive, and he&apos;s going to submit a second RFC version for review to lkml.&lt;br /&gt;&lt;br /&gt;For more details, read the &lt;a href=&quot;http://lwn.net/Articles/452184/&quot; rel=&quot;nofollow&quot;&gt;lwn.net article&lt;/a&gt;. After all, while I am sitting next to Pavel, Mr. Corbet ability to explain complex stuff in simple terms is way better than mine.</description>
  <comments>http://openvz.livejournal.com/38287.html</comments>
  <category>checkpointing</category>
  <category>kernel</category>
  <category>openvz</category>
  <category>mainstream</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://openvz.livejournal.com/37961.html</guid>
  <pubDate>Thu, 02 Jun 2011 18:01:18 GMT</pubDate>
  <title>ioping</title>
  <link>http://openvz.livejournal.com/37961.html</link>
  <description>My colleague &lt;span  class=&quot;ljuser  i-ljuser     &quot;  lj:user=&quot;koct9i&quot;&gt;&lt;a href=&quot;http://koct9i.livejournal.com/profile&quot; &gt;&lt;img width=&quot;16&quot; height=&quot;16&quot;  class=&quot;i-ljuser-userhead&quot;  src=&quot;http://l-stat.livejournal.com/img/userinfo.gif?v=104.3&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://koct9i.livejournal.com/&quot; class=&quot;i-ljuser-username&quot;   &gt;&lt;b&gt;koct9i&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, whose daily job is developing and fixing OpenVZ kernel, was feeling bored last weekend, and to entertain himself he wrote a small utility called ioping. The idea is simple and straightforward: to wrote a utility similar to ping, which will show I/O latency in the same way ping shows network latency. The idea is very simple but I haven&apos;t see something like this. Actually, the tool was written to help investigating &lt;a href=&quot;http://bugzilla.openvz.org/show_bug.cgi?id=1880&quot; rel=&quot;nofollow&quot;&gt;OpenVZ bug #1880&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I liked ioping and worked on it a bit, too, just for run. Among some other minor stuff I have added a man page and spec file, so it is now available as an RPM package.&lt;br /&gt;&lt;br /&gt;Official project site: &lt;a href=&quot;http://code.google.com/p/ioping/&quot; rel=&quot;nofollow&quot;&gt;http://code.google.com/p/ioping/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My RPM packages and stuff: &lt;a href=&quot;http://kir.sacred.ru/ioping/&quot; rel=&quot;nofollow&quot;&gt;http://kir.sacred.ru/ioping/&lt;/a&gt;</description>
  <comments>http://openvz.livejournal.com/37961.html</comments>
  <category>development</category>
  <category>ioping</category>
  <lj:security>public</lj:security>
  <lj:poster>k001</lj:poster>
  <lj:posterid>990679</lj:posterid>
  <lj:reply-count>1</lj:reply-count>
</item>
</channel>
</rss>
