Pull to refresh

Comments 62

Чуть позже добавлю результаты Zen Kernel.
А еще есть liquorix.net с готовыми сборками Zen Kernel для debian в виде репозитория
Хочу вдогонку сказать несколько слов.

Во-первых, zen-kernel совсем не заброшен, просто они перешли на модель релизов без выпуска патчей. Я сам от них с удовольствием периодически утаскиваю в pf-kernel, например, тот же BFQ, пока не выходят официальные патчи.

Во-вторых, настоятельно рекомендую не заморачиваться с патчами для старых ядер, так как я просто для них не выпускаю новые версии pf-kernel. Вообще, этот патчсет для любителей bleeding-edge, а исправления в старые версии не вносятся.

В-третьих, для Arch Linux есть PKGBUILD в AUR'е: aur.archlinux.org/packages.php?ID=50956

Ну и напоследок, конечно же, спасибо за тесты. Теперь буду ссылаться на статью, когда меня будут спрашивать, зачем я это делаю.
Вопросы к вам:
1. Как я понял, вы девелопер pf ядер?
2. Имеет ли смысл использовать ваши ядра на серверах(предположим высоконагруженные веб сервера(apache/nginx/mysql/pgsql)).
Будет ли и там прирост производительности или вы затачиваете свои ядра под десктопы?
3. Имеет смысл использовать ваши ядра под виртуальные машины(как гость, так и хост)? Будет ли прирост производительности?

Ну это для начала.
1. да;
2. я не имею такого опыта, пользуюсь им только на своём ноутбуке. Могу только предположить, что на процессорах с количеством ядер меньше или равно восьми попробовать стоит;
3. регулярно пользуюсь виртуальной машиной, хост — на pf-kernel, ощущения получше, чем при использовании дистрибутивных ядер.
А вы думаете о создании ppa для ubuntu?
Я положительно к этому отношусь, если ppa будет заниматься кто-то, кроме меня.

Если вы — дайте знать, помещу ссылочку на сайте.
Поделитесь, пожалуйста, ссылкой на свой сайт.
post-factum, а вы сами свои патчи не тестировали?

Интересно, конечно, получается. Никогда бы не подумал, что из ядра можно выжать аж 20% повышения производительности.
Нет, чисел никогда не получал, только субъективные ощущения.
Не смотря на то что баллы отличаются на 18/20%, время в каждом из тестов отличается максимум на 0.2 секунды. Следовательно вопрос: прирост производительности ощущается только по увеличению циферок, или же система правда шустрее работает?
На нетбуке разницу я смог ощутить, на десктопе все и без того быстро работало.
Как приверженец Gentoo на серверах после всяких CentOS, Fedora и Ubuntu — сборка системы под железо и настройка ядра с использованием головы (а последнее время и genkernel весьма поумнел) скажу что эффект на современном оборудовании весьма ощутим. Многие пакеты бинарные скомпилированы так, что совместимы с весьма далёкими предками сегодняшних процессоров, а это оставляет весьма большой простор для оптимизации. К тому же на руку играет тот факт, что при установке Gentoo руки сами как-то тянутся настроить всё нормально изначально. К тому же в Gentoo не такие консервативные настройки по умолчанию, особенно в сетевой части. Опытным путём доказанно что там, где Ubuntu Server дохнет от сетевой нагрузки, заботливо собранное Gentoo ядро без особых модификаций в сетевом стеке вполне себе справляется и не уводит сервак в непонятный ступор — худо-бедно, но под 100% нагрузкой сервер отвечает и умудряется перемалывать запросы к нему. Ubuntu машина просто не отвечает и её сетевая часть просто умирает.
Всё выше сказанное чисто субъективно и личный опыт. В духе истенного Gentoo'ника скажу так — просто попробуйте сами и решите надо оно вам или нет :)
Да, забыл дописать что Ubuntu можно вылечить перешерстив настройки сетевого стека, а так же очень желательно посмотреть настройки ядра и перекомпилить его с модификациями. Разница в том, что в Gentoo не то что проще — это стандартная часть процесса, которая не вызывает каких либо проблем.
как человек, пересевший с Gentoo на Ubuntu, я хочу заметить, что рабочее время тоже стоит денег. и деньги, сэкономленные на оборудовании вы сливаете тратой времени на сборку системы.
Вопрос организации рабочего времени?
Компилится себе в фоне в SSH окне и пусть компилится, тем временем делаю остальную работу. А тонкая настройка ядра и /proc/ в любом случае на любом Линуксе процесс долгий.

