LINUX.ORG.RU

Gentoo и ее '+1%' производительности

 , ,


2

4

Хочу поделится не много своими наблюдениями. Я сделал пару тестов и выявил, что собранные пакеты работают на на «~1%» быстрее за счет оптимизаций под процессор, а примерно на 1-2% медленнее чем бинарники.

В случае в ffmpeg фреймрейт был не много ниже а потраченное время больше, собранный chromium потреблял на 50-80мб оперативки больше чем бинарник, итд.

Делал тесты на 2 разных ноутах (amd a8-5557M и i5-6440HQ), make.conf был сделан по документации и даже одобрен анонами в моем соседнем треде.

Стандартный make.conf, скорее всего как у 99% пользователей gentoo, написанный по вики, с добавлением инструкций CPU_FLAGS_X86 под свой процессор:

CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CPU_FLAGS_X86="aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"
MAKEOPTS="-j4

Так же, я пробовал GCC - патч на ядро под архитектуру процессора.

Может кто та сталкивался или знает почему так происходит?



Последнее исправление: d-7 (всего исправлений: 3)

Ответ на: комментарий от timdorohin

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

А она бывает (была в 2013 году и ранее) платной и образовательной (бесплатной), как сейчас — не в курсе.

Можно посмотреть на трекерах конечно.

Bruce_Lee ★★
()

Может кто та сталкивался или знает почему так происходит?

У криворуких по другому не бывает.

anonymous
()

Как знатно у гентушников пригорает от невинного вопроса. Надо на вооружение взять.

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

Ньюфак не знает, что здесь триггер-хеппи гентушники в мочераторах.

anonymous
()

или знает почему так происходит?

Ты смог добавить в собираемое ПО больше зависимостей, чем было в бинарниках, с которыми ты сравнивал. Не парься с несколькими процентами скорости, если тебе её хватает, ты в гонках не участвуешь.

Napilnik ★★★★★
()
Ответ на: комментарий от d-7

Да пофиг мне на 1-2%. Главное — чтобы не было всякого дерьма вроде systemd, pulseaudio, kde, gnome и т.п. Вот конфиг:

cat /etc/portage/make.conf
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-march=broadwell -pipe -O2 -msse -msse2 -msse3 -mssse3 -msse4.1"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
# READ http://www.gentoo.org/dyn/use-index.xml for clearance
# All that must be enabled
ENABLE="7zip \
a52 aac aalib abi_x86_32 acpi alsa apache2 \
bash-completion blas bluray bmp bzip2 cairo cddb cdr cgi cleartype corefonts crypt css cuda cups curl \
dbus device-mapper djvu dri dri2 dts dvd dvdr \
enca encode exif faac faad ffmpeg fftw fits flac fontconfig fuse \
gedit ghostscript gif glut gnuplot gost gsl hddtemp icewm iconv id3tag imagemagic imlib2 jack jpeg jpeg2k \
lame lapack latex libass libcaca libnotify libsamplerate lm_sensors logrotate \
mad matroska mencoder midi mime mmx mmxext mng motif mp3 mp4 mpeg mpeg2 mplayer multilib  \
nautilus ntfs nvidia ogg opengl openmp openssl optimisation pch pdf png pnm postgres postgresql proftp \
rar real sftp sockets sox spell sqlite sqlite3 squid sse sse2 sse3 ssse3 ssse4 svg \
tga theora threads tiff timidity truetype ttf type1 udev usb v4l2 vdpau vorbis vlc \
wav win32codecs wmf X x264 xattr xinerama xinetd xorg xosd xscreensaver xvid xvmc"

# All that must be disabled
DISABLE="-abiword -bluetooth -consolekit -doc -eds -gnome -gtk3 -handbook \
-java -joystick -networkmanager -perl -phonon -policykit -pulseaudio \
-rust -systemd -udisks -upower -wallpapers -libav -python"

USE="${ENABLE} ${DISABLE}"


ALSA_CARDS="hda-intel"
VIDEO_CARDS="nvidia intel"
INPUT_DEVICES="evdev lirc"
LIRC_DEVICES=""
FEATURES="$FEATURES parallel-fetch ccache -xattr"

