Ноя 27 2010

ureadahead

Published by

Ureadahead (Über-readahead) — разработка убунтовцев, которая призвана обеспечить ускорение загрузки системы. По их словам, ureadahead призвана сменить устаревшие readahead-list и sreadahead. Принцип работы всё тот же: чтение необходимых для загрузки системы файлов и кэширование их для более быстрого доступа.

Требования
Для работы ureadahead необходимо пропатчить ядро. Для разных версий ядра есть разные патчи:
<= 2.6.34

cd
wget http://pastebin.org/pastebin.php?dl=28573 -O 0001-trace-add-trace-events-for-open-exec-an.patch

=2.6.35

cd
wget http://github.com/andrewthomas/kernelPatches/raw/master/ureadahead/2.6.35-gentoo_trace_events.patch -O 0001-trace-add-trace-events-for-open-exec-an.patch

=2.6.36

cd
wget http://github.com/andrewthomas/kernelPatches/raw/master/ureadahead/2.6.36-gentoo_trace_events.patch -O 0001-trace-add-trace-events-for-open-exec-an.patch

Применяем патч

cd /usr/src/linux
patch -p1 < ~/0001-trace-add-trace-events-for-open-exec-an.patch

Включаем «слежение» в настройках ядра
Kernel Hacking — Tracers — включаем
в подменю Tracers включаем Trace process context switches and events. Эта опция появляется только если все пункты в подменю Tracers отключены.
Убедитесь, что опция Debug Filesystem включена.

Компилируем ядро.

Установка ureadahead (и libnih)

Gentoo
Добавляем ebuild’ы в локальный оверлэй

mkdir -p /usr/local/portage/dev-libs/libnih
cd /usr/local/portage/dev-libs/libnih
wget http://pastebin.org/pastebin.php?dl=28577 -O libnih-1.0.2.ebuild
ebuild libnih-1.0.2.ebuild manifest
mkdir -p /usr/local/portage/sys-apps/ureadahead
cd /usr/local/portage/sys-apps/ureadahead
wget http://pastebin.org/pastebin.php?dl=28581 -O ureadahead-0.100.0.ebuild
ebuild ureadahead-0.100.0.ebuild manifest

Размаскируем dev-libs/libnih и sys-apps/ureadahead, затем

emerge ureadahead

Сам по себе ureadahead не будет ничего делать, мы должны создать для этого initscript:

#!/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples
# All rights reserved. Released under the 2-clause BSD license.
description="Starts Ureadahead"
depend()
{
after *
keyword -timeout
}

start()
{
ebegin "Starting Ureadahead"
if [ -f /var/lib/ureadahead/pack ]
then
/usr/sbin/ureadahead
else
/usr/sbin/ureadahead --daemon --timeout 20
fi
 eend $? "Failed to start Ureadahead"
}

Сохраняем как /etc/init.d/ureadahead и делаем исполняемым. Добавляем в уровень загрузки run level

Arch
В AUR уже есть пропатченное ядро. Патченное ядро и ureadahead ставим стандартной командой:

yaourt -S kernel26-natty-git ureadahead

Чтобы ureadahead стартовал при загрузке, создаём /etc/rc.d/functions.d/ureadahead следующего содержания:

ureadahead() {
/sbin/ureadahead --timeout=240
}
add_hook sysinit_end ureadahead

Вместо sysinit_end можно использовать sysinit_premount. Подробнее о хуках можно посмотреть здесь.

Домашняя страница проекта, там же можно загрузить исходники.

One response so far

One Response to “ureadahead”

  1. unikumon 27 Ноя 2010 at 17:29

    Кстати, судя по убунтовским форумам, из-за ureadahead бывают различного рода проблемы, поэтому как всегда, пробуйте на свой страх и риск:)

Trackback URI | Comments RSS

Leave a Reply


*

Powered by WordPress