メタデータの末尾にスキップ
メタデータの先頭に移動

このページの古いバージョンを表示しています。現在のバージョンを表示します。

現在のバージョンとの相違点 ページ履歴を表示

« 前のバージョン バージョン 3 次のバージョン »

Major changes since 10.04

The biggest change from 10.04 is that "server" flavour has been removed.
Ubuntu server now uses the "generic" flavour, the same kernel used in desktop edition.

Differences between server and generic flavours were described here.

Build our own server flavour

We need "server" flavour for 12.04 for best performance.
To build our own server flavour of the kernel, follow instructions below.

References:

Setup build environment

$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo reboot
(make sure the system is running the latest kernel)
$ sudo apt-get install build-essential

Obtain the latest kernel sources

$ apt-cache search linux-image-3 virtual | sort | tail -1 | sed 's/-virtual.*$//'
linux-image-3.2.0-25
$ sudo apt-get build-dep linux-image-3.2.0-25-generic
$ apt-get source linux-image-3.2.0-25-generic

Create and modify configurations

$ cd linux-3.2.0/debian.master/config/amd64
$ cp config.flavour.generic config.flavour.server
$ vi config.flavour.server
(change I/O scheduler from CFQ to deadline.  Disable voluntary preemption.)
$ cat config.flavour.server
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_DEADLINE=y
CONFIG_DEFAULT_IOSCHED="deadline"
CONFIG_INTEL_IDLE=y
CONFIG_NR_CPUS=256
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
$ sed -i 's/^CONFIG_HZ=250/CONFIG_HZ=100/' config.common.amd64
$ cd ..
$ vi config.common.ubuntu
(Edit HZ like this)
CONFIG_HZ_100=y
# CONFIG_HZ_1000 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
$ cd ../..
$ chmod -R a+x debian/scripts/*
$ ./debian/rules updateconfigs
$ cd debian.master
$ vi etc/getabis
(append server flavour to amd64 arch like this)
getall amd64 generic virtual server
$ vi rules.d/amd64.mk
(append server flavour to list of flavours like this)
flavours        = generic virtual server
$ cp control.d/vars.generic control.d/vars.server
$ vi control.d/vars.server
(edit as you like)
$ diff -u control.d/vars.generic control.d/vars.server 
--- control.d/vars.generic      2012-05-30 06:41:02.000000000 +0000
+++ control.d/vars.server       2012-05-30 07:02:14.952238628 +0000
@@ -1,6 +1,6 @@
 arch="i386 amd64"
-supported="Generic"
-target="Geared toward desktop and server systems."
+supported="Server"
+target="Geared toward server systems."
 desc="=HUMAN= SMP"
 bootloader="grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1)"
 provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, ndiswrapper-modules-1.9"
$ cd ..

Apply patches

Apply a patch for LIO iSCSI target.
Obtain the patch from gist.github.com.

Build packages

$ fakeroot debian/rules clean
$ skipabi=true skipmodule=true fakeroot debian/rules binary-indep
(this will build kernel header package)
$ DEB_BUILD_OPTIONS=parallel=8 skipabi=true skipmodule=true fakeroot debian/rules binary-server
(this will build kernel image package)
$ ls ../*.deb
../linux-doc_3.2.0-24.38_all.deb
../linux-headers-3.2.0-24_3.2.0-24.38_all.deb
../linux-headers-3.2.0-24-server_3.2.0-24.38_amd64.deb
../linux-image-3.2.0-24-server_3.2.0-24.38_amd64.deb
../linux-source-3.2.0_3.2.0-24.38_all.deb
../linux-tools-common_3.2.0-24.38_all.deb

Save linux-headers-*.deb and linux-image-*.deb packages.

Install packages

$ sudo apt-get -y purge linux-image-$(uname -r)
$ sudo apt-get autoremove --purge
$ sudo dpkg -i linux-headers-*.deb linux-image-*.deb

Affected Bugs

BDI flusher threads stop working

ext4 ファイルシステムの遅延アロケーションと組み合わせてこれが起きると、 vm.dirty_expire_centisecs
(通常 30 秒)経過してもダーティーページがフラッシュされず、永遠に空ファイルのままという現象
が発生してしまう。

BDI flusher が止まる理由は kernel 2.6.36 以降での「最適化」によるものらしい。問題は、その後 dirty page
が発生したイベントを取り損ねてスレッドが起動しないことにあるようだ。手動で sync(1) を呼べば BDI flusher
が起動するのは確認した。

c.f. R.I.P. pdflush (LKML)

 

  • ラベルがありません