#FEATURES="$FEATURES buildpkg ccache"
CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="15G"

LINGUAS="ru ru_RU en"
# new fashion of LINGUAS
L10N="ru en en-GB"
AUTOCLEAN="yes"

GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/
    http://gentoo.bloodhost.ru/
    http://mirror2.corbina.ru/gentoo-distfiles/
    http://gentoo.inode.at/
    http://de-mirror.org/gentoo/
    http://mirror.bytemark.co.uk/gentoo/
    "

ACCEPT_KEYWORDS="~amd64"
PAX_MARKINGS="XT"

PORTDIR="/usr/portage"
# location where Portage will store the downloaded source code archives
DISTDIR="${PORTDIR}/distfiles"
# for eclean-pkg
PKGDIR="${PORTDIR}/packages"
# tmp
PORTAGE_TMPDIR="/tmp"

PORTDIR_OVERLAY="/home/local-overlay/ $PORTDIR_OVERLAY"

EMERGE_DEFAULT_OPTS="-v -j6 --load-average=7 --with-bdeps y --keep-going y --quiet-build n --autounmask n"

MAKEOPTS="-j8"
# ALL package I need are in local overlay
source /var/lib/layman/make.conf

PORTAGE_NICENESS="13"
PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}"


QEMU_SOFTMMU_TARGETS="arm i386 x86_64"
QEMU_USER_TARGETS="arm x86_64"

RSYNC_PROXY="192.168.2.33:8080"

anonymous
()

CPU_FLAGS_X86 разве есть смысл писать если -march=native имеет тот-же набор? кажется нет.
в итоге у тебя CFLAGS вообще ничего не даёт, ну собрал ты с -O2, круто чё. бинарный пакет тоже с -O2 собран, версия комялятора скорее всего такая же.
ты просто собрал тоже самое, 1% уже писали — это погрешность измерения.
эскобар.jpg не? думаю да.
ставлю 10 бумажных рублей, что последовательно собранные тобой ffmpeg с неизменным make.conf будут отличатся на 1% по твоей методике тестирования.

system-root ★★★★★
()

Лол. Взял и всех разоблачил.

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

есть смысл писать

Есть, это разные вещи. CPU_FLAGS_X86 передаются опциями в ./configure скрипт.

anonymous
()

Зависит также от прямоты рук. Я вот отключаю много того, что лично мне не нужно. Генту ест мало и работает быстро. Например, в 2010 году openSUSE ела 200 Мб без браузера, а Gentoo - 185 Мб. Браузер ел столько же, сколько в бинарном дистрибутиве Linux.

Что касается «может быть медленнее». Да. Не собирай систему с -O3. Это моё субъективное мнение, и я могу ошибаться. Я однажды собрал, и у меня наблюдался жёсткий 12309 при 2 открытых вкладках Chromium. А пересобрал мир с -O2, и всё пофиксилось! 12309 стал появлятсья только при 15 вкладках.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Не собирай систему с -O3

Понятное дело. Собранные с -О3 бинарники больше чем с -О2. Как такое увидел, перестал использовать -O3.

А по теме, собирал хромиум с минимальным набором юзов

roprietary-codecs, system-ffmpeg, pulseaudio, gtk3
При идентичных настройках и вкладках собранный потреблял на 80-100мб озу больше. Со сборкой из гугловским tcmalloc разница чуть уменьшилась - 50-60мб. Тестировалось много раз, для чистоты эксперимента каждый браузер был дополнительно несколько раз проверен после ребута. Разница всегда была в пользу бинарника.

Но сути это не меняет, тратить 13 часов на сборку что бы получить результат хуже чем у бинарника лично я не хочу. Может нужно было делать линковку самому, не знаю, смысл был в штатной компиляции на gcc с рекомендуемыми параметрами из гентушной вики. По этому с заявлениями о моей «криворукости» можете смело идти лесом.

d-7
() автор топика
Ответ на: комментарий от RazrFalcon

Ну так это я сейчас стал активно пользоваться package.use, а раньше все в глобальные флаги пхал. Там по-нормальному вообще только то, что в DISABLE, надо оставить.

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