トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2024-08-05 [長年日記]

_ [FreeBSD]Meteor Lake-Pノートでの輝度制御

Ver 6.6のdrm-kmodをロードした状態で、backlight(8)による輝度制御は成功した

  • drm-kmodは、pull request中のupdate-to-v6.6
    • 2024/08/05時点のstable/14では、linuxkpiにパッチが必要
  • stable/14(Kernel version 1401502)でupdate-to-v6.6のbuildに不足しているlinuxkpiパッチ
    • D43020 (linux/spinlock.hのinclude追加でコンフリクト有り・要修正)
    • D45844
  • gpu-firmware-intel-kmodには、まだMeteor Lake向けfirmwareが入っていない
    • Firmware本体は、linux-firmwareよりi915/mtl_*を採取可能
    • Firmware kmodのMakefileは、drm-kmod-firmwarei915kmsfw/aldp*辺りを参考に作成

但し、既に報告(pull request 283中のaokblastの報告)がある通り、Meteor LakeだとVT consoleの表示が崩れるのでそのままでは問題だらけの模様…

  • VT consoleの表示が崩れてゆくバグがある (何かの拍子にリフレッシュされて、正常に描画される瞬間があるが再び崩れる模様)
  • Xorg + modesetting driverだと、Xの画面は正常に表示される (VT switchするとVT console側の表示は崩れる)
    • XVideo extensionがサポートされていないので、動画再生負荷的には不利
    • Xrandrが使える (multi display構成が出来る)
  • Xorg + scfb driverだと、VT console同様にXの画面も崩れる (VT consoleと同様のUEFI frame bufferで描画しているから当然か)
  • Xorg + intel driver(ports-CURRENT/x11-drivers/xf86-video-intel)だと、起動しない

現状のWORKAROUND

  • VT console + Xorg/scfb driverを使い、輝度調整・外部ディスプレイを諦める
  • Xorg/modesetting driverを使い、輝度調整・外部ディスプレイ(xrandr)を活かす代わりに、VT consoleを諦める

どちらのケースもXVideoによる動画再生支援は使えない Orz

xineの動画再生だと opengl, opengl2, xshm辺りが動くが、一番軽いのが一番古い xshmな辺りが何とも…(mplayerだと表示が固まる…なにゆぇ Orz)

Intel的にはVA-APIを使うべきかと思い multimedia/libva-intel-*を一通りインストールしてみた

  • vainfoで調べた範囲では、それっぽい反応が返ってきたのはiHD driver(libva-intel-media-driver)のみ
  • iHD driverを指定してxineでvaapi video driverを試したが、vaMapBufferでエラーになる Orz

2024-08-16 [長年日記]

_ [FreeBSD]update-to-6.6の件

現時点ではportsにはまだ収録されていないが、drm-kmodには無事マージされた模様