К тому же компилится и обновляется всё не так уж часто. Это по началу с непривычки может занять долго, а когда уже со всем знаком, то занимает это всё ничуть не дольше чем на любом бинарном дистре. А хороший админ вообще подымет локальный portage сервер и будет с него раздавать уже скомпиленные и проверенные пакеты на свою инфраструктуру.
как человек, который использует и то и другое — скажу, там где это оправдано — надо использовать то, что оправдано.
к тому же не мешает потратить часик и написать самостоятельную установку генты со всем необходимым. автоматизация рулит и педалит.
пилить бубунту до вменяемого состояния дольше, чем автоматизировать установку генты на сервер.
Если использовать виртуализацию, то для некоторых гипервизоров кастомное ядро — просто необходимость
Phoronix недавно тестировал отдельно BFS (т.е. -ck patchset), и увеличения в производительности замечено там не было, скорее даже снижение в ней; только автор постоянно отмечал, что отзывчивость системы в целом гораздо лучше, но это вещь совершенно эмпирическая.

Насколько я понимаю, в -pf ядре прирост должны обеспечивать именно BFS и BFQ.

Получается, что либо ваш тест не очень верен, либо phoronix врёт, либо BFQ даёт прирост в 20%, что едва ли истинно.

Либо, к примеру, конфигурация ядер отличается не только в плане этих patchset'ов.
Тут можно глянуть чистые отчеты UnixBench.
Ну, там точно те же числа, что в статье. Я не знаком с UnixBench'ем, так что принимаю его Index на веру.
Может быть этот результат нужно как-нибудь логарифмировать, так что реальный прирост будет в полпроцента?
Интересно, что дало больший эффект — собственно патчи или же другие улучшения/облегчения ядра (вроде make localmodconfig).

Или всё-таки сравнение было «честное»? В смысле, сравнивалось стандартное ядро и пропатченное (и более ничего — только наложен патч + включены опции, касающиеся только патча, никаких других оптимизаций).
Патч + сборка под свою архитектуру + localmodconfig, но он не должен особо влиять на производительность так как почти все что он отключает это модули.
Гм, так тогда, видимо, львиную долю производительности даёт не patchset, а как раз сборка под личную архитектуру.
В этом случае было бы клево включить в тестирование самосборное ванильное непатченное ядро.
Интересно было бы просто стандартное ядро + сборка под свою архитектуру + localmodconfig сравнить с этим ядром.
UFO just landed and posted this here
Автор тестировал на разных машинах.
UFO just landed and posted this here
Почему? Наоборот по 2 теста на 2 разных машинах с разными дистрибами, наоборот все хорошо должно быть.
UFO just landed and posted this here
UFO just landed and posted this here
Все же я писал о том, что есть ли смысл возится с ядрами для ускорения производительности, а не сравнивал убунту и арч =)
UFO just landed and posted this here
Спасибо, давно не решался попробовать, с мыслью, а оно мне надо, сейчас убедили, что для нетбука стоит попробовать. Как говорится будем посмотреть…
У меня сборка ядра съедает 383 гига и вылетает с ошибкой о нехватке места. Сколько ж ей надо?
Около 4 гигабайт хватает о_О
Это странно, я на виртуалках линукс кастомный собирал, а на боевой старой машине фряшное ядро.
Максимум гигов 40 на обеих системах было. Думаю, у вас что-то течет.
ну ок, у меня на eee pc 701 с хардом на 4 Gb все успешно собиралось… ессно, система места тоже немало съедала, вместе с gcc и прочими сопутствующими штуками
UFO just landed and posted this here
А не надо свой конфиг с нуля делать, подсовываем из /proc/config.gz и уже его правим
Вот тут в середине о сборке ядра на пальцах
В общем, прогнал еще пару раз… перед этим запуская make clean && make-kpkg clean. Всё равно съедает всё свободное место (~390Гб) и вылетает…
Что конкретно занимает столько места? Может там просто какая-то ошибка.
Так и не нашел где утечка, собрал на другом компе.
Результаты тестирования:

Было ( Ubuntu 11.04 2.6.38-12-generic ):

System Benchmarks Index Score 470.3 ( 1 процесс )
System Benchmarks Index Score 913.4 ( 2 параллельных процесса )

Стало ( Ubuntu 11.04 2.6.38-pf8 ):

