Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Флаги компиляции в опенсурс софте, Выделено из Обзора дистрибутивов и софта 
:(
    Опции темы
powerfox
Дата 22.10.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(A5uKa @  22.10.2010,  13:17 Найти цитируемый пост)
а как же весь menuconfig при настройке ядра ? 

Там бОльшая часть позволяет выбрать модули ядра: дрова и фс.
С дефолтными настройками (у дистрибутовов) ядро такое получается:
Код

fox@Crypta2:~> du -sh /boot/vmlinux-2.6.34-12-desktop.gz 
5.2M    /boot/vmlinux-2.6.34-12-desktop.gz

Без сжатия будет мегабайт 7. Если поиграешься с модулями, то получишь ядро меньше на мегабайт, что с того? Да, ещё можно сэкономить место на диске за счёт модулей:
Код

fox@Crypta2:~> du -sh /lib/modules/2.6.34-12-desktop/
97M     /lib/modules/2.6.34-12-desktop/

Мне не критично +/- 50 мб, думаю, что и бОльшинству пользователей тоже.

Конечно, есть довольно интересные настройки. Но для обычного использования они не нужны (в общем-то их ещё больше в /proc/sys/xxx), а дефолтные вполне позволяют комфортно работать.

Теперь о прикладном софте. Повышение производительности достигается в общем случае за счёт двух возможностей: оптимизации кода и использования использования аппаратных инструкций (SSEx, например). Наборы инструкций включать при компиляции безопасно, но часто бесполезно, так как они не используются в коде. Флаги оптимизации, как уже сказали выше, довольно небезопасны и могут приводить к серьёзным глюкам. Неплохой пример — использование volatile в Си/С++.
Многие опенсурсные проекты просят не использовать флаги оптимизации при сборке.

У меня, например, всегда пересобран только mplayer и некоторые его зависимости. Так как по умолчанию там ограниченный набор мультимедийных инструкций (SSE1-2 или SSE1-3), а вот код может использовать очень много аппаратного добра.
Ещё последнее время приходиться на работе собирать ядро линукса (нужны определённые фитчи и дополнительные патчи).


--------------------
user posted image
PM WWW   Вверх
Любитель
Дата 23.10.2010, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(powerfox @  22.10.2010,  23:41 Найти цитируемый пост)
У меня, например, всегда пересобран только mplayer и некоторые его зависимости. Так как по умолчанию там ограниченный набор мультимедийных инструкций (SSE1-2 или SSE1-3), а вот код может использовать очень много аппаратного добра.
Ещё последнее время приходиться на работе собирать ядро линукса (нужны определённые фитчи и дополнительные патчи). 

Сорри за оффтопик, но мне вот интересно, почему в линуксовом мире не особо принято:
1. Вынести все процессорозависимые функции в отдельную либу.
2. При старте приложения расставить указатели в одной таблице - чтобы использовать то, что доступно на данном процессоре (для остального - ручные реализации)
3. При линковке это всё инлайнить, конечно (скорее всего)

Да, очевидно, размер будет больше. Да, очевидно, это незначительно проигрывает непосредственной сборке под нужный набор инструкций. Но зато имеем универсальный бинарник, который работает (если он может активно юзать какие-то векторные и пр. инструкции) гораздо быстрее (на среднестатистическом компе), чем "обычный".


--------------------
PM MAIL ICQ Skype   Вверх
bilbobagginz
Дата 23.10.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 14
Всего: 317



Любитель, это жесткий офф-топик. Это карается лоботомией.
Попросите одмина стереть ваш и мой комменты, а свой вопрос вынесите в отдельный топик. там и покуролесим.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
powerfox
Дата 23.10.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(Любитель @  23.10.2010,  10:15 Найти цитируемый пост)
1. Вынести все процессорозависимые функции в отдельную либу.

Обычно так и делают. А при компиляции в зависимости от флагов решают, что компановать.

Цитата(Любитель @  23.10.2010,  10:15 Найти цитируемый пост)
Но зато имеем универсальный бинарник

А зачем?

Цитата(Любитель @  23.10.2010,  10:15 Найти цитируемый пост)
который работает (если он может активно юзать какие-то векторные и пр. инструкции) гораздо быстрее (на среднестатистическом компе), чем "обычный". 

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


--------------------
user posted image
PM WWW   Вверх
Любитель
Дата 23.10.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(powerfox @  23.10.2010,  14:43 Найти цитируемый пост)
Если нормально собрать обычный, то он будет так же шустро работать.

Что значит нормально собрать? Если самому собрать с нужными флагами - это всё очевидно и неинтересно. Речь об использовании готовых бинарников.

Цитата(powerfox @  23.10.2010,  14:43 Найти цитируемый пост)
А при компиляции в зависимости от флагов решают, что компановать.

Ну и в итоге:
1. Либо собирай сам
2. Либо распространять кучу вариантов бинарей

Цитата(powerfox @  23.10.2010,  14:43 Найти цитируемый пост)
Только не будет всякого хлама в коде, который в рантайме определяет библиотеки и подгружает их. 

Подгрузку ооочень редко делают (это уже вручную как раз несколько вариантов под разные процы). На практике статическая линковка и лишние 100-200 килобайт (условно - если честно, точно не знаю сколько) и маппинг нужных функций.


--------------------
PM MAIL ICQ Skype   Вверх
A5uKa
  Дата 25.10.2010, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: нет
Всего: 16



Цитата

Там бОльшая часть позволяет выбрать модули ядра: дрова и фс.
С дефолтными настройками (у дистрибутовов) ядро такое получается:
Код

fox@Crypta2:~> du -sh /boot/vmlinux-2.6.34-12-desktop.gz 
5.2M    /boot/vmlinux-2.6.34-12-desktop.gz


ну уже давно 2.6.36 , да и размер мне так же не важен.

Цитата

Конечно, есть довольно интересные настройки. Но для обычного использования они не нужны 

Так то да, но приятнее решать самостоятельно, что не нужно, вот об этом и речь )

