Ceci est une ancienne révision du document !
Adapter finement son installation
Ceci s'adresse à ceux qui installent leur FreeBSD à partir des sources et peuvent ainsi donner à Clang/llvm des billes pour compiler au plus près de l'architecture processeur. C'est surtout important lorsque vous utilisez des poudrieres, donc lorsque vous compiler pour une cible différente de l'hôte.
quel processeur ?
Le premier échelon est de regarder ce que donnent les première lignes au boot:
david:~>dmesg | grep 'CPU:' -A 10 CPU: Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz (3700.23-MHz K8-class CPU) Origin="GenuineIntel" Id=0x306c3 Family=0x6 Model=0x3c Stepping=3 Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> Features2=0x7fdafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND> AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM> AMD Features2=0x21<LAHF,ABM> Structured Extended Features=0x27ab<FSGSBASE,TSCADJ,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,NFPUSG> XSAVE Features=0x1<XSAVEOPT> VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID TSC: P-state invariant, performance statistics real memory = 17179869184 (16384 MB) -- CPU: Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz (3700.00-MHz K8-class CPU) Origin="GenuineIntel" Id=0x306c3 Family=0x6 Model=0x3c Stepping=3 Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> Features2=0x7fdafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND> AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM> AMD Features2=0x21<LAHF,ABM> Structured Extended Features=0x27ab<FSGSBASE,TSCADJ,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,NFPUSG> Structured Extended Features3=0x9c000600<MCUOPT,MD_CLEAR,IBPB,STIBP,L1DFL,SSBD> XSAVE Features=0x1<XSAVEOPT> VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID TSC: P-state invariant, performance statistics
Installez cpuc pour plus de précisions, ou llvm-tblgen
.
Ici, c'est un modèle dit haswell
d'après la documentation.
Makefile
Consultez /usr/share/mk/bsd.cpu.mk
pour déterminer le code de votre architecture processeur et précisez le CPUTYPE
dans make.conf
de vos poudrières par exemples.
?=
, sinon un make buildworld
peut échouer.
grep 'CPUTYPE.*==' /usr/share/mk/bsd.cpu.mk | less -X david:~>grep 'CPUTYPE.*==.*haswell.*' /usr/share/mk/bsd.cpu.mk ${CPUTYPE} == "haswell" ${CPUTYPE} == "haswell"
Dans l'exemple précédent, c'est un haswell, ce qui donne les options suivantes:
- /usr/share/mk/bsd.cpu.mk
MACHINE_CPU = avx2 avx sse42 sse41 ssse3 sse3
Puisque l'on est sur de l'architecture (MACHINE_CPUARCH
) amd64
.
Resultat
root@machine:~ # find /usr/local/etc/poudriere.d/*make.conf -exec grep CPUTYPE {} + /usr/local/etc/poudriere.d/ampache-default-make.conf:CPUTYPE?=haswell /usr/local/etc/poudriere.d/flarum-default-make.conf:CPUTYPE?=sandybridge /usr/local/etc/poudriere.d/llanura-default-make.conf:CPUTYPE?=haswell /usr/local/etc/poudriere.d/machine-default-make.conf:CPUTYPE?=haswell /usr/local/etc/poudriere.d/owncloud-default-make.conf:CPUTYPE?=haswell /usr/local/etc/poudriere.d/popeye13-default-make.conf:CPUTYPE?=sandybridge
Machine
est donné comme CPU E3-1246
, soit un Xeon. Il suffit de consulter la datasheet pour y voir le modèle haswell
.
Popeye
est donné comme i7-3930K
, soit un Intel Core (à ne pas confondre avec core2
). Il suffit de consulter la datasheet pour y voir le modèle sandybridge
.