Есть Ли Польза От Кастомных Ядер?

Многие слышали о различных оптимизированных и улучшенных ядрах, это Zen Kernel и pf-kernel, которые я знаю.

Помимо добавления новых функций (TuxOnIce, поддержка aufs), они могут повысить производительность благодаря улучшенному диспетчеру задач (BFS) и планировщику (BFQ).

В этой теме я хочу сравнить производительность pf-kernel со стандартными ядрами в Ubuntu и Arch Linux, а также описать процесс сборки и установки pf-kernel для Ubuntu. Не вижу особого смысла тестировать Zen Kernel, потому что.

во-первых, проект выглядит заброшенным, а во-вторых, набор патчей в обоих очень похож.



Тесты



Арч Линукс
Начнем с тестирования Arch Linux на нетбуке.

Результаты тестов UnixBench на стандартном ядре (3.0-ARCH):

Тест Счет Единица Время Итерс.

Базовый уровень Индекс
Dhrystone 2 с использованием регистровых переменных 3432673.5 лпс 10,0 с 7 116700.0 294.1
Точильный камень двойной точности 821.7 MWIPS 10,2 с 7 55.0 149.4
Превосходная пропускная способность 1048.3 лпс 29,7 с 2 43.0 243.8
Копирование файла 1024 bufsize 2000 макс.

блоков

120834.3 Кбит/с 30,0 с 2 3960.0 305.1
Копирование файла 256 bufsize 500 макс.

блоков

36417.8 Кбит/с 30,0 с 2 1655.0 220.0
Копирование файла 4096 bufsize 8000 maxblocks 290993.0 Кбит/с 30,0 с 2 5800.0 501.7
Пропускная способность трубы 240124.9 лпс 10,0 с 7 12440.0 193.0
Переключение контекста на основе канала 21672.7 лпс 10,0 с 7 4000.0 54.2
Создание процесса 2885.9 лпс 30,0 с 2 126.0 229.0
Скрипты оболочки (1 одновременно) 738.5 л/мин 60,0 с 2 42.4 174.2
Скрипты оболочки (8 одновременно) 135.6 л/мин 60,4 с 2 6.0 226.1
Накладные расходы на системный вызов 600176.7 лпс 10,0 с 7 15000.0 400.1
Оценка индекса системных тестов: 221.1
А вот тот же тест на pf-kernel (3.0-pf):
Тест Счет Единица Время Итерс.

Базовый уровень Индекс
Dhrystone 2 с использованием регистровых переменных 3700926.6 лпс 10,0 с 7 116700.0 317.1
Точильный камень двойной точности 846.1 MWIPS 10,2 с 7 55.0 153.8
Превосходная пропускная способность 1343.2 лпс 29,6 с 2 43.0 312.4
Копирование файла 1024 bufsize 2000 макс.

блоков

127468.0 Кбит/с 30,0 с 2 3960.0 321.9
Копирование файла 256 bufsize 500 макс.

блоков

37622.9 Кбит/с 30,0 с 2 1655.0 227.3
Копирование файла 4096 bufsize 8000 maxblocks 342606.2 Кбит/с 30,0 с 2 5800.0 590.7
Пропускная способность трубы 296672.7 лпс 10,0 с 7 12440.0 238.5
Переключение контекста на основе канала 41227.5 лпс 10,0 с 7 4000.0 103.1
Создание процесса 3969.3 лпс 30,0 с 2 126.0 315.0
Сценарии оболочки (1 одновременно) 861.1 л/мин 60,1 с 2 42.4 203.1
Скрипты оболочки (8 одновременно) 159.4 л/мин 60,2 с 2 6.0 265.6
Накладные расходы на системный вызов 642005.3 лпс 10,0 с 7 15000.0 428.0
Оценка индекса системных тестов: 264.6
Как видите, общий прирост производительности составил 20%.



Убунту
Теперь результаты тех же тестов, но для Ubuntu. На стандартном ядре (2.6.38-11-generic):
Тест Счет Единица Время Итерс.

Базовый уровень Индекс
Dhrystone 2 с использованием регистровых переменных 39162082.2 лпс 10,0 с 7 116700.0 3355.8
Точильный камень двойной точности 9143.1 MWIPS 9,9 с 7 55.0 1662.4
Превосходная пропускная способность 11472.2 лпс 29,8 с 2 43.0 2668.0
Копирование файла 1024 bufsize 2000 макс.

блоков

1041722.3 Кбит/с 30,0 с 2 3960.0 2630.6
Копирование файла 256 bufsize 500 макс.

блоков