マージ直前にさらに修正が入っているようなので、=後で新しいdrm-kmodをテストしてみよう=新しいdrm-kmodをテストしてみたが、相変わらずkldload i915kms中に確率的にスタックする事象が残っている

  • スタック発生は確定事象では無い (問題なくkldloadに成功するケースもある)
  • 発生時はkldloadから戻ってこないが、VT switch・ssh loginは可能
    • 別コンソールからxinitしてもmodesetting driver上のエラーでアボートする
  • スタックの発生地点は一ヶ所では無い模様
    • /dev/drm/* が生えた後にスタックする事例を確認
    • Video outputの列挙中にスタックする事例を古いbuildで確認

確率事象っぽぃので、タイミング競合系のバグかなぁ… Orz


2024-08-23 [長年日記]

_ [Ryzen]Ryzen 9950X

これまでの5950X, 7950X同様にいつもの店で、初回販売をゲット!

会計開始時点で、9950Xは完売・9900Xは在庫ありだった

他の店だと9900Xも含めて完売になっているところもあったようなので、 初回入荷分はかなり少なかった模様

現行運用中の7950Xなメイン機(Antec P5にてunix運用)を9950Xに更新して、 余った7950Xで5950Xなサブ機(Windows運用)を更新予定

サブ機側はマザー換装になるので、USB仕様が旧式化しつつあるケースも含めて更新するつもりで、ケース・電源・メイン機と同じASRock B650M PG Riptide WiFiと本更新でメイン機に投入予定のJEDEC仕様のDDR5-5600メモリを準備済み

一旦、これらの部品で検証環境を構築、CPUの動作確認・冷却系の機能確認・Kernel driver回りの動作確認を実施後にメイン機の筐体に移植予定

IO-dieはRyzen 7000と同様なはずなので、本運用に向けてメモリ回りの動作安定性・冷却/消費電力とOn dieセンサー(amdtemp driver)の動作確認を予定

_ [Ryzen]Ryzen 9950X仮組み

CPU・マザー(玉突きで出てくる7950X用に用意した同型)・メモリは本番機で使用予定の構成でサブ機用の筐体に仮組み実施

  • Ryzen 9 9950X
  • ASRock B650M PG Riptide WiFi (ASRockが誇るGen4 (x16/x4) + Gen3 (x1/x1エッジフリー仕様)な変態M-ATXマザー)
  • Crucial Pro 96GB Kit (48GBx2) DDR5-5600 UDIMM CP2K48G56C46U5

CPUクーラーは、いつもならNoctua NH-U12Aを使うところだが、試験的にCPS RZ620-BKをNoctua NF-A12x25 PWMファンに換装したものを導入

  • 高さはほぼ同等だが、ヒートシンク体積的にはNH-U12Aよりも有利になることを期待して導入
  • メモリースロットとの干渉は苦しくなるが、吸気側ファンを外せばアクセスに支障は無い
  • ケース幅が広ければ、素直にD15系(いまならGen2が欲しいところ)へアップデートすべきだが、Antec P5前提だと 160mmが限界

これに、試験用のNVMe SSD(WD SN770)を載せた最小構成で各種動作確認を開始

  • BIOS FlashbackにてBIOS Ver 3.06 (AGESA 1.2.0.0a Patch A)に更新
  • UEFIはFactory Defaultのまま、Memtest86 V11.0 FREEにてメモリ回りの初動テスト
    • 48GBx2の認識を確認
    • DDR5-5600動作を確認 (Ryzen 7000だと手動設定なしだとDDR5-5200動作になるところ)
    • memtest86 4周クリア(約7時間)
  • FreeBSD 14.1-STABLE(n267883)インストール実施

_ [Ryzen][FreeBSD]amdsmn/amdtemp for Ryzen 9950X

試験環境のFreeBSDで確認作業実施

  • stable/14のコードそのままでは、amdsmn/amdtempを認識しない
    • Ryzen 7950XのFamily=0x19 Model=0x61 Stepping=2に対して、Ryzen 9950XはFamily=0x1a Model=0x44 Stepping=0になっている
    • amdsmnが参照するPCI Bridgeは、Zen4と同様のvendor=0x1022 device=0x14d8 subvendor=0x1022 subdevice=0x14d8
    • amdsmn_probe内のCPU family検査コードを修正しないと認識しない(ZEN5のFamily 0x1aは含まれていないため)
    • amdtempのsensor検出コードもCPU family分岐があるので、0x1aエントリの追加・新規コード(amdtemp_probe_ccd_sensors19hの0x1a向け)が必要

とりあえず、stable/14上でコードをでっち上げ

diff --git a/sys/dev/amdsmn/amdsmn.c b/sys/dev/amdsmn/amdsmn.c
index 5af8d9aca7bd..ece8a080ec23 100644
--- sys/dev/amdsmn/amdsmn.c.orig
+++ sys/dev/amdsmn/amdsmn.c
@@ -198,6 +198,7 @@ amdsmn_probe(device_t dev)
       case 0x15:
       case 0x17:
       case 0x19:
+      case 0x1a:
               break;
       default:
               return (ENXIO);
diff --git a/sys/dev/amdtemp/amdtemp.c b/sys/dev/amdtemp/amdtemp.c
index 73a4ba86bb84..1af35ed9d09b 100644
--- sys/dev/amdtemp/amdtemp.c.orig
+++ sys/dev/amdtemp/amdtemp.c
@@ -227,6 +227,7 @@ static int32_t     amdtemp_gettemp15hm60h(device_t dev, amdsensor_t sensor);
 static int32_t        amdtemp_gettemp17h(device_t dev, amdsensor_t sensor);
 static void   amdtemp_probe_ccd_sensors17h(device_t dev, uint32_t model);
 static void   amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model);
+static void   amdtemp_probe_ccd_sensors1ah(device_t dev, uint32_t model);
 static int    amdtemp_sysctl(SYSCTL_HANDLER_ARGS);

 static device_method_t amdtemp_methods[] = {
@@ -314,6 +315,7 @@ amdtemp_probe(device_t dev)
       case 0x16:
       case 0x17:
       case 0x19:
+      case 0x1a:
               break;
       default:
               return (ENXIO);
@@ -473,6 +475,7 @@ amdtemp_attach(device_t dev)
               break;
       case 0x17:
       case 0x19:
+      case 0x1a:
               sc->sc_ntemps = 1;
               sc->sc_gettemp = amdtemp_gettemp17h;
               needsmn = true;
@@ -536,6 +539,8 @@ amdtemp_attach(device_t dev)
               amdtemp_probe_ccd_sensors17h(dev, model);
       else if (family == 0x19)
               amdtemp_probe_ccd_sensors19h(dev, model);
+      else if (family == 0x1a)
+              amdtemp_probe_ccd_sensors1ah(dev, model);
       else if (sc->sc_ntemps > 1) {
               SYSCTL_ADD_PROC(sysctlctx,
                   SYSCTL_CHILDREN(sysctlnode),
@@ -886,3 +891,24 @@ amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model)

       amdtemp_probe_ccd_sensors(dev, maxreg);
 }
+
+static void
+amdtemp_probe_ccd_sensors1ah(device_t dev, uint32_t model)
+{
+      struct amdtemp_softc *sc = device_get_softc(dev);
+      uint32_t maxreg;
+
+      switch (model) {
+      case 0x40 ... 0x4f: /* Zen5 Ryzen "Granite Ridge" */
+              sc->sc_temp_base = AMDTEMP_ZEN4_CCD_TMP_BASE;
+              maxreg = 8;
+              _Static_assert((int)NUM_CCDS >= 8, "");
+              break;
+      default:
+              device_printf(dev,
+                  "Unrecognized Family 1ah Model: %02xh\n", model);
+              return;
+      }
+
+      amdtemp_probe_ccd_sensors(dev, maxreg);
+}

