Автоматический профайлинг и оптимизация ядра и всего остального - есть ли такое счастье?

В процессе миграции с 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 написал(а): с платными

evadim написал(а):
с платными компиляторами... странная идея.

Это, знаете ли, тяжелый отпечаток работы с windows - так и хочется чего-нибудь украсть. Все приличные серверные приложения ух как дорого под винду стоят, ну не Subsystem for UNIX-based Applications, же использовать =)))))

А вообще, если серьезно, на эту мысль меня навел такой сайт: http://www.pgroup.com/index.htm - вот был бы рад если кто-нибудь использовал и смог рассказать что-нибудь о данном продукте (и конечно же им поделиться =)))))

Ну и раз уж вспомнил - А рельно ли gentoo собрать внутри Subsystem for UNIX-based Applications - или это фантастика? (это, конечно же изврат редкостный, но чисто теоретически возможно ли это?)

Zeracles написал(а): се

Zeracles написал(а):
се приличные серверные приложения ух как дорого под винду стоят

Понятно дело, чего ж с лохов не содрать денег за мышедвигание-то.

Я тут удивился, увидев, что элементарный svn-сервер под винду продают (-:Е

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Из компиляторов помню только

Из компиляторов помню только попытки собрать с icc и то неочень удачные. Хотя никто и не мешает попробовать.

Надо, кстати говоря,

Надо, кстати говоря, попробовать прикрутить интеловский компилятор к gentoo - по идее, если это получится, в нем как раз все эти функции могут быть (типа специального флага "--make_an_awesome_speed_and_f*_AMD" =))))

Я так понял человек ищет

Я так понял человек ищет кнопку "сделать 3,14здато" =)
Вообще освойте сначала gcc хотябы на уровне новичка, и сравние абсолютные значения производительности одних и тех же задач на обоих платформах, думаю такие пустые вопросы сами отпадут.

haku написал(а): Я так понял

haku написал(а):
Я так понял человек ищет кнопку "сделать 3,14здато" =)
Вообще освойте сначала gcc хотябы на уровне новичка, и сравние абсолютные значения производительности одних и тех же задач на обоих платформах, думаю такие пустые вопросы сами отпадут.

В точку! Не завалялось ли где-нибудь такой чудесной кнопки??? (в 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

А это для SEO, типа =))))

А это для SEO, типа =))))

Zeracles написал(а): haku

Zeracles написал(а):
haku написал(а):
Я так понял человек ищет кнопку "сделать 3,14здато" =)

... Не завалялось ли где-нибудь такой чудесной кнопки??? (в Visual Studio она есть =))))

где есть? я помниться эту кнопку пол часа тыкал на большом проекте, что бы оно нормально всё собрало.

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

Zeracles написал(а):
Пересобрал Apache, MySQL, PHP, xcache с помощью icc - получил 10% прироста... Все равно мало... Как бы ядро пересобрать? =)))))

А расскажи всем, как мерял?

А +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 в моем коде:

typedef long long __int64;
typedef unsigned long long __uint64;

Только не надо кидаться тапками, что это неправильно и прочая. Я с этими тайпдефами проработал уже лет 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):

char* str="Белиберда";

char* str1[]=
{
 "Фигня1",
 "Фигня2"
};

Вот на них он ругается (warning): "Invalid multibyte character sequence".
Но собирает и потом все работает.

А на такие:

char* str="something";
char* str1[]=
{
 "thing1",
 "thing2"
};

не ругается.

Собрал одну свою программу.

Собрал одну свою программу. Вещь, можно сказать, универсальная: интенсивно использует файловую систему, процессор и память. Собранная icc, выполняется 71сек., gcc - 80cек. Итого, прирост получился около 11%. Неплохо...
Процессор: Intel Pentium Dual-Core E5200, 2Gb память, x86_64.
Интересно, что получится, если всю систему собрать... Надо будет попробовать, у меня как раз есть свободная машина, на которой если что не жалко грохнуть систему...

alexpro

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 ?
намек:

RDEPEND="~virtual/libstdc++-3.3
    amd64? ( app-emulation/emul-linux-x86-compat )

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.

Сумнительно

alexpro написал(а):
Интересно, что получится, если всю систему собрать

Взято отсюда:

icc and gcc have different levels of tolerance in what code is considered valid. Some packages have been written using gcc-specific extensions cannot be compiled with icc. Compilation of these packages using icc will result in a compile error. System critical components should not be compiled with icc. If glibc is miscompiled (e.g., in a way different from how gcc would compile it) it could render the system useless. Critical system packages that should not be compiled with icc are:

app-shells/bash
sys-apps/sed
sys-devel/binutils
sys-devel/gcc
sys-libs/glibc
sys-libs/ncurses
sys-libs/libstdc++-v3
sys-libs/zlib
sys-process/procps

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Я поставил 11.01.056, а он,

Я поставил 11.01.056, а он, говорят, совместим... Но я еще не проверял.

alexpro написал(а): Я

alexpro написал(а):
Я поставил 11.01.056, а он, говорят, совместим... Но я еще не проверял

Отпишитесь тогда по результатам, pls...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

alexpro написал(а):Проверил.

alexpro написал(а):
Проверил. И правда, предоставляет. Собрал кое-что из своего, сейчас смотрю, что получится. Правда, есть у icc одно неприятное свойство (еще не курил документацию, пока не могу сказать, можно ли с ним бороться). Есть у меня старый код, в котором имеются объявления типа таких (в koi8-r и win1251):

char* str="Белиберда";

char* str1[]=
{
 "Фигня1",
 "Фигня2"
};

Вот на них он ругается (warning): "Invalid multibyte character sequence".
Но собирает и потом все работает.

А на такие:

char* str="something";
char* str1[]=
{
 "thing1",
 "thing2"
};

не ругается.

ругается, потому что должно быть в utf8, на латиницу не ругается, потому что совпадают первые 127 символов ascii с utf8

Спасибо, с этим я тоже

Спасибо, с этим я тоже разобрался. Там ключик есть: "-no-multibyte-strings" или как-то так...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".