327345.4 Кбит/с 30,0 с 2 1655.0 1977.9
Копирование файла 4096 bufsize 8000 maxblocks 1730411.9 Кбит/с 30,0 с 2 5800.0 2983.5
Пропускная способность трубы 4204868.3 лпс 10,0 с 7 12440.0 3380.1
Переключение контекста на основе канала 738528.0 лпс 10,0 с 7 4000.0 1846.3
Создание процесса 32309.9 лпс 30,0 с 2 126.0 2564.3
Скрипты оболочки (1 одновременно) 11023.5 л/мин 60,0 с 2 42.4 2599.9
Скрипты оболочки (8 одновременно) 1425.4 л/мин 60,0 с 2 6.0 2375.7
Накладные расходы на системный вызов 5723850.3 лпс 10,0 с 7 15000.0 3815.9
Оценка индекса системных тестов: 2580.4
На ядре pf (2.6.38-pf8):
Тест Счет Единица Время Итерс.

Базовый уровень Индекс
Dhrystone 2 с использованием регистровых переменных 71269301.5 лпс 10,0 с 7 116700.0 6107.1
Точильный камень двойной точности 9175.2 MWIPS 9,9 с 7 55.0 1668.2
Превосходная пропускная способность 12014.6 лпс 30,0 с 2 43.0 2794.1
Копирование файла 1024 bufsize 2000 макс.

блоков

1580881.5 Кбит/с 30,0 с 2 3960.0 3992.1
Копирование файла 256 bufsize 500 макс.

блоков

428842.2 Кбит/с 30,0 с 2 1655.0 2591.2
Копирование файла 4096 bufsize 8000 макс.

блоков

2315055.5 Кбит/с 30,0 с 2 5800.0 3991.5
Пропускная способность трубы 4389021.4 лпс 10,0 с 7 12440.0 3528.2
Переключение контекста на основе канала 831655.8 лпс 10,0 с 7 4000.0 2079.1
Создание процесса 34789.6 лпс 30,0 с 2 126.0 2761.1
Скрипты оболочки (1 одновременно) 11890.9 л/мин 60,0 с 2 42.4 2804.5
Скрипты оболочки (8 одновременно) 1506.4 л/мин 60,0 с 2 6.0 2510.7
Накладные расходы на системный вызов 5815793.6 лпс 10,0 с 7 15000.0 3877.2
Оценка индекса системных тестов: 3050.7
Прирост составил 18%, что на мой взгляд весьма существенно.

Почему второй тест дал немного меньший результат? Скорее всего, дело в том, что тест проводился на x86_64 и стандартное ядро имело больше оптимизаций под архитектуру процессора, чем ядро, построенное для Pentium Pro на Intel Atom (SSE и другие).

Как видно из всего этого, смысл в сборке собственного ядра есть.

Результаты примерно одинаковы на двух совершенно разных процессорах: Intel Atom N270 и Core 2 Duo E8500. Процесс установки ядра для ARCH описывать не буду; это максимально просто.

Я уверен, что это не составит труда для его пользователей.



Сборка и установка pf-kernel для Ubuntu

Загрузите нашу версию ядра с сайта kernel.org. Внимание: вам необходимо скачать версию без патчей стабилизации (в случае 2.6.38.11 вам необходимо скачать просто 2.6.38).

Загрузите pf-kernel для этой версии ядра.

отсюда .

Распакуйте архивы и установите патч.

патч -p1 < (pfkernel patch address) Скопируйте вашу конфигурацию в папку ядра.

cp /boot/config-`uname -r` .

config При желании можно сделать localmodconfig, который отключит все ненужные модули, это может сильно ускорить сборку ядра.

сделать локальныймодконфиг если он жалуется на то, что нет /sbin/lsmod ln -s /bin/lsmod /sbin/lsmod Настройка ядра сделать конфигурацию меню При желании необходимо включить BFS, BFQ и tuxonice, а во вкладке процессор выбрать оптимизацию под ваш процессор.

Установите патч для ядер с сайта kernel.org. sed -rie 's/echo "\+"/#echo "\+"/' scripts/setlocalversion Очистка каталога сделать-kpkg чистым Мы собираем CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version=-pf kernel_image kernel_headers Вот и все.

Устанавливаем ядро командой dpkg -i *.

deb, перезагружаемся и выбираем его в загрузчике.

ОБНОВЛЯТЬ: Zen Kernel показал практически одинаковые результаты, местами чуть лучше, но в целом не более 5%, а затем вылетел, даже не пройдя все тесты (время теста составило около 40 минут).

Кто-то Мистер З Я очень сомневался в правильности расчетов, здесь В таблице указан прирост показателей по каждому тесту, а также средний прирост, а не только прирост индекса.

Цифры оказались почти одинаковыми.

Для Йога , МудрыйЛорд И гномик — Сравнение ванильного ядра с ванильным, собранным под свою архитектуру, если и показывало прирост производительности, то не более чем по уровню погрешности, разницы почти нет. Теги: #linux #настройка Linux #ядро Linux #ubuntu

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.