Цитата

Флаги оптимизации, как уже сказали выше, довольно небезопасны и могут приводить к серьёзным глюкам.

CFLAGS="-O3 -march=native -mtune=native -pipe" # -msse4.1 -fipa-cp -ftree-loop-linear"
~amd64 KDE desctop , как часы. На ноуте использую О3, на десктопе О2, так как при сборке Кед из транка требуется некая осторожность.
Возможно производительности это сильно не прибавляет, но как знать... 

Могу подытожить - я выбираю этот дистр, так как мне всё это интересно, а в этой системе всё достаточно прозрачно и элегантно, чем больше у меня опыта тут, тем больше моя система будет подходить именно мне, а не дяде Ване. У меня уже есть даже заготовка своей так сказать Stage4 с почти собранным KDE-Live, вот тут действительно лотерея, но на случай слётов есть OpenBox. 
PM   Вверх
Фантом
Дата 25.10.2010, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 1
Всего: 49



Цитата(Любитель @  23.10.2010,  16:07 Найти цитируемый пост)
Ну и в итоге:
1. Либо собирай сам
2. Либо распространять кучу вариантов бинарей

Ну так 99% софта под Linux и распространяется либо в виде исходников, либо в виде уже собранных пакетов в составе некоторого конкретного дистрибутива. Причины, пожалуй, исторические - когда-то весь софт поставлялся вместе с компьютером, и другие варианты были попросту нерациональны.
PM   Вверх
Любитель
Дата 26.10.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



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

Цитата(Фантом @  25.10.2010,  10:00 Найти цитируемый пост)
либо в виде уже собранных пакетов в составе некоторого конкретного дистрибутива.

Объективно - source based дистрами мало кто пользуется (во время своего юзания линукса - у самого прижилась только джента, но это ничего не значит). А дистрибутива - обычно один по x64, другой под i586 (в лучшем случае - 686). Разве встречается больше вариаций?


