LINUX.ORG.RU

[gentoo][use-flags] Про полезность отдельных

 


0

1

Снова я с глупыми вопросами)))

1. Увидел, что часто в USE-флагах (make.conf) указывают возможности процессора (sse, 3dnow и т.д.). Зачем это нужно и для чего?

2. USE-флаг "-doc" в make.conf позволит не загружать документацию пакетов и сэкономит время. Так?)

Спасибо.

1. Конечно опции процессора указываются в CFLAGS. Но иногда дело не заканчивается компилятором и при наличии некоторых инструкций некоторое программы работают на основе другого кода. Этот флаг это позволяет делать

2. Хз, не знаю скачивает или нет, но не устанавливает точно. У меня -doc кроме особых случаев

vertexua ★★★★★
()

> USE-флаг "-doc" в make.conf позволит не загружать документацию пакетов и сэкономит время. Так?)

Так, только он её заргужает, чаже всего. Лушче добавьте его в make.conf cразу. Если понадобится документиция для какого либо пакета, затем включите отдельно.

Deleted
()

>Зачем это нужно и для чего?

Для того, чтобы передать пакетам опции типа -with-sse4 (ручное подключение оптимизированного asm кода)

позволит не загружать документацию пакетов и сэкономит время.


Сомневаюсь, сколько сталкивался - оно просто не ставит доки. загружаются все равно с исходниками

devl547 ★★★★★
()
Ответ на: комментарий от vertexua

Т.е. лучше всего будет перечислить все возможности процессора в CFLAGS и в USE-флагах для наилучшего эффекта?

Кстати, какие ещё CFLAGS ускорят компиляцию? (может -pipe или ещё что, Вы, как человек с гентой хорошо знакомый, скажите :) )

Pete_Yorn
() автор топика

вы используете сурс бэйс ОС.
вы используете ОС, которая позиционирует себя как одина из лучших в управлении оптимизацией.
вы используете ОС в которой этой оптимизацией заставляют заниматься.
вы используете ОС, в которой используют gcc для вышеперечисленных целей.
вы читали документацию, т.к. без неё даже не установили бы эту ОС
вы читали очень много манов, раз смогли написать сюда.

но, вы не удосужились прочесть man gcc? оО

system-root ★★★★★
()
Ответ на: комментарий от Pete_Yorn

вот вам и совет.
man gcc в любых его проявлениях.
а то «бывалые» тоже, -mmmx херачат, ни прочитав ничего.

system-root ★★★★★
()
Ответ на: комментарий от Pete_Yorn

Кстати, какие ещё CFLAGS ускорят компиляцию?

Я уже выкладывал мой make.conf. Но в целом все достигается хорошими use-флагами. Нужно просто выбросить ненужное и все.

У меня конфигурация компонентов системы такая

gentoo-sources-2.6.35, prelink, preload, ALSA, Gnome, udev, udisk, reiserfs, no hal - все заточено на скорость. Как браузер быстрее всего chromium. Правда иногда на ЛОРе будут «Опаньки» и вы ничего с ними не сделаете. Но это только на ЛОРе, ни на одном другом сайте такого не будет. ЛОР уникален.

Вы, как человек с гентой хорошо знакомый, скажите :)

Это вы подзагнули...

vertexua ★★★★★
()
Ответ на: комментарий от system-root

> вы используете ОС в которой этой оптимизацией заставляют заниматься.

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

name_no ★★
()
Ответ на: комментарий от vertexua

Всем спасибо, пойду читать хендбук и доки)

Pete_Yorn
() автор топика
Ответ на: комментарий от Pete_Yorn

>Т.е. лучше всего будет перечислить все возможности процессора в CFLAGS и в USE-флагах для наилучшего эффекта?

да, если не укажите в USE, то ebuild скорее всего использует --disable-
в результате будет использован код на си, получите регресс производительности даже по сравнению с бинарными дистрибутивами


Кстати, какие ещё CFLAGS ускорят компиляцию? (может -pipe


кроме -pipe ничего не ускорит, обычно стоит указать -march=native
это выставит как возможности процессора, так и размер кешей, если размеры кешей заданы, это несколько ускоряет процесс компиляции.


Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Девушка, большое Вам спасибо за столь подробный ответ )

Pete_Yorn
() автор топика
Ответ на: комментарий от megabaks

MAKEOPTS -s не дает ускорения, а всего лишь снижает выхлоп на терминал,
-j на одноядерном (у ТС насколько я поняла - одноядерный амд) тоже не особенно что даст, -j2 для полной утилизации процессора, а лучше -j1 и пойти погулять, попить чай, почитать книгу...

