Оптимизация linux

Нашел очень хороший сайт, посвященный оптимизации linux. Все описано подробно, разложено по темам. Будьте внимательны - многие оптимизации достаточно рискованы. Используйте с умом.

С сайта intel можно качать свежие обновления микрокодов для процессоров intel. Патч по инструкции intel распаковывается в папку /etc/firmware/. В ядре linux также должна быть включена поддержка обновления микрокода процессора.

С сайта intel также можно посмотреть все характеристики любого процессора intel. Желательно смотреть спецификации в pdf файлах об интересующем процессоре - там данные обычно более точные. По крайней мере для процессора atom n270 в нем была правильно указана поддержка ssse3, а не воображаемая ssse4).

Спасибо за идею, благодаря вам сделал

$ eix -cS 'micro.?code'
[N] net-wireless/ipw3945-ucode (1.14.2): Microcode for the Intel PRO/Wireless 3945ABG miniPCI express adapter
[N] sys-apps/microcode-ctl (1.17-r2): Intel processor microcode update utility
[N] sys-apps/microcode-data (20101123): Intel IA32 microcode update data
[N] sys-kernel/amd-ucode (~2011.01.11): AMD Family 10h, 11h and 14h microcode patch data
[N] x11-drivers/radeon-ucode (20110302): IRQ microcode for r6xx/r7xx/Evergreen/Northern Islands Radeon GPUs and APUs
[N] x11-misc/afbinit (--): loads the microcode for Elite3D framebuffers to use X

$ eix -v 'microcode|amd-ucode'
* sys-apps/microcode-ctl
     Available versions:  1.17-r2{tbz2}
     Installed versions:  Version: 1.17-r2{tbz2}
                          Date:    12:37:08 22.06.2011
     Best versions/slot:  1.17-r2{tbz2}
     Homepage:            http://www.urbanmyth.org/microcode
     Description:         Intel processor microcode update utility
     License:             GPL-2

* sys-apps/microcode-data
     Available versions:  20100209 20101123{tbz2} ~20110428
     Installed versions:  Version: 20101123{tbz2}
                          Date:    12:36:34 22.06.2011
     Best versions/slot:  20101123{tbz2}
     Homepage:            http://urbanmyth.org/microcode/
     Description:         Intel IA32 microcode update data
     License:             intel-ucode

* sys-kernel/amd-ucode
     Available versions:  ~2011.01.11!m
     Homepage:            http://www.amd64.org/support/microcode.html
     Description:         AMD Family 10h, 11h and 14h microcode patch data
     License:             amd-ucode

Found 3 matches.

Как видно, кое-что уже поставил, будем посмотреть :wink:

Замечательно. Можно подробнее. Какая опция в ядре нужна? И я так понял установка пакета sys-kernel/amd-ucode пропатчит сама ядро, просто нужно пере собрать?

ХЗ - если честно,
sys-apps/microcode-data - Установил /lib/firmware/microcode.dat
sys-apps/microcode-ctl - Службу загрузчик предидущей прошивки

Подозреваю, что sys-kernel/amd-ucode - поступит по аналогии

Патчить ядро не думаю что придется. В стандартном ядре кальки - поддержка микрокодов включена модулем.

Прирост производительности Я не заметил, да и не думаю, что он будет у вас существенным. просто сам факт - греет душу :wink:

Появилось здесь /lib/firmware/amd-ucode/microcode_amd.bin
У меня самодельное ядро. Подскажи пункт меню, проверить.

З.Ы. Душу греет, точно!

Только сейчас заметил! :((

AMD provides microcode patch support for processors belonging to AMD processor family 10h, 11h, and 14h

У меня:

cat /proc/cpuinfo                                                                                                                                                                               15:37
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 16

CONFIG_MICROCODE
Думаю найдешь

Пробую экспериментировать с параметрами CFLAGS в make.conf

В качестве тестовой программы пересобираю emerge nbench. Затем запускаю nbench и сравниваю.

Выявил на текущий момент, что для процессора atom N270 CFLAGS="-O3 -fomit-frame-pointer -march=native -pipe --param l1-cache-line-size=64 --param l1-cache-size=32 --param l2-cache-size=512 -mmmx -msse -msse2 -msse3 -mssse3" эти установки существенно подняли производительность, относительно обычных параметров CFLAGS="-O2 -march=native -pipe". По непонятным причинам не компилируется с прямым указанием параметра процессора -march=atom. Параметр -fomit-frame-pointer лучше не включать. Не сильно влияет на производительность, но сильно затруднит отладку в будущем.

P.S.
Опции, включаемые gcc для процессора можно посмотреть так:

При установке -march=native без включения других параметров

 # gcc -march=native -Q --help=target

Для конкретного процессора без включения других параметров (в примере atom)

 # gcc -march=atom -Q --help=target

Меняя -march КРАЙНЕ ЖЕЛАТЕЛЬНО пересобрать ВСЕ. Лучше даже два раза.

Так что имейте это ввиду.

Кстати, почитайте про утилиту cl-assemble. Если есть комп помощнее - можно на нем собрать оптимизированную под себя систему

Само собой -O3 будет веселее :wink:

Жалко mplayer c -O3 не собирается. Играл с флагами, гонял на app-benchmarks/acovea. Вообщем, -O3 вполне достаточно, остальное множество ключей особого прироста производительности не приносит, а то и вообще замедляет. Пересобрать мир будет затруднительно. Занимался подобными экзекуциями для атома и core2. Главное сильно не увлекаться, толку жертвовать стабильностью ради непонятных попугаев :slight_smile:

До этого собирал всю систему на KDE с флагами CFLAGS="-O3 -march=native pipe" собиралась точно. В том числе mplayer. Система включала все последние изменения на то время. Это примерно месяц назад было. Случайно оставил параметр -O3. Собрался весь мир. Ошибок не было.
P.S.
Завел ядро zen-2.6.39.1

Собралось, модули тоже подключились. Попробую покататься на нем)
Prelink завершается аварийно. Буду смягчать параметры)))

