Автоматический профайлинг и оптимизация ядра и всего остального - есть ли такое счастье?
В процессе миграции с windows на gentoo (в котором я полный newbie) возник интересный вопрос. Те кто использовал Visual Studio 2008 возможно заметили там опцию Whole Program Optimization, которая позволяет оптимизировать программу во-первых с использованием Link Time Code Generation, чего я так понял linux'овый линкер не умеет, во-вторых есть profile guided optimization - это когда студия запускает программу которая работает полчасика в привычной среде (т.е. если мы оптимизируем apache - необходимо обеспечить условия работы приближенные к реальным), после этого студия анализирует все данные полученные во время работы и автоматически оптимизирует код исходя из полученных данных.
В gentoo есть такая программа oprofile - как я понял, она делает примерно тоже самое, но данные выводит только для просмотра и, собственно говоря, оптимизацию не осуществляет...
Если кто-нибудь знает чем и как можно автоматичечески использовав данные профайлинга ускорить работу приложения, подскажите пожалуйста. Также буду признателен если расскажите нету ли альтернативных линкеров, компиляторов (желательно платных и чтобы с piratebay можно было скачать =))))) и т.д. с поддержкой более "изощеренной" оптимизации, нежели O2-O9???
- Для комментирования войдите или зарегистрируйтесь
вот тема по этому
вот тема по этому поводу.
http://www.gentoo.ru/node/16289
с платными компиляторами... странная идея.
evadim написал(а): с платными
Это, знаете ли, тяжелый отпечаток работы с windows - так и хочется чего-нибудь украсть. Все приличные серверные приложения ух как дорого под винду стоят, ну не Subsystem for UNIX-based Applications, же использовать =)))))
А вообще, если серьезно, на эту мысль меня навел такой сайт: http://www.pgroup.com/index.htm - вот был бы рад если кто-нибудь использовал и смог рассказать что-нибудь о данном продукте (и конечно же им поделиться =)))))
Ну и раз уж вспомнил - А рельно ли gentoo собрать внутри Subsystem for UNIX-based Applications - или это фантастика? (это, конечно же изврат редкостный, но чисто теоретически возможно ли это?)
Zeracles написал(а): се
Понятно дело, чего ж с лохов не содрать денег за мышедвигание-то.
Я тут удивился, увидев, что элементарный svn-сервер под винду продают (-:Е
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Из компиляторов помню только
Из компиляторов помню только попытки собрать с icc и то неочень удачные. Хотя никто и не мешает попробовать.
Надо, кстати говоря,
Надо, кстати говоря, попробовать прикрутить интеловский компилятор к gentoo - по идее, если это получится, в нем как раз все эти функции могут быть (типа специального флага "--make_an_awesome_speed_and_f*_AMD" =))))
Я так понял человек ищет
Я так понял человек ищет кнопку "сделать 3,14здато" =)
Вообще освойте сначала gcc хотябы на уровне новичка, и сравние абсолютные значения производительности одних и тех же задач на обоих платформах, думаю такие пустые вопросы сами отпадут.
haku написал(а): Я так понял
В точку! Не завалялось ли где-нибудь такой чудесной кнопки??? (в Visual Studio она есть =)))) А по поводу освоить - это я всегда рад - дайте ссылочку на приличный manual для новичков (желательно с примерами) (и желательно без экзотики вроде "А вот с этим флагом gcc поможет Вас создать программу для калькулятора Электроника Б-57, единственный экземпляр которого занимает комнаты 6 и 7 в Московском музее ЭВМ" =))))
А вообще почему oprofile с gcc не интегрирован??? - Это как раз и была бы та самая кнопочка...
P.S. http://software.intel.com/sites/products/collateral/hpc/compilers/compiler_suite_linux_brief.pdf - Вот тут по-любому есть эта волшебная кнопочка... Кто-нибудь сумел прикрутить это чудо к gentoo?
http://www.gentoo.ru/node/179
http://www.gentoo.ru/node/17935#comment-129294
А это для SEO, типа =))))
А это для SEO, типа =))))
Zeracles написал(а): haku
где есть? я помниться эту кнопку пол часа тыкал на большом проекте, что бы оно нормально всё собрало.
http://www.gentoo-wiki.info/H
http://www.gentoo-wiki.info/HOWTO_ICC_and_Portage - вот отличное руководство, то что нужно...
11 версия icc почти полностью
11 версия icc почти полностью совместима с gcc (На сайте intel справка...), вот интересно, кто-нибудь пробовал с помощью icc собирать world и что из этого нынче (не)получается?
Пересобрал Apache, MySQL,
Пересобрал Apache, MySQL, PHP, xcache с помощью icc - получил 10% прироста... Все равно мало... Как бы ядро пересобрать? =)))))
А не пересоберёте.
А не пересоберёте.
чето думается мне, что эти же
чето думается мне, что эти же 10% можно получитьи в гцц(а может и больше) если флажки покрутить под свой проц, там ссе разные, по дефолту не включены.
Zeracles
А расскажи всем, как мерял?
А +10 :)
А +10 :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Не полностью совместима. Мои
Не полностью совместима. Мои исходники icc собирать отказался напрочь. Ошибка: "invalid combination of type specifiers".
Погуглил на эту тему, нашел много всяких вариантов этой же проблемы. Везде ответы от гуру были примерно одинаковы: вы неправильно создаете код. Он не соответствует [стандарту/здравому смыслу/правилам etc.]. Однако, gcc без проблем (и даже без warning-ов) собирает код, тем более, что я всегда на этапе разработки включаю "-Wall -Wextra -Werror".
Что не понравилось icc в моем коде:
Только не надо кидаться тапками, что это неправильно и прочая. Я с этими тайпдефами проработал уже лет 12, и ни малейших проблем не испытывал начиная с gcc-2.95.3, (кажется, или какой там был еще раньше), по последний стабильный gcc.
Я сделал вывод, что до полной совместимости с gcc у icc еще очень и очень далеко, и что для меня этот компилер бесполезен. Я не стал менять код, ибо почему-то уверен, что эта придирка не последняя, и ему еще что-нибудь не понравится. Прирост производительности не настолько значителен, чтобы я из-за этого изменял годами проверенный код.
Боюсь предположить, что icc
Боюсь предположить, что icc уже сам предоставляет такие типы.
Здравая мысль. Об этом я не
Здравая мысль. Об этом я не подумал... Наверно, после интенсивного отмечания Нового Года несколько подустал. Правда, я уже снес icc, но надо будет поставить его еще раз и попробовать. Если дело только в том, что такие типы уже есть... То, вполне возможно, я преждевременно погорячился.
Нет icc не предоставляет
Нет icc не предоставляет типов uint и тд
___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера
uint нет, а __int64 - да. Это
uint нет, а __int64 - да. Это точно, я уже проверил.
Проверил. И правда,
Проверил. И правда, предоставляет. Собрал кое-что из своего, сейчас смотрю, что получится. Правда, есть у icc одно неприятное свойство (еще не курил документацию, пока не могу сказать, можно ли с ним бороться). Есть у меня старый код, в котором имеются объявления типа таких (в koi8-r и win1251):
Вот на них он ругается (warning): "Invalid multibyte character sequence".
Но собирает и потом все работает.
А на такие:
не ругается.
Собрал одну свою программу.
Собрал одну свою программу. Вещь, можно сказать, универсальная: интенсивно использует файловую систему, процессор и память. Собранная icc, выполняется 71сек., gcc - 80cек. Итого, прирост получился около 11%. Неплохо...
Процессор: Intel Pentium Dual-Core E5200, 2Gb память, x86_64.
Интересно, что получится, если всю систему собрать... Надо будет попробовать, у меня как раз есть свободная машина, на которой если что не жалко грохнуть систему...
alexpro
Ага. И на AMD её запустить с замером производительности!
Да вроде бы там оптимизации
Да вроде бы там оптимизации общие. Но вообще, у меня программы, собранные icc, иногда брали и падали в один прекрасный момент. В общем мне показалось, что он на числодробилки заточен.
Не понял я, причем тут AMD.
Не понял я, причем тут AMD. Нету у меня AMD, и никогда не было.
чтобы не терять время,
чтобы не терять время, попробуй для начала собрать eix
То ли у меня карма плохая, то ли руки не от туда растут, но я получил обломы типа:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_deque.h(1603): error: type name is not allowed
if (!__has_trivial_destructor(value_type))
Пробовал собирать разные пакеты, частично удалось, но в основной массе - нет.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
O, ICC уже научился работать
O, ICC уже научился работать с g++4 ?
намек:
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
eix собрался. Даже без
eix собрался. Даже без вопросов, все как надо. Флаги: -mssse3 -O2. Работает так же, на мой взгляд. По крайней мере, на глаз мне незаметно каких-либо изменений.
Что заметил - сборка даже на глаз у icc намного медленнее, чем у gcc.
Сумнительно
Взято отсюда:
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Я поставил 11.01.056, а он,
Я поставил 11.01.056, а он, говорят, совместим... Но я еще не проверял.
alexpro написал(а): Я
Отпишитесь тогда по результатам, pls...
Мы тоже не всего читали Шнитке!.. © В. Вишневский
alexpro написал(а):Проверил.
ругается, потому что должно быть в utf8, на латиницу не ругается, потому что совпадают первые 127 символов ascii с utf8
Спасибо, с этим я тоже
Спасибо, с этим я тоже разобрался. Там ключик есть: "-no-multibyte-strings" или как-то так...