configurer:processeur

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
configurer:processeur [2022/12/22 13:07] davidconfigurer:processeur [2024/03/15 21:12] (Version actuelle) david
Ligne 3: Ligne 3:
  
 Ceci s'adresse à ceux qui installent leur FreeBSD à partir des sources et peuvent ainsi donner à [[https://clang.llvm.org/|Clang/llvm]] des billes pour compiler au plus près de l'architecture processeur. Ceci s'adresse à ceux qui installent leur FreeBSD à partir des sources et peuvent ainsi donner à [[https://clang.llvm.org/|Clang/llvm]] des billes pour compiler au plus près de l'architecture processeur.
-C'est surtout important lorsque vous utilisez des [[ports:poudriere]]s, donc lorsque vous compiler pour une cible différente de l'hôte.+C'est surtout important lorsque vous utilisez des [[ports:poudriere|poudrieres]], donc lorsque vous compiler pour une cible différente de l'hôte.
  
 </jumbotron> </jumbotron>
  
-===== quel processeur =====+===== quel processeur =====
  
 Le premier échelon est de regarder ce que donnent les première lignes au //boot//: Le premier échelon est de regarder ce que donnent les première lignes au //boot//:
Ligne 39: Ligne 39:
 </code> </code>
  
-Installez [[https://github.com/rilysh/cpuc|cpuc]] pour plus de précisions, ou ''llvm-tblgen''.+Installez [[https://codeberg.org/mystical/cpuc|cpuc]] pour plus de précisions, ou ''llvm-tblgen''. 
 + 
 +Ici, c'est un modèle dit ''haswell'' d'après la [[https://www.intel.fr/content/www/fr/fr/products/sku/77490/intel-core-i34170-processor-3m-cache-3-70-ghz/specifications.html?wapkw=i3-4170|documentation]]. 
 + 
 +Obtenez la topologie de votre système: 
 + 
 +<code bash> 
 +sysctl kern.sched.topology_spec 
 + 
 +kern.sched.topology_spec: <groups> 
 + <group level="1" cache-level="3"> 
 +  <cpu count="12" mask="fff,0,0,0">0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11</cpu> 
 +  <children> 
 +   <group level="2" cache-level="2"> 
 +    <cpu count="2" mask="3,0,0,0">0, 1</cpu> 
 +    <flags><flag name="THREAD">THREAD group</flag><flag name="SMT">SMT group</flag></flags> 
 +   </group> 
 +   <group level="2" cache-level="2"> 
 +    <cpu count="2" mask="c,0,0,0">2, 3</cpu> 
 +    <flags><flag name="THREAD">THREAD group</flag><flag name="SMT">SMT group</flag></flags> 
 +   </group> 
 +   <group level="2" cache-level="2"> 
 +    <cpu count="2" mask="30,0,0,0">4, 5</cpu> 
 +    <flags><flag name="THREAD">THREAD group</flag><flag name="SMT">SMT group</flag></flags> 
 +   </group> 
 +   <group level="2" cache-level="2"> 
 +    <cpu count="2" mask="c0,0,0,0">6, 7</cpu> 
 +    <flags><flag name="THREAD">THREAD group</flag><flag name="SMT">SMT group</flag></flags> 
 +   </group> 
 +   <group level="2" cache-level="2"> 
 +    <cpu count="2" mask="300,0,0,0">8, 9</cpu> 
 +    <flags><flag name="THREAD">THREAD group</flag><flag name="SMT">SMT group</flag></flags> 
 +   </group> 
 +   <group level="2" cache-level="2"> 
 +    <cpu count="2" mask="c00,0,0,0">10, 11</cpu> 
 +    <flags><flag name="THREAD">THREAD group</flag><flag name="SMT">SMT group</flag></flags> 
 +   </group> 
 +  </children> 
 + </group> 
 +</groups> 
 +</code>
  
 ==== Makefile ==== ==== 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. 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.
 +
 +<callout type="warning" icon="true"> 
 +Pensez à conserver la syntaxe ''?='', sinon un ''make buildworld'' peut échouer.
 +</callout>
  
 <code bash> <code bash>
 grep 'CPUTYPE.*==' /usr/share/mk/bsd.cpu.mk | less -X grep 'CPUTYPE.*==' /usr/share/mk/bsd.cpu.mk | less -X
 +david:~>grep 'CPUTYPE.*==.*haswell.*' /usr/share/mk/bsd.cpu.mk 
 +    ${CPUTYPE} == "haswell"
 +    ${CPUTYPE} == "haswell"
 </code> </code>
  
-Dans l'exemple précédent, c'est un //K8// avec l'option //sse3//, définit par ''k8-sse3''.+Dans l'exemple précédent, c'est un //haswell//, ce qui donne les options suivantes: 
 +<file bash /usr/share/mk/bsd.cpu.mk> 
 +MACHINE_CPU = avx2 avx sse42 sse41 ssse3 sse3 
 +</file> 
 + 
 +Puisque l'on est sur de l'architecture (''MACHINE_CPUARCH'') ''amd64''
 + 
 +==== Résultat ==== 
 + 
 +<code bash> 
 +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 
 +</code> 
 + 
 +''Machine'' est donné comme ''CPU E3-1246''soit un //Xeon//. Il suffit de consulter la [[https://www.intel.fr/content/www/fr/fr/products/sku/80916/intel-xeon-processor-e31246-v3-8m-cache-3-50-ghz/specifications.html|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 [[https://www.intel.fr/content/www/fr/fr/products/sku/63697/intel-core-i73930k-processor-12m-cache-up-to-3-80-ghz/specifications.html|datasheet]] pour y voir le modèle ''sandybridge''
 + 
 +===== Micro-codes ===== 
 + 
 +Les architectures de type //x86// (Intel ou AMD) sont composés de couches successive dont un //micro-code// qui émule les fonctions les plus complexes. 
 +Ce micro-code est souvent mis à jour dans le cadre de correctifs, notamment lors de la découverte de failles de sécurités. 
 + 
 +Installez le port [[https://www.freshports.org/sysutils/cpu-microcode|sysutils/cpu-microcode]] ou [[https://www.freshports.org/sysutils/cpu-microcode-rc|sysutils/cpu-microcode-rc]]  pour mettre à jour automatiquement au démarrage ce code, au besoin. Notez qu'il existe des ports séparés selon le constructeur: 
 +  * [[https://www.freshports.org/sysutils/cpu-microcode-intel|sysutils/cpu-microcode-intel]] 
 +  * [[https://www.freshports.org/sysutils/cpu-microcode-amd|sysutils/cpu-microcode-amd]] 
 + 
 +Le port ''-rc'' ne permet une mise à jour qu'à la fin du processus de démarrage. C'est un service qui se règle dans ''/etc/rc.conf'': 
 +<file ini /etc/rc.conf> 
 +microcode_update_enable="YES" 
 +</file> 
 + 
 +Lancez le: 
 +<code bash> 
 +service microcode_update onestart 
 +</code> 
 + 
 +Le premier port permet aussi une mise à jour dès le début du processus de démarrage et se règle dans le ''/boot/loader.conf'': 
 + 
 +<file ini /boot/loader.conf> 
 +cpu_microcode_load="YES" 
 +cpu_microcode_name="/boot/firmware/intel-ucode.bin" 
 +# cpu_microcode_name="/boot/firmware/amd-ucode.bin" 
 +</file> 
 + 
 +Lancez une mise jour sans redémarrer: 
 +<code bash> 
 +service microcode_update onestart 
 +</code> 
 + 
 + 
 + 
 + 
 + 
 + 
  • configurer/processeur.1671714453.txt.gz
  • Dernière modification : 2022/12/22 13:07
  • de david