System Benchmarks Index Score 585.8 ( 1 процесс )
System Benchmarks Index Score 1065.1 ( 2 параллельных процесса )
У меня есть старый duron 900 c 512 метрами и гигом свапа Так на нем при сборке ядра свап не используется :-))
То есть вы тестировали стандартное ядро дистрибутива с собранным вручную? Я думаю ван нужно сравнивать ванильное ядро собранное вручную с кастомным.
Все же мне кажется тогда бы тесты на x86_64 не дали особого прироста. В любом случае я прямо сейчас решил сравнить ванильное ядро с ванильным с оптимизацией.
Кстати, вот в этой статье написано:
General rule, concurrency level = number of processor cores + 1


А след. команда вроде бы выдаёт только количество процессоров:
`getconf _NPROCESSORS_ONLN`

Есть еще какие-то нюансы?
Извиняюсь, имел ввиду количество ядер (у меня на Core2Duo выводит 2)
При использовании BFS автор рекомендует concurrency level = number of processor cores, т.к. раньше считалось, что добавлять +1 — хороший тон, т.к. будет меньше оверхед менеджера задач. Но для BFS это не так.
Ололо, в Gentoo уже кто-нибудь испытал? Поделитесь результатом? Сейчас сам юзаю это: 3.0.6-gentoo #2 SMP PREEMPT Sun Oct 23 22:03:33 MSK 2011 x86_64 Intel® Core(TM)2 Quad CPU Q6600 @ 2.40GHz GenuineIntel GNU/Linux / CFQ scheduler
В эти проценты не входит фризы при активных операциях с диском без BFQ :-)
Как и обещал попробовал Ваш метод, все получилось, только в статейку думаю стоит добавить команду
update-initramfs -c -k 'kernel name' — в моем случае было 2.6.38-pf8-pf.
Собирал на нетбуке ASUS 1005HA(Atom 1,6N280, 1Gb RAM), на сборку deb пакета примерно ушло 1,5 часа.
Проблематика: с kernel.org скачан linux-3.0.4.tar.gz, с pf.natalenko.name/sources/ скачан patch-3.0.4-pf.bz2, патчу, происходит непонятное: Reversed (or previously applied) patch detected! Assume -R? [n].
Насколько я понимаю, это происходит, если патчится исходник, уже пропатченный чем-то другим, имеющий стабилизационные патчи или что-то в этом духе. Но этот патч вроде бы именно для этих исходников. Подскажите, что делать, гугл внятных ответов на запрос по этой фразе не дает…
Там же ясно сказано:

> Latest patch 3.0.7-pf * (20.10.2011), applies to bare 3.0 kernel with no stable patches

Тоесть, качаем 3.0 kernel with no stable patches, затем patch 3.0.7-pf и следуем указанным инструкциям.
Кстати, у меня на Ubuntu 11.10 (с использованием указанных мною выше версий ядра/патча) собралось без проблем.
В общем, на моей рабочей станции (i5-2500K / 8GB RAM) данное кастомное ядро показало неоднозначные результаты: бенчмарк в однопоточном режиме показал прирост производительности, в многопоточном (х4) — наоборот (хоть падение производительности и не столь существенно).

Результаты UnixBench для ядра «из коробки» (3.0.0-13-generic-pae)

