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:25] 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>
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.*==.*k8.*' /usr/share/mk/bsd.cpu.mk  +david:~>grep 'CPUTYPE.*==.*haswell.*' /usr/share/mk/bsd.cpu.mk  
-    ${CPUTYPE} == "k8-sse3+    ${CPUTYPE} == "haswell
-    ${CPUTYPE} == "athlon-fx" || ${CPUTYPE} == "k8"+    ${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>
  
-==== Resultat ====+Puisque l'on est sur de l'architecture (''MACHINE_CPUARCH'') ''amd64''
 + 
 +==== Résultat ====
  
 <code bash> <code bash>
 root@machine:~ # find /usr/local/etc/poudriere.d/*make.conf -exec grep CPUTYPE {} + 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/ampache-default-make.conf:CPUTYPE?=haswell
-/usr/local/etc/poudriere.d/flarum-default-make.conf:CPUTYPE=sandybridge +/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/llanura-default-make.conf:CPUTYPE?=haswell 
-/usr/local/etc/poudriere.d/machine-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/owncloud-default-make.conf:CPUTYPE?=haswell
-/usr/local/etc/poudriere.d/popeye13-default-make.conf:CPUTYPE=sandybridge+/usr/local/etc/poudriere.d/popeye13-default-make.conf:CPUTYPE?=sandybridge
 </code> </code>
  
Ligne 69: Ligne 118:
  
 ''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''. ''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.1671715549.txt.gz
  • Dernière modification : 2022/12/22 13:25
  • de david