Многие слышали о различных оптимизированных и улучшенных ядрах, это 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 |
Тест | Счет | Единица | Время | Итерс.
|
Базовый уровень | Индекс |
---|---|---|---|---|---|---|
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 |
Убунту
Теперь результаты тех же тестов, но для 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 |
Тест | Счет | Единица | Время | Итерс.
|
Базовый уровень | Индекс |
---|---|---|---|---|---|---|
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 |
Почему второй тест дал немного меньший результат? Скорее всего, дело в том, что тест проводился на 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
-
20 Патчей «Вторник»
19 Oct, 24 -
Глобальный Саммит Creative Commons 2011 Г.
19 Oct, 24