一応、それらしい数値が返ってくる模様

% dmesg -a | grep ^CPU
CPU: AMD Ryzen 9 9950X 16-Core Processor             (4292.17-MHz K8-class CPU)
% dmesg -a|grep ^amd
amdsmn0: <AMD Family 1ah System Management Network> on hostb0
amdtemp0: <AMD CPU On-Die Thermal Sensors> on hostb0
amdtemp0: Found 32 cores and 1 sensors.
% sysctl dev.amdtemp
dev.amdtemp.0.ccd1: 34.0C
dev.amdtemp.0.ccd0: 36.1C
dev.amdtemp.0.core0.sensor0: 42.6C
dev.amdtemp.0.sensor_offset: 0
dev.amdtemp.0.%parent: hostb0
dev.amdtemp.0.%pnpinfo:
dev.amdtemp.0.%location:
dev.amdtemp.0.%driver: amdtemp
dev.amdtemp.0.%desc: AMD CPU On-Die Thermal Sensors
dev.amdtemp.%parent:
% sysctl dev.cpu.0
dev.cpu.0.temperature: 41.5C
dev.cpu.0.cx_method: C1/hlt C2/io C3/io
dev.cpu.0.cx_usage_counters: 205233 0 0
dev.cpu.0.cx_usage: 100.00% 0.00% 0.00% last 443us
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_supported: C1/1/1 C2/2/18 C3/3/350
dev.cpu.0.freq_levels: 4300/5250 3000/2550
dev.cpu.0.freq: 4300
dev.cpu.0.%parent: acpi0
dev.cpu.0.%pnpinfo: _HID=ACPI0007 _UID=0 _CID=none
dev.cpu.0.%location: handle=\_SB_.PLTF.C000
dev.cpu.0.%driver: cpu
dev.cpu.0.%desc: ACPI CPU

2024-08-26 [長年日記]

_ [Ryzen][FreeBSD]math/openblas on Ryzen 9950X

コンパイルエラー、Meteor Lake同様 cpuid_x86.cが未対応の模様

AVX512/BF16サポートだと思うので、TARGET_CPU_ARCH=COOPERLAKEでよい模様…


2024-08-27 [長年日記]

_ [Ryzen][SAD]SAD bench2.sad比較

  • amorita forked branch r7938
  • GNU Fortran 13.2 + FreeBSD clang 18.1.6
  • Optimize Option: -O3 -fno-strict-aliasing
CPU FunctionOpticsTrackingMatchingOverall
Ryzen 9950X0.5360590.8007310.4055040.0532680.025883
Ryzen 7950X0.6730461.0035160.4710270.0681780.032095
Ryzen 5950X0.8729461.2706970.5692710.0842440.040828
Ryzen TR 2950X1.1667681.8300070.5474400.1214080.053810

Single threadなbench2.sadに関しては、Zen+→Zen3→Zen4→Zen5で順当に早くなっている

Zen4->Zen5でも20%程度のゲインがある模様


2024-08-31 [長年日記]

_ [Ryzen][FreeBSD]Ryzen 9950X buildworldストレステストまとめ

本番投入に向けたストレステストにてPBO関連の特性を併せて確認した

  • Curve Optimizer補正を-20mV → -30mV → -40mVと深くすると…
    • アイドル電力が下がる
      • 同一クロックで電圧下げてる形なので順当と思われる
      • システム電力45W対して1W弱の変動
    • 高負荷時のbuildworldラップタイムが縮む(早くなる)が、最大電力はほぼ同じ
      • ラップタイム変動は2%程度
      • 電力は、PBOによる総電力規制で制御された模様
      • 電圧低減で、電力辺りのクロックが伸びた分早くなっていると思われる
      • -30mVは24時間の耐久ビルドに耐えたが、-40mVだと2時間ほどでハングアップした(memtest86 4周・7時間には耐えた)
        • ハングアップ時は、画面表示が消える(内蔵GPU出力だからか?)・CPUファンが停止していた(Tctl制御だからか?)

安全マージンを考えると、PBO Tctl85℃規制・Curve Optimizer -20mV辺りで本番環境にセットアップかなぁ?

_ [Ryzen][FreeBSD]Ryzen 9950X運用投入

本番機のRyzen 7950X + DDR5-5200 32GBx2を試験が終了した Ryzen 9950X + DDR5-5600 48GBx2に更新実施

本番機から外した 7950XでサブのWindows11機を更新予定

まずは、サブ機更新用の筐体で、冷却系の動作確認他を実施予定


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記