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
.
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.
grep 'CPUTYPE.*==' /usr/share/mk/bsd.cpu.mk | less -X david:~>grep 'CPUTYPE.*==.*k8.*' /usr/share/mk/bsd.cpu.mk ${CPUTYPE} == "k8-sse3" ${CPUTYPE} == "athlon-fx" || ${CPUTYPE} == "k8"
Dans l'exemple précédent, c'est un K8 avec l'option sse3, définit par k8-sse3
.
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?=k8-sse3 /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