впрочем, для многоядерных, поскольку ebuildы которые игнорируют -j в MAKEOPTS теперь стали более обычны, чем те которые используют -j,
лучше MAKEOPTS=-j1 но запускать emerge --jobs=2 (или больше) пусть собирает себе в 1 поток, но зато сразу по 2 (или более) пакетов

Sylvia ★★★★★
()
Ответ на: комментарий от system-root

>но, вы не удосужились прочесть man gcc?

Вот только эти USE-флаги к man gcc никакого отношения не имеют.

kss ★★★★★
()
Ответ на: комментарий от Sylvia

>кроме -pipe ничего не ускорит, обычно стоит указать -march=native

Можно ещё поставить -O0 (или как там оптимизация отключается?) :)

kss ★★★★★
()
Ответ на: комментарий от Sylvia

>MAKEOPTS -s не дает ускорения, а всего лишь снижает выхлоп на терминал
вот благодаря этому и шустрее собирается, т.к. не напрягает иксы выхлопом, но таки да - если терминал свернуть, разницы никакой )

megabaks ★★★★
()
Ответ на: комментарий от Pete_Yorn

>лучше всего будет перечислить все возможности процессора в CFLAGS

В CFLAGS достаточно указать правильный -march=, тогда нужные флаги под процессор подтянутся автоматом. man gcc

anon_666
()
Ответ на: комментарий от megabaks

Кстати, вопрос - пересобирал xz, с указанием размера кеша, -O3 и в таком духе, в разных комбинациях.
Профита не получил, флаги не режутся _точно_.
ЧЯДНТ?

anon_666
()
Ответ на: комментарий от megabaks

сплошь и рядом
или по перл клинеру пересобирать штук 80 пакетов, там больше висит на конфигурировании чем на сборке, --jobs= полезнее

Sylvia ★★★★★
()
Ответ на: комментарий от anon_666

lzma sdk не оптимизируется средствами компилятора ) там asm

Sylvia ★★★★★
()
Ответ на: комментарий от system-root

Хорошо специально для тебя переформулирую: USE-флаги никакого отношения к опциям компилятора не имеют. Посылать человека, спрашивающего о них, читать руководство к компилятору — это либо издевательство над ним. либо невежество. Так понятнее?

kss ★★★★★
()
Ответ на: комментарий от system-root

что вы имеете ввиду?
не перешла и не перейдет, как эксперимент - собирать можно, но не без проблем и не bug free

Sylvia ★★★★★
()
Ответ на: комментарий от Black_Maria

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

Sylvia ★★★★★
()
Ответ на: комментарий от kss

и кому будет нужна гента собраная с -O0 ? для нытиков? чтобы поныть что «все тормозит» ? плохая идея, с -O0 обычно
1) собирают разработчики чтобы быстрее было пересобирать что-то большое,
хотя лучше бы брали ccache
2) ловят баги компилятора на коде, который некорректно работает с -O2 etc

Sylvia ★★★★★
()
Ответ на: комментарий от kss

хорошо прочитайте вопрос ТС №1.
на этот вопрос вы сейчас даёте неверный ответ ещё больше запутывая его.

system-root ★★★★★
()
Ответ на: комментарий от anon_666

погоняй лучше bzip2 какой-ньть - там можно флагами на гцц (без сильных извратов конечно) 15-20%% разницу в профите сделать

megabaks ★★★★
()
Ответ на: комментарий от anon_666

просто ни p7zip, ни lzma, ни xz сильно не реагируют на флаги компилятора и сборку с профилированием, даже ICC, вот megabaks тоже пособирал p7zip с PGO и тоже в пределах погрешности бенчмарки

кодовая база там общая - lzma sdk от Игоря Павлова

Sylvia ★★★★★
()

я лучше покажу на примере, чтобы и ТСу и остальным было понятно

есть библиотека pixman, чья функция - низкоуровневые манипуляции с графикой, в бинарных x86 дистрибутивах ее собирают без sse2,
в configure есть ключик --enable-sse , который включает оптимизированные вставки на ассемблере, по умолчанию, т.е. если не указаны USE sse эти вставки включены не будут, хотя компилятор может использовать sse (на свое усмотрение) для оптимизации, но результат будет хуже чем с использованием того, что было продумало и сделано вручную разработчиками pixman

абсолютно аналогичная ситуация с openssl и sse2 для x86 (64 бит - sse2 используется по умолчанию)

похожая ситуация с кодеками мультимедиа, но там обычно вставки включаются через cpuid, в генте хуже, если USE не будет где-то включен,
то ebuild запросто подставит --disable-sse и кодек будет собран без ассемблерных вставок

