LINUX.ORG.RU
ФорумAdmin

Gentoo «переезжает» на CPU_FLAGS_X86

 , , ,


10

5

прилетело в новости:

$ sudo eselect news read
2015-01-28-cpu_flags_x86-introduction
  Title                     CPU_FLAGS_X86 introduction
  Author                    Michał Górny <mgorny@gentoo.org>
  Posted                    2015-01-28
  Revision                  2

The USE flags corresponding to the instruction sets and other features
specific to the x86 (amd64) architecture are being moved into a separate
USE flag group called CPU_FLAGS_X86.

In order not to lose CPU-specific optimizations, users will be required
to update their make.conf (and package.use) file. For example, if
the following USE flags were present:

  USE="mmx mmxext sse sse2 sse3"

Those flags need to be copied into:

  CPU_FLAGS_X86="mmx mmxext sse sse2 sse3"

Please note that the same CPU_FLAGS_X86 variable is used both on x86
and amd64 systems.

When in doubt, you can consult the flag descriptions using one of
the commonly available tools, e.g. `equery uses` from gentoolkit:

  $ equery uses media-video/ffmpeg

Most of the flag names match /proc/cpuinfo names, with the notable
exception of SSE3 which is called 'pni' in /proc/cpuinfo (please also
do not confuse it with distinct SSSE3).

To help users enable the correct USE flags, we are providing a Python
script that generates the correct value using /proc/cpuinfo. It can be
found in the app-portage/cpuinfo2cpuflags package:

  $ emerge -1v app-portage/cpuinfo2cpuflags
  $ cpuinfo2cpuflags-x86

In order to ensure safe migration and maintain compatibility with
external repositories, it is recommended to preserve the old USE
settings for a period of one year or until no package of interest is
still using them.


вкратце:
CPU-специфичные оптимизации переезжают из юзов в соотв. переменную CPU_FLAGS_X86 (по анологии с ABI_X86, и скорее всего также будут доступны в юзах как и abi_x86_32, т.е. cpu_flags_x86_mmx например)

простейший способ переехать : app-portage/cpuinfo2cpuflags, после установки запустить cpuinfo2cpuflags-x86
на основе /proc/cpuinfo оно выдаст доступные флаги
скопипастить выхлоп в /etc/make.conf но идентичные флаги из USE пока не удалять, т.к. потребуется время чтоб перевели все пакеты на использование новых юзов

пока «переезжает» автоматом, но со временем кто-то при апдейте провтыкает свои юзы

★★★★

Хорошая новость, спасибо. Отделение мух от котлет.

Chaser_Andrey ★★★★★
()

«Читаю eselect news read за еду.»

У нас что, гентушники разучились читать? Или ты заделался гуглотранслейтом?

Спасибо за то, что напомнил сделать emerge --sync с утра, хоть я и синкал дерево вечером.

funeralismatic ★★★
()

отлично - молодцы!

Вывод утилиты cpuinfo2cpuflags-x86, приятно дополняет настройки make.conf

if
the following USE flags were present:

USE=«mmx mmxext sse sse2 sse3»

Those flags need to be copied into:

CPU_FLAGS_X86=«mmx mmxext sse sse2 sse3»

Я так понимаю старый сеттинг остаётся в make.conf -> USE Тогда не очень очевидно, нужно ли добавлять новые флаги из вывода cpuinfo2cpuflags-x86 в USE или достаточно CPU_FLAGS_X86 или всё-же в обе переменные.

В моем случае вывод утилиты такой: CPU_FLAGS_X86=«aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop»

В make.conf сделал пока так (хотя удобнее обернуть в переменную):

USE="aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop ${USE}"

#mmx sse sse2: old setting
#CPU_FLAGS_X86="mmx mmxext sse sse2 sse3" : example setting from news read
#cpuinfo2cpuflags-x86 output settings on this host:
CPU_FLAGS_X86="aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"

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

Тогда не очень очевидно, нужно ли добавлять новые флаги из вывода cpuinfo2cpuflags-x86 в USE или достаточно CPU_FLAGS_X86 или всё-же в обе переменные.

Последний абзац, вольный перевод «Чтобы бесшовно мигрировать на новый набор флагов, рекомендует сохранять оба набора на протяжении года или хотя бы пока ни один пакет не будет использовать только новый набор»

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

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

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

swwwfactory ★★
()

Позитивная новость.

Я и так создавал кучу категорий для USE флагов: поддержка форматов, поддержка звуковой подсистемы и т. п. Теперь такая работа началась на уровне дистра.

Gentoo - хороший дистр.

Kroz ★★★★★
()
Ответ на: комментарий от morisRavel
cat /proc/cpuinfo
processor       : 0 # 0-3
vendor_id       : AuthenticAMD
cpu family      : 21
model           : 16
model name      : AMD A10-4600M APU with Radeon(tm) HD Graphics
stepping        : 1
microcode       : 0x600110f
cpu MHz         : 1400.000
cache size      : 2048 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 2
apicid          : 16
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonsto
p_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop 
skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb arat cpb hw_pstate npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vmmcall 
bmi1
bogomips        : 4591.71
TLB size        : 1536 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro
swwwfactory ★★
()
Ответ на: комментарий от Kroz

ну лол, столько разости из косметической фигни. лучше бы набрали майнтейнеров и позакрывали часть багов, заставили портеж меньше тормозить и жрать памяти, чем запускаемые им gcc(лол!) и тд

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

bogomips : 4591.71

мда, видимо и по реальной производительности до моего заплёванного athlon ii не дотягивает

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

USE=«aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop ${USE}»