------------------------------------------------------------------------
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       24954918.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3331.3 MWIPS (10.0 s, 7 samples)
Execl Throughput                               2008.1 lps   (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        805234.2 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          218992.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2151942.7 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1235692.0 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  85006.2 lps   (10.0 s, 7 samples)
Process Creation                               7386.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   4869.6 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   2791.1 lpm   (60.0 s, 2 samples)
System Call Overhead                        3104694.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   24954918.0   2138.4
Double-Precision Whetstone                       55.0       3331.3    605.7
Execl Throughput                                 43.0       2008.1    467.0
File Copy 1024 bufsize 2000 maxblocks          3960.0     805234.2   2033.4
File Copy 256 bufsize 500 maxblocks            1655.0     218992.6   1323.2
File Copy 4096 bufsize 8000 maxblocks          5800.0    2151942.7   3710.2
Pipe Throughput                               12440.0    1235692.0    993.3
Pipe-based Context Switching                   4000.0      85006.2    212.5
Process Creation                                126.0       7386.9    586.3
Shell Scripts (1 concurrent)                     42.4       4869.6   1148.5
Shell Scripts (8 concurrent)                      6.0       2791.1   4651.9
System Call Overhead                          15000.0    3104694.8   2069.8
                                                                   ========
System Benchmarks Index Score                                        1192.4

------------------------------------------------------------------------
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables      102716188.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    14603.9 MWIPS (10.1 s, 7 samples)
Execl Throughput                              17386.1 lps   (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1152095.1 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          305567.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       3405913.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                             5110549.2 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 996596.3 lps   (10.0 s, 7 samples)
Process Creation                              57144.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  25365.6 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   3370.5 lpm   (60.0 s, 2 samples)
System Call Overhead                        9628991.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  102716188.6   8801.7
Double-Precision Whetstone                       55.0      14603.9   2655.3
Execl Throughput                                 43.0      17386.1   4043.3
File Copy 1024 bufsize 2000 maxblocks          3960.0    1152095.1   2909.3
File Copy 256 bufsize 500 maxblocks            1655.0     305567.5   1846.3
File Copy 4096 bufsize 8000 maxblocks          5800.0    3405913.0   5872.3
Pipe Throughput                               12440.0    5110549.2   4108.2
Pipe-based Context Switching                   4000.0     996596.3   2491.5
Process Creation                                126.0      57144.9   4535.3
Shell Scripts (1 concurrent)                     42.4      25365.6   5982.4
Shell Scripts (8 concurrent)                      6.0       3370.5   5617.5
System Call Overhead                          15000.0    9628991.9   6419.3
                                                                   ========
System Benchmarks Index Score                                        4196.7


Результаты UnixBench для кастомного ядра (3.0.7-pf-pf)

------------------------------------------------------------------------
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       24795931.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3319.8 MWIPS (10.0 s, 7 samples)
Execl Throughput                               5026.2 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        839112.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          224747.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2296879.1 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1248804.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 190032.9 lps   (10.0 s, 7 samples)
Process Creation                               8296.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5330.4 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   3167.4 lpm   (60.0 s, 2 samples)
System Call Overhead                        3226740.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   24795931.6   2124.8
Double-Precision Whetstone                       55.0       3319.8    603.6
Execl Throughput                                 43.0       5026.2   1168.9
File Copy 1024 bufsize 2000 maxblocks          3960.0     839112.4   2119.0
File Copy 256 bufsize 500 maxblocks            1655.0     224747.5   1358.0
File Copy 4096 bufsize 8000 maxblocks          5800.0    2296879.1   3960.1
Pipe Throughput                               12440.0    1248804.7   1003.9
Pipe-based Context Switching                   4000.0     190032.9    475.1
Process Creation                                126.0       8296.9    658.5
Shell Scripts (1 concurrent)                     42.4       5330.4   1257.2
Shell Scripts (8 concurrent)                      6.0       3167.4   5279.0
System Call Overhead                          15000.0    3226740.5   2151.2
                                                                   ========
System Benchmarks Index Score                                        1435.5

------------------------------------------------------------------------
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       89324365.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    13382.8 MWIPS (10.1 s, 7 samples)
Execl Throughput                              18250.0 lps   (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1208805.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          295706.4 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       3626687.1 KBps  (30.0 s, 2 samples)
Pipe Throughput                             4618032.1 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 530141.2 lps   (10.0 s, 7 samples)
Process Creation                              60903.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  27508.6 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   3394.0 lpm   (60.0 s, 2 samples)
System Call Overhead                        9095238.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   89324365.7   7654.2
Double-Precision Whetstone                       55.0      13382.8   2433.2
Execl Throughput                                 43.0      18250.0   4244.2
File Copy 1024 bufsize 2000 maxblocks          3960.0    1208805.9   3052.5
File Copy 256 bufsize 500 maxblocks            1655.0     295706.4   1786.7
File Copy 4096 bufsize 8000 maxblocks          5800.0    3626687.1   6252.9
Pipe Throughput                               12440.0    4618032.1   3712.2
Pipe-based Context Switching                   4000.0     530141.2   1325.4
Process Creation                                126.0      60903.9   4833.6
Shell Scripts (1 concurrent)                     42.4      27508.6   6487.9
Shell Scripts (8 concurrent)                      6.0       3394.0   5656.7
System Call Overhead                          15000.0    9095238.0   6063.5
                                                                   ========
System Benchmarks Index Score                                        3946.3

Dual Xeon X5550, 10G RAM

2.6.39 без pf:
— 16 CPUs in system; running 16 parallel copies of tests:
System Benchmarks Index Score 1125.5

16 CPUs in system; running 16 parallel copies of tests:
System Benchmarks Index Score 5562.7

2.6.39-pf4-pf
— 16 CPUs in system; running 16 parallel copies of tests:
System Benchmarks Index Score 1030.6

16 CPUs in system; running 16 parallel copies of tests:
System Benchmarks Index Score 3781.8

Тестовая задача (сборка сервера mysql) идет в 4 раза медленее с патчем чем без него.
опс, index score ~1000 — это для однопоточных тестов.
Sign up to leave a comment.

Articles