--------------------
PM MAIL ICQ Skype   Вверх
Фантом
Дата 26.10.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 1
Всего: 49



Цитата(Любитель @  26.10.2010,  14:49 Найти цитируемый пост)
А дистрибутива - обычно один по x64, другой под i586 (в лучшем случае - 686). Разве встречается больше вариаций? 

Для одной версии одного дистрибутива - нет (бывает, конечно, но редко), но уже для разных версий варианты могут быть разными (например, из-за разных версий используемых библиотек). Для разных дистрибутивов отличия еще заметнее.
PM   Вверх
nickless
Дата 27.10.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 7
Всего: 181



Цитата(powerfox @  22.10.2010,  22:41 Найти цитируемый пост)
Многие опенсурсные проекты просят не использовать флаги оптимизации при сборке

Сорри конечно, но аффтарам, которые пишут софт, чудом работающий исключительно с определённым набором флагов лучше сразу отрывать руки.

Кстати, насчет кода оптимированного под конкретное железо - многие мультимедиа либы так и делают (тот же mplayer например), а в не-мультимедиа это никому и не нужно.



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
gcc
Дата 27.10.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



в каких-то версиях gcc в CFLAGS присутствует скрытый дефект: -ffast-math, который оборачиваектся для нас -funsafe-math-optimizations -fno-math-errno http://www.freebsd.org/cgi/query-pr.cgi?pr=137869
PM WWW ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 28.10.2010, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(nickless @  27.10.2010,  16:44 Найти цитируемый пост)
стати, насчет кода оптимированного под конкретное железо - многие мультимедиа либы так и делают (тот же mplayer например), а в не-мультимедиа это никому и не нужно.

AFAIR в mplayer-е для этого куча асм-овых либ. А я говорю, чтобы это всё либо компилятор генерил, либо была статическая либа в рантайме компилера.


--------------------
PM MAIL ICQ Skype   Вверх
powerfox
Дата 30.10.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(Любитель @  28.10.2010,  13:57 Найти цитируемый пост)
А я говорю, чтобы это всё либо компилятор генерил, либо была статическая либа в рантайме компилера. 

А как же не x86 архитектуры? Всё равно во время компиляции приходится решать, что компановать. Тот же mplayer имеет оптимизации для ряда платформ:
Цитата

Most of time-critical parts are optimized for Intel/AMD (MMX/MMX2/SSE/SSE2/3DNow!/3DNowEx), PowerPC G4 (Altivec), SPARC (VIS), ARM  PDAs and the Sony Playstation 2.


Цитата(nickless @  27.10.2010,  17:44 Найти цитируемый пост)
Сорри конечно, но аффтарам, которые пишут софт, чудом работающий исключительно с определённым набором флагов лучше сразу отрывать руки.

На мой взгляд, зачастую это проблема компилятора, а не человека.
Рекомендации не использовать -O3 были в документации по KDE3, если мне не изменяет память. Вот кутяшный пример уже наших дней: http://www.qtforum.org/article/27474/qt-cr...ease-build.html
Цитата

QMAKE_CFLAGS_RELEASE    = -O2 -march=nocona -mtune=nocona
I have compiled with core2, but that was unstable. In the end I have used nocona option.




--------------------
user posted image
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Клуб юнуксоидов"
powerfox
ZeeLax
nickless

Что такое клуб юнуксоидов?

Это место более свободного общения специалистов и любителей *NIX систем.


Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем.


Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:


  • Оскорбления запрещены.
  • Holy wars разрешены, но в небольших размерах. Если вы создаёте что-то уровня Windows vs. Linux, то постите это в Религиозных войнах, пожалуйста.
  • Если вы хотите выставить здесь какое-либо своё творение - милости просим.
  • За интересные новости, интересные статьи, высказывания и юмор (в тему) + в репу.

Короче, по репе получите по полной программе ;-) Happy hacking!



Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Клуб юнуксоидов | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.