CPU_FLAGS_X86=«aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop»

А нельзя их местами поменять и сделать так: USE=«aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop ${CPU_FLAGS_X86}»?

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

тогда скорее

USE="${CPU_FLAGS_X86} ${USE}"

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

Да, очевидно можно и так, при условии что CPU_FLAGS_X86 есть подмножество USE-флагов.

На момент написания было более неясно USE-флаги это или нет.

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

сделал также.

Сегодня обновлялся. уже в ~9 пакетах флаги переехали с USE в CPU_FLAGS_X86

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

Тогда норм, у меня похожий проц. Но насчёт fma3, которого нет, всё-таки непонятно. Вывод: без ручного вмешательства никуда!

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

Но насчёт fma3, которого нет, всё-таки непонятно.

см. portage/profiles/desc/cpu_flags_x86.desc

# Copyright 1999-2015 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/desc/cpu_flags_x86.desc,v 1.3 2015/01/28 17:55:33 mgorny Exp $

# Whenever the flag name does not correspond to /proc/cpuinfo flags,
# please put the cpuinfo flag in square brackets. If more than one flag
# is specified, any of them will enable the respective USE flag.

3dnow - Use the 3DNow! instruction set
3dnowext - Use the Enhanced 3DNow! instruction set
aes - Enable support for Intel's AES instruction set (AES-NI)
avx - Adds support for Advanced Vector Extensions instructions
avx2 - Adds support for Advanced Vector Extensions 2 instructions
fma3 - Use the Fused Multiply Add 3 instruction set ([fma] in cpuinfo)
fma4 - Use the Fused Multiply Add 4 instruction set
mmx - Use the MMX instruction set
mmxext - Use the Extended MMX instruction set (intersection of Enhanced 3DNow! and SSE instruction sets) ([mmxext], [3dnowext] or [sse] in cpuinfo)
padlock - Use VIA padlock instructions ([phe] in cpuinfo)
popcnt - Enable popcnt instruction support ([abm] or [popcnt] in cpuinfo)
sse - Use the SSE instruction set
sse2 - Use the SSE2 instruction set
sse3 - Use the SSE3 instruction set ([pni] in cpuinfo, NOT ssse3)
sse4_1 - Enable SSE4.1 instruction support
sse4_2 - Enable SSE4.2 instruction support
sse4a - Enable SSE4a instruction support
ssse3 - Use the SSSE3 instruction set (NOT sse3/pni)
xop - Enable the XOP instruction set

как, например, pni==sse3 так и fma==fma3

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

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

есть вероятность получить новость (так же еселектом) на эту тему?

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

3dnowext
mmxext

Современные процессоры в это умеют?

mmx

Я так понимаю, что оно на 64 битах уже deprecated?

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

Скорее всего - нет. Потому что чётко сказать, когда ВСЕ оверлеи, включая неофициальные перестанут использовать данные флаги мы не можем.

И если с еклассами можно повестить deprecated warning, а потом выпилить, то тут таких механизмов не предусмотрено

Pinkbyte ★★★★★
()

Напрягает, что для cpuinfo2cpuflags-x86 нет ни man, ни ключей для справки. Непорядок.

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

genlop -t www-client/chromium

в свап уйдёт, сейчас только в один поток, или давай что-то с меньшим потреблением памяти. а ещё скорость компиляции зависит от cflags

bogomips : 7132.61

$ for _ in 1 2 3;do openssl speed md5 -multi 4;done |& grep ^md5
md5             237670.04k   718613.97k  1643505.07k  2391927.13k  2856105.30k
md5             238153.52k   714699.75k  1649488.13k  2440514.56k  2856157.18k
md5             240114.73k   719031.59k  1642531.07k  2438103.04k  2856493.06k

anonymous
()

переехал, но и из юзов не удалил, пока.

Deleted
()
Ответ на: комментарий от anonymous
bogomips        : 4591.71
for _ in 1 2 3;do openssl speed md5 -multi 4;done |& grep ^md5
md5             110046.97k   355366.40k   872662.02k  1409388.54k  1646255.32k
md5             110958.91k   351735.25k   870065.24k  1398919.17k  1651747.50k
md5             108904.67k   344446.08k   867144.96k  1383575.55k  1657932.46k

(довольно странные скачки)

genlop -t www-client/chromium

     Thu Aug 14 23:29:43 2014 >>> www-client/chromium-36.0.1985.143
       merge time: 3 hours, 12 minutes and 51 seconds.

     Thu Aug 28 03:16:31 2014 >>> www-client/chromium-37.0.2062.94
       merge time: 2 hours, 57 minutes and 25 seconds.

     Sat Sep 13 04:07:48 2014 >>> www-client/chromium-37.0.2062.120
       merge time: 2 hours, 33 minutes and 57 seconds.

     Thu Oct  9 06:41:54 2014 >>> www-client/chromium-38.0.2125.101
       merge time: 3 hours, 27 minutes and 6 seconds.

     Fri Oct 24 05:32:13 2014 >>> www-client/chromium-38.0.2125.101
       merge time: 3 hours, 37 minutes and 41 seconds.

     Wed Nov  5 08:47:34 2014 >>> www-client/chromium-38.0.2125.101
       merge time: 8 hours, 17 minutes and 27 seconds.

     Sat Nov 22 05:04:55 2014 >>> www-client/chromium-39.0.2171.65
       merge time: 4 hours, 2 minutes and 47 seconds.

     Sun Jan 25 04:43:35 2015 >>> www-client/chromium-40.0.2214.91
       merge time: 4 hours, 9 minutes and 53 seconds.

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