qemu-kvm with cache=none fails on ext4 filesystem with journal_data option

Kvm has become one of the major virtualization technologies the last years. For Redhat Linux it has even become the default virtualization solution. Kvm´s IO performance is hardly competitive to other virtualization solutions when using the default options. Especially when using qcow2 images, the IO performance of kvm/qemu can be greatly improved by disabling the cache of the underlying host filesystem. This can be done by starting kvm with the cache=none option, in example with the options

-drive file=my_image.qcow2,index=0,media=disk,cache=none

instead of just supplying the image file with -hda my_image.qcow2. Then the image file is being opened using the O_DIRECT flag, bypassing the page cache. If the underlying filesystem does not support the O_DIRECT flag, this fails with the error message:

could not open disk image my_image.qcow2: Invalid argument

This is the case for an ext4 filesystem with full journaling enabled. One can easily test if the O_DIRECT flag is supported by the underlying filesystem with a simple dd command on the host:

dd if=some_file of=/dev/null iflag=direct

If the O_DIRECT flag is not supported it results in the following error:

dd: opening `some_file’: Invalid argument

Thus, if safety concerns do not apply, one does not want to use full journaling, to increase performance. The journaling options can be set either in /etc/fstab or in the filesystem itself. For the fstab case the red marked part of the following example entry has to be removed.

/dev/sda7 / ext4 defaults,noatime,nodiratime,async, data=journal 0 1

If the journaling option is set in the filesystem, this can be shown and edited with the tune2fs command. In example tune2fs -l /dev/sda7 displays information on the filesystem on /dev/sda7. If full journaling is enabled, the output contains the journal_data mount option:

Default mount options:    journal_data

The option can be removed with tune2fs -o^journal_data /dev/sda7. Afterwards the output of tune2fs -l does not contain the journal_data mount option any more:

Default mount options:    (none)

In both cases the filesystem has to be remounted to activate the changes. Afterwards qemum-kvm works with the cache=none option, as described above, and with increased IO performance.

Jürgen

References:
[1] itscblog.tamu.edu
[2] blog.nkadesign.com

 

 

 

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

iptables mirror target for linux kernel 3.1

After my last kernel upgrade I tried to build the iptables mirror target published here. The iptables mirror target takes the packet sent to your machine and returns the same packet to the machine the packet came from. Thus, let’s say someone tries to scan your machine or tries an attack he would scan his own machine or even attack his own machine. Guess what happened when I tried it with kernel versions 3.1 and 3.2 , it did not build anymore with the current linux kernel. There were some changes in the  kernels network stack. So I had to modify the iptables mirror target again to make the module work with current kernel versions. You can download the newer release for kernel version 3.1 and probably future kernels here:

MIRROR.3.1.0.tar.gz (2327) gplv3-127x51

The kernel module has been tested with kernel version 3.2.1 and 3.1. To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the REJECT or DROP target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may lead to strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module. These machines may end up playing ping pong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

MIRROR.2.6.13.tar.gz (3160)
MIRROR.2.6.24.tar.gz (3598)
MIRROR.2.6.25.tar.gz (3317)
MIRROR.2.6.28.tar.gz (3366)
MIRROR.2.6.31 (3192)
MIRROR.2.6.35.tar.gz (3117)
MIRROR.2.6.36.tar.gz (3205)
MIRROR.2.6.37.tar.gz (2951)
MIRROR.3.0.7.tar.gz (2636)
gplv3-127x51

regards
Jürgen

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

zen-sources-3.0 with tuxonice

Starting with the 2.6.36 kernel, tuxonice has been removed from zen-sources. The latest tuxonice patch that is available is for the linux kernel 3.0.  So I patched the zen-stable-3.0 sources with tuxonice. Hopefully a patch for more recent kernel versions will be available soon.

Suspend to RAM works with this kernel, at least on my Dell Precison M65 and my Desktop, as well as suspend to disk does.

To get things to work, download the zen-stable-3.0 kernel tree from zen-kernel.org and extract it. Afterwards download the tuxonice patch from tuxonice.net and apply it. For getting the zcache feature, to work you have to download and apply this patch: linux-3.0-zcache-fix.patch.bz2 (1130) The zcache feature doubles RAM efficiency while providing a significant performance boosts on many workloads.  The patch has been extracted from vserver-sources-2.3.2.5 with working zcache feature.  After applying the patch  you can continue with the standard kernel building process. The zcache feature is located under staging drivers in the kernel tree and depends on the cleancache feature, which is located  under processor types and features. To enable the zcache feature, you have to pass the zcache keyword to your kernel, in example in your grub.conf.

Example: kernel /bzImage panic=60 root=/dev/hda3 zcache

For Gentoo users there is a more easy way: Download my modified overlay from zen-sources-3.0.tar.gz (976) and extract it in /usr/local/portage. Be sure to include the following line in your /etc/make.conf:

PORTDIR_OVERLAY=”/usr/local/portage”

If you want to use tuxonice include tuxonice in your USE-flags. Then emerge zen-sources and build the kernel as you wish.

Tuxonice is not officially supported in current zen-sources. So If you’re using the files above, don’t report any bugs to zen-sources.org. You are on your own.

For my Precision M65 I used the following kernel config: config_zen_3.0_dell_m65.zip (1007)

For more information on the zen-sources patchset see www.zen-sources.org.

best regards

Jürgen

 

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

iptables mirror target for linux kernel 3.0.7

After my last kernel upgrade I recognized that the iptables mirror target I published here does not work anymore with kernel version 3.0. There were some changes in kernel code. Thus I had to modify the iptables mirror target again to make it work with current kernel versions. You can download the newer release for kernel version 3.0 and probably future kernels here:

MIRROR.3.0.7.tar.gz (2636) gplv3-127x51

The kernel module has been tested with kernel version 3.0.7. According to the kernel changelog it should work with kernels since 2.6.39. If you have tried the mirror module with other kernel versions  than 3.0.7, please leave a reply for others to know whether other versions work, or not.

To build the module, boot the kernel you want to use the module with. Afterwards unpack the archive and run the compile.sh script to build the module. Then run the install.sh script for installing the compiled module into the /lib/modules directory for your kernel.

Now you may use the mirror target in place of the reject or drop target in the INPUT, FORWARD and PREROUTING chains, like this in your firewall script:

$IPTABLES -A INPUT -j MIRROR

Beware: The use of the mirror target may have strange results, in example if you want to connect to an iptables protected machine which uses the mirror target, you may end up connecting to the local machine without recognizing it. It also may use much bandwith. The worst case occurs if you have two machines using the module.  These machines may end up playing pingpong. So you have been warned, use with caution and at your own risk. For more information see: MIRROR target.

Downloads for older kernel versions are below. Notice the version numbering 2.6.25 works for kernels up to 2.6.27. 2.6.28 also works for 2.6.29 and 2.6.30 kernels. The 2.6.13 version of the module should work up to kernel version 2.6.16.

MIRROR.2.6.13.tar.gz (3160)
MIRROR.2.6.24.tar.gz (3598)
MIRROR.2.6.25.tar.gz (3317)
MIRROR.2.6.28.tar.gz (3366)
MIRROR.2.6.31 (3192)
MIRROR.2.6.35.tar.gz (3117)
MIRROR.2.6.36.tar.gz (3205)
MIRROR.2.6.37.tar.gz (2951)
gplv3-127x51

regards
Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

New version of the vr920 headtracking driver coming soon

Last year I published the first version of my linux headtracking driver for the VR920 HMD here. Currently I am working on a new driver version which will have the following additional features:

  • Multiple Protocols:
    -UDP multicast (as before)
    -UDP unicast (for flightgear connection and perhaps more)
    -mouse emulation (via uinput)
    -joystick emulation (via uinput)
    -character device for direct angle readings (via cuse, will
    require a kernel >= 2.6.31)
  • Inverting of axes (to have moving the head up making the mouse pointer up or down, depending on needs)
  • Better filtering algorithm (more stable headtracking)
  • Scaling of data (i.e. to match screen size with mouse mode)
  • Customisable delay between sensor readings
  • User interface separated from the driver

With the upcoming MPX and the mouse emulation it should be possible to control the visible viewport by turning around the head. Controlling the view for games or other software that do not natively support headtracking should also be possible with the emulation.

In the current development stage most of the features are basically working so expect the new driver to be released soon.

Stay tuned for updates

Jürgen

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

FlightGEAR 2.0.0 on GENTOO

I have searched for a 3D game on Linux and found this nice flight simulation. In Gentoos portage tree there is only an old version avaiable, so I wrote an ebuild for the new version. It compiles fine on my computer wth 64bit Gentoo – Linux.

The Power of my graphics board (nVidia Corporation Quadro FX 360M) seems to be enough for this simulation. The control is not easy, but with some time, you can fly around, like in a real aircraft.

What is FlightGear?
The FlightGear flight simulator project is an open-source, multi-platform, cooperative flight simulator development project. Source code for the entire project is available and licensed under the GNU General Public License.

HowTo install on Gentoo:

Download FlightGear ebuild (1237) file which include the ebuilds

cd /usr/locale/portage
tar -xzpvf ~/flightgear-2.0.0.tar.gz

Then you have to unmask the ebuilds in /etc/portage/package.keywords :
=games-simulation/flightgear-2.0.0 **
=dev-games/simgear-2.0.0 **
=dev-libs/boost-1.37.0-r1 **
=dev-util/boost-build-1.37.0 **
=media-libs/freeglut-2.6.0  **

now you can ’emerge =games-simulation/flightgear-2.0.0′

Have fun

Xexplorer

UPDATE 04.03.2010:

Now it´s in portage, with two different lines. First of all I found out that freeglut 2.6 is needed for flightgear, so I put it in the ebuild. And the second is a patch witch is needed if you don´t use freeglut 2.6. So I think my choice is the better way.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

TuxOnIce is broken in 2.6.29-zen1

A few days ago  zen-sources 2.6.29-r1 was published. I tried it on my Notebook and it looks quite fine. There is only one thing which seems to be broken. It’s TuxOnIce. I’ve tested many ways to get it running but it won’t work. The serious thing is that every thing looks normal. When there is a solution I will post it here.

So stay tuned till this is fixed.

Best regards

Thorsten

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...