Пересборка glibc в slackware 10
Пересборка glibc в slackware 10
Как я понимаю, в slackware 10 он собран с -O2 -march=i486 -mcpu=i686?
А даст ли что-то пересборка с -march=pentium4 ? У кого есть опыт? И самое главное - как количественно замерять эффект, чтоб не было "нутром чую, что быстрее, но оценить не могу". Запускать time с чем-то? А с чем?
А даст ли что-то пересборка с -march=pentium4 ? У кого есть опыт? И самое главное - как количественно замерять эффект, чтоб не было "нутром чую, что быстрее, но оценить не могу". Запускать time с чем-то? А с чем?
- #!/bin/bash
- Неотъемлемая часть форума
- Сообщения: 331
- Зарегистрирован: 11 дек 2002, 00:35
- Откуда: /bsu/rfe
- Контактная информация:
Llama, так это же и есть libc:)
yozhhh, компилируй. Лишним не будет. Я в своем Gentoo скомпилировал glibc с ЖУТКОЙ оптимизацией (ebuild не дает - пришлось править). Все работает стабильно, ни одной проблемы. Хотя не факт, что везде будет то же самое.
Про замеры. Для замерки на скорую руку я беру базу VELCOM и делаю по ней поиск:
Первый раз - со считыванием с веника. Последующие - из памяти.
Разница между дистрибутивами:
SuSE 9.1 (i586) - 0,50 сек;
Gentoo (athlon-tbird) - 0,30 сек
Gentoo (athlon-tbird + жестокая оптимизация) - 0,29 сек
Вывод: жестоко оптимизировать не имеет смысла, а вот скомпилировать под процессор - необходимо!8)
yozhhh, компилируй. Лишним не будет. Я в своем Gentoo скомпилировал glibc с ЖУТКОЙ оптимизацией (ebuild не дает - пришлось править). Все работает стабильно, ни одной проблемы. Хотя не факт, что везде будет то же самое.
Про замеры. Для замерки на скорую руку я беру базу VELCOM и делаю по ней поиск:
Код: Выделить всё
time cat basenew.txt | grep 6xxxxxx | iconv -f WINDOWS-1251 -t KOI8-R (или UTF-8 )
Разница между дистрибутивами:
SuSE 9.1 (i586) - 0,50 сек;
Gentoo (athlon-tbird) - 0,30 сек
Gentoo (athlon-tbird + жестокая оптимизация) - 0,29 сек
Вывод: жестоко оптимизировать не имеет смысла, а вот скомпилировать под процессор - необходимо!8)
Последний раз редактировалось #!/bin/bash 05 дек 2004, 12:06, всего редактировалось 1 раз.
ИМХО = Имею Мнение, Хрен Оспоришь
Телефон - 8-029-7796373. Ночью выключен.
Телефон - 8-029-7796373. Ночью выключен.
- #!/bin/bash
- Неотъемлемая часть форума
- Сообщения: 331
- Зарегистрирован: 11 дек 2002, 00:35
- Откуда: /bsu/rfe
- Контактная информация:
Michael,
Конечно, бывает и жестче, но glibc и этого хватит:)
Код: Выделить всё
-march=athlon-tbird -O3 -pipe -fforce-addr -fomit-frame-pointer -funroll-loops -falign-functions=4 -maccumulate-outgoing-args
ИМХО = Имею Мнение, Хрен Оспоришь
Телефон - 8-029-7796373. Ночью выключен.
Телефон - 8-029-7796373. Ночью выключен.
Сообщаю первые результаты
Пробовать решил на Athlon 900. Флаги взял такие:
-O3 -march=athlon -mmmx -m3dnow -pipe -fomit-frame-pointer
Базу VELCOM выкачивать было лениво, поэтому взял в текстовом виде свой mail inbox и сдублировал его в себя же, пока не получил файл размером 64 Мб.
Использовал команду
time cat email | grep "r" | iconv -f cp1251 -t UTF-8 2>/dev/null >/dev/null
С дефолтовым для slackware-current glibc (он собирается с -O3, кстати, но с совместимостью для i486) средний результат был: real 0m1.470s.
После пересборки стало в среднем 1.383s, т.е. 94% от старого значения.
НО! Segmentation Fault в ответ на команду "sleep 5" (она присутствует в /etc/rc.d/rc.6) поверг меня в глубочайшее уныние, поэтому я быстренько вернул назад старый glibc и пока что обмозговываю ситуацию
Пробовать решил на Athlon 900. Флаги взял такие:
-O3 -march=athlon -mmmx -m3dnow -pipe -fomit-frame-pointer
Базу VELCOM выкачивать было лениво, поэтому взял в текстовом виде свой mail inbox и сдублировал его в себя же, пока не получил файл размером 64 Мб.
Использовал команду
time cat email | grep "r" | iconv -f cp1251 -t UTF-8 2>/dev/null >/dev/null
С дефолтовым для slackware-current glibc (он собирается с -O3, кстати, но с совместимостью для i486) средний результат был: real 0m1.470s.
После пересборки стало в среднем 1.383s, т.е. 94% от старого значения.
НО! Segmentation Fault в ответ на команду "sleep 5" (она присутствует в /etc/rc.d/rc.6) поверг меня в глубочайшее уныние, поэтому я быстренько вернул назад старый glibc и пока что обмозговываю ситуацию
давайте мухи и котлеты отдельно:
-march, -mcpu, -,mmx, -m3dnow - это использование фирмовых фич процессоров.
-O3 - это несколько другое - в отличии от вышеприведеных флагов работоспособность полученного кода никто не гарантирует. XFree и ядро собираются с -O2 и не выше - причем не зря... Причин ставить собирать libc6 с -O3 я не вижу - глюки будут ИМХО вылазить в разных местах и установить причинно-следственную связь будет весьма непросто.
-march, -mcpu, -,mmx, -m3dnow - это использование фирмовых фич процессоров.
-O3 - это несколько другое - в отличии от вышеприведеных флагов работоспособность полученного кода никто не гарантирует. XFree и ядро собираются с -O2 и не выше - причем не зря... Причин ставить собирать libc6 с -O3 я не вижу - глюки будут ИМХО вылазить в разных местах и установить причинно-следственную связь будет весьма непросто.
Последний раз редактировалось Llama 05 дек 2004, 17:10, всего редактировалось 1 раз.
Опыт растет прямо пропорционально выведенному из строя оборудованию
- #!/bin/bash
- Неотъемлемая часть форума
- Сообщения: 331
- Зарегистрирован: 11 дек 2002, 00:35
- Откуда: /bsu/rfe
- Контактная информация:
Michael, насколько быстрее - не знаю, потому что изначально все собирал с -O3. Естественно, то, что дали eduild'ы. Но по сравнению с SuSE НАМНОГО быстрее - но ведь Суся чуть ли не самым тормозным дистрибом считается.
Точно помню, что glibc, KDE, xine, xmms я собирал с -O3
Все работает шустро, нормально и стабильно. Никаких проблем.
Кстати, перед сборкой glibc на нее накладывается 25 патчей. Возможно, среди них есть и те, что заменяют чувствительный к оптимизации код на более стабильный. Хотя я могу ошибаться, и, вероятнее всего, я это и делаю Но другого объяснения стабильной работы я не знаю.
Точно помню, что glibc, KDE, xine, xmms я собирал с -O3
Все работает шустро, нормально и стабильно. Никаких проблем.
Кстати, перед сборкой glibc на нее накладывается 25 патчей. Возможно, среди них есть и те, что заменяют чувствительный к оптимизации код на более стабильный. Хотя я могу ошибаться, и, вероятнее всего, я это и делаю Но другого объяснения стабильной работы я не знаю.
ИМХО = Имею Мнение, Хрен Оспоришь
Телефон - 8-029-7796373. Ночью выключен.
Телефон - 8-029-7796373. Ночью выключен.
Да, я поэтому и избегаю использовать O3. С O2 как-то спокойнее.
Итак, окончательный результат на машине, ради которой это всё и затевалось: ноутбук с P4-1700.
Собирал с "-O2 -march=pentium4 -mfpmath=sse -msse2".
Со старыми glibc (а это slackware 10, оптимизация O2, -march=i486 -mcpu=i686) вышеприведённая команда работала в среднем 0,945 с. После пересборки - 0,870 с (92% начального значения). Пересборка заняла около часа. Так что пусть каждый решает, стОит оно того или нет
Итак, окончательный результат на машине, ради которой это всё и затевалось: ноутбук с P4-1700.
Собирал с "-O2 -march=pentium4 -mfpmath=sse -msse2".
Со старыми glibc (а это slackware 10, оптимизация O2, -march=i486 -mcpu=i686) вышеприведённая команда работала в среднем 0,945 с. После пересборки - 0,870 с (92% начального значения). Пересборка заняла около часа. Так что пусть каждый решает, стОит оно того или нет