вывод - в USE всегда перечислять желаемый уровень возможностей процессора, если пакет имеет флаг cpu-detection его тоже можно задействовать

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Вот ещё прочитал в гентушной вики, про мой процессор, что он поддерживает SSE3 и 64-бита.
Советуют там же поставить:
CHOST=«x86_64-pc-linux-gnu»
CFLAGS="-march=k8 -msse3 -O2 -pipe"
CXXFLAGS=«${CFLAGS}»

1. Как так, я всегда i686 ставил... Получает, что для моего компьютера лучше использовать x86_64, чем i686?

2. -march=k8 будет лучше, чем -march=native?

3. Что означают -msse3 и -O2?

Pete_Yorn
() автор топика
Ответ на: комментарий от vertexua

-march=core2

* не выставляет кеши
* не выставляет -mssse3 (конро) или -msse4.1 (пенрин) или -msse4 (нехалем)
* не выставляет опции нехалем и вестмер -mpopcnt -maes


core2 достаточно разнородное семейство процессоров, GCC подразумевает что это Conroe, в том числе и целероны conroe L

Sylvia ★★★★★
()
Ответ на: комментарий от Pete_Yorn

ты вообще вкурсе, что существуют гуголь? )
а про cat /proc/cpuinfo???
такое ощущение, что ты так - ради прикола топик сделал )

megabaks ★★★★
()
Ответ на: комментарий от Pete_Yorn

по поводу первого - обсуждалось много много раз
http://www.linux.org.ru/wiki/en/32_%D0%B8%D0%BB%D0%B8_64_%D0%B1%D0%B8%D1%82%D...

тут посмотрите , или в General есть прикрепленная тема,

отдельно тему 32 vs 64 лучше не создавайте, у многих уже аллергия, втч модераторов


2. -march=native всегда лучше, с условием того что GCC корректно определяет процессор, можете собрать hello_world.c
с gcc -v -march=native

и посмотреть какие флаги будут использоваться

3. man gcc читайте
-msse3 - разрешить использовать sse3
-O2 - уровень оптимизации 2

Sylvia ★★★★★
()
Ответ на: комментарий от vertexua

Правда иногда на ЛОРе будут «Опаньки» и вы ничего с ними не сделаете. Но это только на ЛОРе, ни на одном другом сайте такого не будет

У меня несколько больше сайтов где хром лажает. Особенно достает football.ua

Не мог бы немножно полазить на нем и поскроллить страницы?

ZuBB ★★★★★
()
Ответ на: комментарий от ZuBB

Да, у меня тоже. Тут в чем дело, есть в библиотеке по работе со шрифтами баг, которые вызывает double free. В бинарной сборке хромиума это можно отключить переменной окружения, так как double free в корне не страшно. Ну double, ну free. А в сборке с сорцов ноль реакции на эту переменную. Вот так и живем

vertexua ★★★★★
()
Ответ на: комментарий от Sylvia

>-march=native всегда лучше
не скажи :)
погонял gzip - в пределах погрешности, но (в моём случае) core2 таки уделал native

megabaks ★★★★
()
Ответ на: комментарий от vertexua

Кстати мейнтейнер GC очень адекватный чувак (поляк), первый внешний комиттер в chrome/chromium. Можна потолковать с ним

ZuBB ★★★★★
()
Ответ на: комментарий от megabaks

«в пределах погрешности» или «уделал» ?)
я беру общие рекомендации, а не частный случай , который мог получиться с gzip , опять таки, новичкам лучше не лезть в экстрим с флагами сразу , а собрать с -O2 -march=native -fomit-frame-pointer

причем последний флажок стоит обдумать, т.к. отсутствие вменяемых трассировок это все же плохо, но это +1 регистр общего назначения

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

помнишь про графит в 4.4 и тесты на том же гзипе?
там тоже в пределах погрешности, но в той ветке графит таки сливал
так же и здесь :)
а про флаги...впринципе согласен
но одно но - этот ключик таки лучше включить - т.к. дебагом собственно занимается(тем более среди «новичков») практически никто, а вот профита он всё-таки даёт - на том же заезженном гзипе :)

megabaks ★★★★
()
Ответ на: комментарий от megabaks

для тестов флагов рекомендуют брать acovea
хотя это тоже не показатель )

Sylvia ★★★★★
()
Ответ на: комментарий от megabaks

Ок, с bzip2 остановился на этом:
CFLAGS="-march=k8-sse3 -msse3 -O2 -g0 -pipe --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512 -ffast-math -funroll-loops -falign-loops"
Хотя до 20% далеко..

anon_666
()
Ответ на: комментарий от anon_666

Дадад, для bzip2 -msse3 -ffast-math ненужны, я из /etc/makepkg.conf скопипастил.

anon_666
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.