На всякий случай, на GCC-4.6.0 не советую переходить, много чего не собирается. Хотя и пере собрал почти всю
system и world.А вот -O3 думаю вполне работоспособен, на второй машине GCC-4.5.2 с -O3. Все собирается все работает.

Нашел предположительно виновника, из-за которого ядро zen нестабильно работало.
Пункт Automatically use SCHED_ISO policy for X (NEW). Возможно он приводит к зависаниям в zen kernel.
Ядро собралось и пока нормально работает без этого включенного пункта.

Я уже было обрадовался, т.к. часто система зависает. Но этот пункт у меня всегда отключен.

У меня издавна не заладилось с ядром zen.
И странности есть… Не подхватились модули из /etc/conf.d/modules, не монтируются автоматом внешние диски и флешки. В ядре обнаружил отключенными с какого-то перепугу и NTFS и CD-шные файловые системы, хотя на hdd ntfs-шный раздел открывает. В общем что-то неладно в королевстве, видимо проспал или нововведения какие или сам где-то напортачил. Самое интересное, что в ядре, новой, мною собранной Кальки та же ситуация, но все монтируется и работает… Чудеса. Буду разбираться в общем почему не схватывается мой конфигурационный файл. Скажу одно Калька спокойно работала с параметрами -O3 -march=native -pipe без малейших намеков на ошибки. Думаю пересоберу ее с этими параметрами и сопоставлю.

Да и еще попробовал связку bfs+bfq в ядре zen. Впечатление не ахти. Для сравнения эмулировал нагрузку на систему запускал три окна glxgears на одном рабочем столе, чтобы гарантированно получить нагруженную систему. И на другом открывал три окна с одним и тем же фильмом. Так вот - не может система нормально проигрывать три этих окна с видео. Да они окликаются на предоставление им ресурсов процессора планировщиком, но как то по чУдному это делают. Это как быстрая перемотрка - назад-вперед. Во всех трех окнах - просмотр нереален, хотя местами сюжеты наверно выглядели бы нереально смешно)))). Включил cfq - при той же симуляции нагрузки видео крутит сносно во всех трех окнах. То же на ядре Кальке работало вовсе уж без запинки. Не знаю что там ребята патчат или нет, но по мне оно лучше сработано.

Интересная информация, спасибо)

Да ты за тестами не постоишь. +1 :slight_smile: На счет Zen использую давно с одним и тем конфигом, всегда bfq compacash
. Проблем с ядром не возникало ни когда, виснет скорее всего или видео дрова или xorg, а может и то и другое.

На жестокое тестирование все одно времени нет, приходится изголяться, чтобы сравнить настройки и понять надо оно мне или нет по возможности за короткое время)). Юра какие основные настройки по zen используете (из специфичных для него)?
P.S.
Сорри, уже увидел. Просмотрел видимо.

Мой конфиг.

.config (75.4 KB)

Хм… Нашел странную для меня вещь в наших конфигах…, а именно:
так строчка называется у тебя # CONFIG_GENERIC_CPU is not set, а у меня ей соответствует # CONFIG_X86_GENERIC is not set. Может патчи разные?
У меня обычно CONFIG_HZ=1000. У тебя 1500. Исходя из каких побуждений так решил? В принципе, наверно, надо было спросить на каком звере работаешь)))
(Я б 100 оставил у себя, но есть некоторый дискомфорт, если кино смотреть и в фоне что-нибудь крутится)
P.S.
эти два параметра наверно отличаются у нас потому, что у тебя 64-битная архитектура, а у меня 32-битная.

.config (79.1 KB)