トップ 最新 追記

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|

2022-10-01 [長年日記]

_ [Ryzen]Ryzen 7950X組んでみた

マザーにCPUとクーラー本体取り付け後、ケースに入れる手順だが、 バックパネル裏に配置されているCPU12V 8pinコネクタの作業性がかなり悪い

CPU12V 8pinコネクタ周辺はVRMのヒートシンクに囲まれるので、天板が外れないケースの場合、手を入れるスペースが確保出来ない

マザー固定前に少しずらした状態でコネクタを接続して置くのが正解の模様、 天板が塞がっている場合、下側からのアプローチする形になるので、NH-U12Aだと排気側のファンを外しておくと作業しやすい

あと、ROG CROSSHAIR X670E GENEの場合、M-ATXのPCIe最上段スロット右側のネジ穴がロックリリース機構がレイアウトされて潰れているので、ベースから受け座を外しておくこと

起動確認・memtest開始

とりあえず、拡張カード/ストレージ無しの状態にType-C alt mode→HDMIアダプタ経由のコンソールで起動試験実施

UEFI設定画面を確認して、メモリ回りのAMD EXPO設定を有効にしてから、memtest86開始

memtest86動作中のCPU温度(POST LED)とシステム電力(ワットメーター)は、50℃/150W ~ 60℃/190W

同一ケース・同一ファンの運用機より排気音が少しうるさいのだが、 どうもマザー上のファンコネクタだが、CPU関連とケースファン1系統以外はフルスピード固定の模様

4pinファンコネクタだがマニュアル上の名称がFS_FAN#なので、初期設定というより回転数制御自体が未実装の模様

必要なら負荷試験の様子を見ながら、排気側ケースファンにLNA追加して調整かなぁ…

ファン配線変更

フロント吸気系をCHA_FANPに、バック排気系をCPU_OPT(CPU_FAN連動)に配線変更

FreeBSDインストーラ

13.1-RELEASEのインストーラUSBだと、atkbdc0とuart0を認識したところで停止してしまう模様

あとで、13-STABLE/SNAPとか14-CURRENTを試してみよう…14-CURRENT 2022/09/30 n258315のmemstick版も同じ所で固まる

Ryzen 5950Xで動いているFreeBSD 13-STABLEのdmesgからの類推だと、その後はhwpstate周りなのでcpufreqドライバ周りの対応が必要?

OCCTによる初動負荷試験

動作テスト用のWindows10環境を構成して、OCCT11.0.12にてテスト実施

  • CPUテスト16core(SMT off)だと全コア平均5.2GHzでTcpu~95℃の状態で安定化する
  • CPUテスト1core(SMT off)だと動作coreがホッピングするようで、安定に計測できていないが最大クロックは5.6~5.7GHz出ている模様
  • Linpackテストでエラーが出る (memoryをAMD EXPOからJEDEC Normalに戻しても変わらず)

なんか、FP回りの動作が不穏

他のLinpack系テストツールでもエラーが出ており、Ryzen MasterでECOモードなどでクロック・電力制限をかけた状態でも再現している

MultipassなLinpackテストだと、passとFAILが両方あり、passのケースではresidual一定(計算が所定の誤差で再現している)だが、FAILのケースのresidualが一定していない(計算毎に結果がバラついてる)

OCCT Linpackエラー

電力不足を疑いCPU 12V 8pin x1を x2に増設したところ、JEDEC Normal/OCCT Linpack AMD64では出なくなった模様前回と違い開始1分では出ないが、10分過ぎた辺りから発生し始めた

当然だが、CPU 12Vライン改修直後はコールドスタートなので、コンポーネント温度が原因?

CPU温度に関しては開始直後に飽和しているで、それ以外のコンポーネントか?

電源電圧の不安定化であればVRM温度、CPU以外でベンチマークコードの実行結果に直接関わるのはものは、メモリーバス(バックプレーン)とDDR5メモリ本体(データ化けが起こっているのならば説明が付くが、memtestでかからないのはなぜ?アクセス頻度の違いで稼働温度が異なるのか?)

状況的にCPU向けの12Vラインが、FP負荷時の容量不足による不安定化してるぽぃが、マザーのマニュアルではCPU 12V 8pinの接続はx1 or x2と記述されており、TDP枠からの要求が記述されていないのでドキュメントのミスな気がする

マザーごと換装するケースでは、既設のCPU 12V 8pin x1を流用してハマる臭い(TDP105Wの 7700X/7600Xは問題ないのかも)

DIMM冷却試験

LinpackベンチでFAILが出ている状況とDIMM周りをブロアで吹いた状況でLinpackベンチがpassする状況(まだ積算時間が短い)を比較してみたが、 DIMM SPD Hub Temp.にて40℃未満はpass・45℃以上だとFAILしているように見える

検証用のファンを設置して長時間試験を企画中…

現時点の調査課題まとめ

  • OCCT Linpackテストでエラーが出る件
    • DIMMモジュールにファンを設置して、SPD Hub Tempを40℃以下に抑えた状態で長時間テストを行い因果関係をはっきりさせる
    • 120mmファンで風を流しても、Linpack負荷だと15分ほどで平衡温度43℃に達する模様
      • 40℃を越えるとぽつぽつLinpackエラーが出てくる
      • 近傍空気温度25℃環境にて、平衡温度はアイドリング 30℃、OCCT CPUテスト中 32.5℃程度
        • OCCT CPUテストで不具合が出てないのは、メモリフットプリントが小さく負荷がかかってないからか?
      • OCCT MEMテスト実施、1~2分ほどでTspd 40℃を突破、41℃辺りからメモリエラーが検知され始める
    • エアコン全開でガクガク震えながら環境温度を22℃まで下げると、OCCT Linpackはエラー無しで動くようになったTspd~40℃で平衡
      • OCCT MEMテストでは、Tspd~40℃越える辺りからやはりエラー多発
    • 万策尽きて、検証用のドノーマルのDDR5モジュール用意すべきか考えたが、だめもとでUEFIファームアップデート実施
      • Ver.0420 @ 2022/08/10 (AGESA 1.0.0.1) → Ver.0614β @ 2022/09/23 (AGESA 1.0.0.2)
      • DDR5-4800 ノーマルで OCCT MEMテスト Tspd~50℃の状態 (冷却は標準状態に復帰)でクリア
  • FreeBSD memstickインストーラがブートしない件
    • 14-CURRENTベースで検証を継続する
    • boot verboseモードでスタックしている部分を絞り込む
      • ドライバの無効化を試みる uartドライバの無効化で起動可能になる
        • hint.uart.0.disabled=1 (こちらは不要かも)
        • hint.uart.1.disabled=1

2022-10-02 [長年日記]

_ [Ryzen]7950X/X670E GENEの不具合まとめ

  • OCCTにてLinpack・メモリテストでメモリアクセス負荷をかけた際にDIMM SPD Hub Temp.が高くなる(Tspd~40℃)とエラーが出る
    • Firmwareアップデート(Ver.0420 -> Ver.0614β)で解決
      • AGESA更新(1.0.0.1 -> 1.0.0.2)が効いてる?
      • Tspd~60℃付近でも5分程度の検証ではエラー無しになっている
    • DDR5-5200 AMD EXPO設定にて、OCCT/Linpack Extremeにて長時間の安定度検証を実施する
  • FreeBSDインストーラがスタックする件
    • 14-CURRENTに関しては、uartドライバの無効化で解決
      • hint.uart.1.disabled=1
    • /boot/device.hintsから予めhint.uartを除外した13.1-RELEASEインストーラは起動する
      • igc0: Setup of Shared code failed, error -2でonboard NICのattachに失敗する
      • 同様の設定の13.1-STABLE(2022/09/30 n252545)インストーラは、igc0を問題なく認識する

X670E GENEのデバイス認識

  • onboard NICは、igc
  • onboard audioは、uaudio

_ [Ryzen]7950X/X670E GENE連続負荷試験(1)

  • Windows10テスト環境
    1. OCCT CPUテスト 1時間クリア
    2. OCCT メモリテスト 1時間クリア (Tspd 最大70℃)
    3. OCCT Linpackテスト(AMD64) 1時間クリア
    4. OCCT Linpackテスト(2012) 1時間クリア
    5. OCCT Linpackテスト(2019) 1時間クリア
    6. OCCT Linpackテスト(2021) 1時間クリア
    7. Linpack Xtreme Stress Test 8GB 100パス
    8. Linpack Xtreme Stress Test 30GB 100パス

2022-10-03 [長年日記]

_ [Ryzen][FreeBSD]buildworld+buildkernel benchmark

7950X/X670E GENEにFreeBSD 13-STABLEの試験環境をインストールしたので、 既設の本番環境と同一ソースツリーでbuildworld+buildkernelの時間を計測してみる

ArchZen4/TSMC 5nmZen3/TSMC 7nmZen2/TSMC 7nmZen+/TSMC 12nm
CPURyzen 7950X (16C)Ryzen 5950X (16C) Ryzen 3700X (8C)Ryzen TR 2950X (16C)
CLK4.5-5.7GHz3.4-4.9GHz3.6-4.4GHz3.5-4.4GHz
MEMDDR5-5200 32GBx2DDR4-3200 16GBx2DDR4-3200 16GBx2DDR4-2400 16GBx2
-j1610:06.35 1490.1%/76℃/260W20:17.22 1216.2%/78℃ N/A 27:33.40 1304.7%
-j1212:44.97 1149.1% 75℃/235W22:37.59 1091.0%/76℃ N/A 32:39.57 1106.2%
-j8 17:59.29 786.1%/68℃/185W29:36.20 782.7%/73℃31:35.65 779.2%43:27.28 775.1%
  • すべて、SMT off運用
  • 12/16並列時の5950X環境の稼働率が若干低いのは、メイン機で他のタスクロードが同居しているため
  • buildworldだと、Zen2/Zen3の差は結構微妙 (Zen3/Zen+はかなり差が出た記憶があるが…)
  • 8並列で見ると、Zen4/Zen3で64%違う (5950Xの稼働コアがバックグラウンドタスク分多いので、ブーストが効いていない?)

_ [Ryzen][SAD]SAD bench2 on Ryzen

amorita branch r7688にて計測 (MAIN trunkと大幅に値が違うので比較する際には注意)

ArchZen4/TSMC 5nmZen3/TSMC 7nmZen2/TSMC 7nmZen+/TSMC 12nm
CPURyzen 7950XRyzen 5950XRyzen 3700XRyzen TR 2950X
CLK4.5-5.7GHz3.4-4.9GHz3.6-4.4GHz3.5-4.4GHz
Function 0.6088230.9432511.0735481.204148
Optics 0.9646491.2991351.5290041.826535
Tracking 0.4444710.5887110.7164980.541115
Matching0.0632790.0844670.1011490.121333
Overall 0.0298330.0430030.0500050.054597

single threadベンチで、Zen3→Zen4で20~30%の向上はカタログ値通り


2022-10-04 [長年日記]

_ [Ryzen][FreeBSD]buildworld+buildkernelストレステスト

Ryzen 7950X全コア投入の buildworld+buildkernelをエンドレスで実行するストレステストを実施中

Ryzen Threadripper 2950Xの立ち上げ時には、CPU Errataでmulti thread loadをかけ続けるとハングしたりしたんだが、Zen4はどうなるかなぁ…

このストレステストが問題無く通れば、本番運用に向けた作業に移れる…

  • アイドル電力の確認と必要ならpowerdの投入(初動試験時の様子からは、CPU・firmware側でうまくやってる感じなので必要なさそうだが)
  • 拡張カード類との接続互換性の確認
  • 冷却ファンカーブの調整(冷却と騒音のバランス取り)

FreeBSD 13-STABLEによるサポート状況

Ryzen 7950X

  • hwpstate/cpufreq - 最低限動く、freq_levels4500/56253000/2550の2レベル
  • amdtemp - 現時点では未サポート
  • 内蔵GPU - graphics/drm-510-kmodは未サポート(Linux本家の作業とマージ待ち)
    • Vendor ID 0x1002, DeviceID 0x164e

ASUS ROG X670E GENE

  • 内蔵NIC - igcドライバで認識、但し13.1-RELEASEではprobe/attachでエラーになる (2022/09/30付けのSTABLE SNAPSHOTインストーラーはOK)
  • 内蔵音源 - uaudioドライバで認識
  • 無線LAN/Bluetooth - Disableにしてあるので未検証
  • 2022/09/30時点の13-STABLE/14-CURRENT SNAPSHOTインストーラーでは、uart1のprobeでハングアップする
    • hint.uart.1.disabled=1で回避可能
  • 未認識デバイス
    • IOMMU/base peripheral vendor=0x1022 device=0x14d9 subvendor=0x1043 subdevice=0x8877
    • FCH SMBus Controller vendor=0x1022 device=0x790b subvendor=0x1043 subdevice=0x8877
    • Thunderbolt 4 NHI vendor=0x8086 device=0x1137 subvendor=0x1043 subdevice=0x87f6
    • VanGogh PSP/CCP vendor=0x1022 device=0x1649 subvendor=0x1043 subdevice=0x8877

_ [Ryzen][FreeBSD]buildworld+buildkernelラップタイム

7950X 16並列のstable/13上でのbuildworld+buildkernelラップタイムのdev.cpu.0.freq依存性を調べてみる

dev.cpu.0.freqbuildworld+buildkernelTcpu/PowerPidle
4500 10:06.35 1490.1% 76℃/260W 79W
3000 16:21.97 1486.3% 47℃/100W 64W
  • クロック下げた方が、ワークロード辺りのエネルギー効率が40%高い
  • powerdを使うとアイドル電力を25%削減する余地がある

_ [Ryzen]B650マザー

公式情報が流れ始めているが、小型サーバー用途だとASRock B650M PG Riptide WiFiがスロット配置的に使いやすそうですねぇ…

PCIeスロット構成が上から x16 Gen4, x1 Gen3, x1 Gen3, x8 Gen4な並びで、x1スロット2個がエッジフリーかつ slot2/3付近にM.2が割り当てられて居ないので、x1帯域になるが x16カードが余裕を持って挿せる上に、Gen4な x8カードを2枚実装出来る (例えば、x8 Gen4な 100G/200G NIC + x8 SAS HBA)

さらに、DIMM4スロットに、M.2 x4 Gen5 + x4 Gen4入るのが小型鯖向けとしては○

さすがにB650なせいか内蔵2.5G NICがRealtekでUSB4が無いのだが…

ASUS ROG X670E GENEは早まったかも… いや、こっちはIntel 225だしUSB4も付いてるしUSB3ポート山盛りだ(w


2022-10-05 [長年日記]

_ [Ryzen][FreeBSD]Ryzen 7950XストレステストとVGAカードテスト

連続buildworld+buildkernelによるストレステストは40時間越え確認

テストは一旦中断して、x1スロット化改造したMSI GT1030を接続した動作確認実施

  • コンソールのVGA出力
  • x11/nvidia-driverによるXorgの起動

を確認した

Xorgに関してはxorg.confnvidiaドライバにBusIDオプションを付与しないとデバイスが見つからない

GT1030を使っている旧来のRyzen 5950X/X570M Pro4環境だとBusID無しで見つかるので、Ryzen 7950Xの内蔵GPUと併せてVGAデバイスが複数存在するのが原因と思われる

xorg.conf(5)にはBusIDパラメータは、PCI:bus@domain:device:functionと記述されているが、どうやらnvidia-driverの解釈は違うようで…

pciconf -lの出力がvgapci0@pci0:8:0:0ならBusIDPCI:8:0:0を設定しないと認識しない

最初、BusID指定が効かなくてかなり悩んだ

残るデバイステストはConnectX-4 Lxの接続試験だが、運用機に装着した本番カードしか無いので、スケジュールを調整して動作確認したらそのまま現行運用機と入れ替えかなぁ…


2022-10-08 [長年日記]

_ [Ryzen][FreeBSD]X670E GENEにConnectX-6Lx実装

PCIe Gen5 x16スロットにConnectX-6Lx(QNAP QXG-25G2SF-CX6)を挿入、起動試験実施、他のデバイスに影響なく認識・起動することを確認

偶に、起動しなくなる・リソース衝突で他のデバイスが見えなくなるなどがあるので油断できない(w

一応、移植予定のSSD類以外は最終形態で動作確認が完了


2022-10-11 [長年日記]

_ [Ryzen]B650マザー

AsrockのページにB650Mの正式仕様が出ていたが、残念ながら PCIe 1/4は、CPU側 x16 + チップセット側 x4な組み合わせなので、x8/x8では使えない模様

小型ストレージ鯖用途だど、PCIe4の x4スロットに10G/25G NICを挿して、PCIe1 x16スロットはSAD/NVMe HBAを挿す構成ですかねぇ…

Gen4なので帯域はx4で78Gbpsなはずなので、ギリギリ25Gbps ethernet x2だ通るので、そこそこおもしろい代物になるはず

25G ethernetで遊ぶ前提だと、Gen4世代のカードが必要なのでMellanox ConnectX-6 LxとかIntel XV710あたりが最低ラインに…

AsrockのB650Mマザーだと、PCIe2/3の x1スロットがエッジフリーかつM.2で邪魔されない構成なので、1スロット版の軽めのx16 VGAカードが追加出来るのが他のメーカーに対するメリット(鯖用コンソールだとマザー側のDP/HDMIで充分だが…)

他のメーカーだとx16 + x4構成で間がM.2で埋まっている or x1もあるけどエッジフリーで無い or x1のすぐ右側がM.2で埋まっているレイアウトが多い模様

2022/10/14追記

Asrockのサイトから拾ったマニュアルのブロック図を読んでみたが、PCIE4(x4)とM.2 Gen5(x4)がCPU側から生えている

チップセット横のM.2 Gen4(x4)は、チップセット側から生えている

どうやら、PCIE4はThunderboltカードを挿すことを想定してCPU直結にしている模様なので、PCIE1, PCIE4, M.2 Gen5は干渉せずにフル帯域出る模様…

_ [FreeBSD]ztmp poolの作り方

とりあえず、作業メモ

# gpart add -t freebsd-swap -b 2048 -s 64g -l swap0 nvd#
# gpart add -t freebsd-swap                -s 64g -l swap1 nvd#
# gpart add -t freebsd-zfs                                -l ztmp    nvd#
# zpool create -O atime=off -O compression=lz4 -O mountpoint=none ztmp /dev/gpt/ztmp
# zfs create -o canmount=off -o mountpoint=/usr ztmp/usr
# zfs create ztmp/usr/obj

2022-10-13 [長年日記]

_ [Ryzen]X670E GENE 新ファーム

2022/10/11付けでV0705(AGESA 1.0.0.3 patch A)が出ている

週末の機材入れ替え前に、更新・テストですかねぇ更新実施、OCCT/Linpack Extreme等でテストしているが、数時間で摘発できる不具合は無い模様

_ [艦これ]2022晩夏イベント

攻略自体は、10/12に甲甲甲甲乙乙で完走

E5-2甲輸送5割ぐらい進めた時点で残り時間がヤバくなって戦車諦めて乙へ落とした Orz

  • 鵜来・夏雲 - E1/E2クリア直後に発掘済み
  • Massachusetts - E5-4乙 S勝利クリア時にドロップ
  • Brooklyn - 完走後に発掘作業中(E4-1遊撃・E4-2輸送)
    • E4-2水上も試したけど道中の被害がねぇ…(退避2回実施でもS取れるのはいいのだが)
    • E4-1は、ボス前で警戒陣引くと辛い…(ボスSは楽なのだが)
    • E4-2は、ボスが固いのでカットイン鑑並べても偶に取り逃がすことが…
      • E4-2で、Janus(4・5隻目)・Jervis(3隻目)がドロップ

Brooklyn来た~

E4-2甲 輸送堀で着任…

これで、今回のイベントは堀を含めて終了


2022-10-14 [長年日記]

_ [Ryzen]7950Xの負荷と冷却

主要な使用用途(数値計算)に類するLinpack ExtremeによるFP負荷を全コアでかけているケースだと、PPT 230W枠は80%占有状況で、Tctlがほぼ95℃に到達しており、冷却限界でパワーが制限されているようにも見えるが、 その状況でTDC 160A枠が既に100%に達してこれ以上パワーが出ない状況の模様

従って、少なくとも数値計算負荷メインならNH-U12Aで充分使い物になる模様(AMD公式はTctl 95℃制限は連続負荷で安定運用可能な制限値とのこと)


2022-10-15 [長年日記]

_ [Admin][Ryzen]Ryzen 7950X運用投入

Ryzen 5950X機からストレージを引き継いで、運用系に投入開始

実装メモリが DDR4-3200 16GBx2から DDR5-5200 32GBx2に増えているので、 Webブラウザがぱくぱくメモリーを食い散らかしてもスワップしなくなるはず (以前は、16GBぐらいスワップしていた)

swap/usr/obj用にNVMe M.2モジュールを載せているのだが、かなり早くなった模様(sequential readで測定)

System NVMe kB/t tpsMB/secT[℃]
5950X/X570 WD SN750256 4642 1162 47
7950X/X670EWD SN850256 19200 4810 39

というか、以前のシステムのSN750が全然カタログ値でてないぞ

バス的には5950X側のPCIe Gen4 x4につながっているはずなのだが、 レーン数の割り当て減ってる?それとも温度環境が悪くスロットリングされてる? (Asrock X570M Pro4のヒートシンク付きM.2スロットなのだがエアフローに問題あったか?)

UEFIからSecure Erase/SanitiseしてからSN750を再計測すると3000MB/secまで出た

SSD内部の記憶セルがフラグメントしていると性能が出ないのかなぁ…

あと、X570M Pro4実装時に温度が高かった件だが、同もM2_1のヒートシンクカバーがチップセットのヒートシンクと一体成形なので、端以外の熱結合が悪かった模様(サーマルパッドが端のネジそば以外伸びていない)


2022-10-16 [長年日記]

_ [Ryzen]16コアRyzenで作ったAntec P5マシン達

Antec P5に夢とロマン(16コア)を詰め込んだマシン達

初号機

Ryzen Threadripper 2950X + ASRock X399M Taichi

筐体の吸排気系は、吸気側 NF-A12x25 PWM x2、排気側 NF-A12x25 PWM x1

CPUクーラーは、最終的には Noctua NH-U12S-TR4-SP3の標準ファンを NF-A12x25 PWM x2に換装して、NH-U12S DX-3647相当に改修したものを使用

Noctuaの公式データだと、 ノーマル状態のNH-U12S-TR4-SP3は NSPR 129に対して、NH-U12S DX-3647は NSPR 157

実際、公称TDP 180WのRyzen TR 2950Xを冷やし際、 最初に導入した TR4対応水冷ヘッドでTDP250W対応を自称していた簡易水冷 ELC-LTTR240-TBPに対して、 我がNH-U12S-TR4-SP3改は、連続負荷状態でのTdie平衡温度 -10℃を叩き出している(240mm簡易水冷より冷えた&静かだった)

CPU挿入したらTR4ソケットの蓋がしまらないエラッタ品を掴んだのはいい思いで(解禁当日昼に購入、持ち帰り不具合発覚、当日夕方にショップに持ち込み初期不良と認定され交換対応)

マルチスレッド負荷でハングアップする系のCPUエラッタもあり、安定稼働するAGESAファームが出てくるまで実用に耐えなかった…(ファーム出た後は安定したのだが、検証作業を行う時間が取れなくて実戦投入が遅れた)

二号機

Ryzen 5950X + ASRock X570M Pro4

筐体吸排気は初号機を踏襲、CPUクーラーはNoctua NH-U12A

マザーはZen2時代から存在していたもの & NSPR 169に対してTDP 105Wなので大きなトラブルもなく簡単に仕上がった

ASRock X570M Pro4は、UEFIファームに入るところが微妙に不安定でじゃじゃ馬(ホットリスタートからUEFI画面に入るところで相応の確率で固まる、コールドスタート時はOKっぽぃ)なのですが、それ以外は問題なく動きます

同じX570マザーでもATXサイズの Gigabyte X570 AUROS PRO(Ryzen 3700X運用)にはそんな挙動は無いので、ファームのバグなのかなぁ…(癖が分かっていれば対処できるので致命的ではないけど…)

三号機

Ryzen 7950X + ASUS ROG X670E GENE

筐体吸排気は初号機を踏襲、CPUクーラーはいつものNoctua NH-U12A

マザーへの配線(CPU 12V 8pinx2)で苦労したのと、出荷状態の初期ファーム(グローバルの解禁日前日にβファームが出てる時点で察するべきだった)だとメモリI/O負荷をかけるとぼろぼろデータ化けする以外は初物にしては大きな問題なく立ち上がった

TDP 170W(PPT 230W)だけど、数値計算用なので SMT offで16コアの並列FP負荷を想定したLinpackによる負荷試験だと平衡状態で Tctl~95℃・PPT 80%・TDC 100%まで回った実績あり (Ryzen Masterで見る限り、4.9~5.1GHz辺りが出ているようなので満足)

マルチコアのメモリテスト負荷だと、PPT 80%にも届かずにTDC100%までいくので、DDR5インターフェースが電気食べてる?

メモリ構成は、AMD EXPOなDDR5-5200 OCメモリなのでその影響もあるかも?

本番環境投入前の各種ベンチマークから、手元の実用負荷だと1号機とほぼ同等の電力枠で、シングルスレッドの数値計算で2倍、並列コンパイル負荷でほぼ3倍の性能が出ている(Zen+/12nm → Zen4/5nmなので電力効率が全然違うのは当然なのだが…)


2022-10-19 [長年日記]

_ [FreeBSD]net/aquantia-atlantic-kmod ビルド出来ない

packages build cluster上でもビルドできない模様だが、手元の環境だと

  • stable/13-n252735-67d863df083 (1301507) OK
  • stable/13-n252805-a8925e0e578f (1301508) NG

で、直接の原因は/usr/include/sys/systm.h(/usr/src/sys/sys/systm.h)の変更で pauseマクロだったものを関数ポインタを拾えるようにstatic inline関数に置き換えた結果、/usr/include/unistd.hの int pause(void) APIと定義衝突している

aq_hw.c @ L35#include<unistd.h>を外せば、コンパイル自体は出来るが、生成されたコードは未検証

あとで、コンパイル可能な環境で、アセンブラ出力が変わるか調べてみるか?cc -sで吐き出すaq_hw.cのアセンブラコードは、unistd.hインクルードの有無で変わらない模様

https://cgit.freebsd.org/src/commit/sys/sys/systm.h?h=stable/13&id=fe9e99ff9c9d9028dccb1bb1537af46beabcb691

2022/10/21追記

unistd.hのインクルードを外す修正で問題なく動作することを確認した

当方では、net/aquantia-atlantic-kmod/Makefile.localに以下のコードを置いて対処した

post-patch:
        @${REINPLACE_CMD} -e 's|^\(#include <unistd.h>.*\)|//\1|' ${WRKSRC}/aq_hw.c

13.1-STABLEでの注意点は、1301508から1301509の間にABI変更があり、1301508環境でビルドしたモジュールを1301509なカーネルに読み込むと、aq0を認識する所までは問題ない進むが、通信を開始するとpanicする

この状態になってしまうと、コンソールでloader menuにアクセスする必要があるので、リモート運用だと注意が必要

更新手順としては次のようなパターンが考えられる。

  • 事前にドライバのソースをローカルストレージに設置し、モジュールロードを外した状態で再起動を行い、portsを再インストール・通信動作の確認後にもとの設定に戻す
  • 別の1301509環境で作成した aquantia-atlantic-kmodパッケージを対象環境に持ち込み、installkernel後にパッケージを入れ替え再起動する

特に後者の手順(別途、ビルド環境が必要だが)だとリモート更新できるが、失敗するとコンソールに走るハメになる

遠隔地の場合はZFS-BEを活用してpanicからの再起動時に旧環境から起動するように仕込むなどの準備が必要


2022-10-21 [長年日記]

_ [Ryzen]ASRock B650M PG Riptide WiFi販売日確定

現時点の汎用B650 M-ATXマザーの決定版と思しきASRock B650M PG Riptide WiFi販売日が2022/10/28と正式発表された

https://ascii.jp/elem/000/004/109/4109995/

11月初旬までのRyzen 7000シリーズとASRockマザーの同時購入割引キャンペーンの対象商品に掲載されていたので、それまでに販売が始まるとは思っていたが少し遅めですねぇ…

まあ、今週だとZ790マザーのローンチとかぶるから後回しになったのだと思うが…

_ [Ryzen]PCIe WoL on ASRock X570M Pro4

Ryzen 7950X/ROG X670E GENE導入まで主力だった Ryzen 5950X/ASRock X570M Pro4を 玉突き入れ替え向けに試験していたのだが、 X570M Pro4は普通のPCIe NICでは WoLできない模様

他の機材で、WoL実績ありのAQ107 NICを挿しても S5だとHubとリンクアップしない Orz

UEFIファーム側の電源制御周りの設定を確認・調整したがダメぽぃ (ネットで調べると、動かない系の報告事例がちらほらと…)

10G NICからWoLでWindows機兼サブ計算機として運用中の Ryzen 3700X/X570 AUROS PROを置き換えるつもりだったのだが、 PCIe NICからWoL出来てるX570 AUROS PRO(ATX)を継続使用することになりそう…

更に、その後の使い回しをする際に M-ATXだと 詰め込める筐体の選択肢が広がるのでX570M Pro4使いたかったのですがねぇ…


2022-10-22 [長年日記]

_ [FreeBSD]net/aquantia-atlantic-kmod with multi core

aq driverは、iflibフレームワークで動いているので、デフォルトのTX/RX queueの数は接続バス上のプロセッサのコア数になっている

Ryzen 3700X(8C)からRyzen 5950X(16C)への換装で、 queueが 8個から 16個に増えたら通信障害が多発

症状は、TCPはすごく遅い(多分再送多発っぽぃ)とか、外向きのpingは問題ない(ように見える)が、外部からのping着信に答えないなど

どうも、TX/RX queueが増えてもハードウェア的にハンドル出来ていない模様…

本来は、aq driver側でNICがサポート可能な最大 queue数を iflibフレームワークに伝えるべきなのだろう

当座のワークアラウンドは、iflibフレームワークのtuning knobで TX/RX queueを動作実績のある数まで絞る(例えば、8 queue)

dev.aq.0.iflib.override_nrxqs=8
dev.aq.0.iflib.override_ntxqs=8

sysctl(1)でも書き込める変数なのだが、iflib(4)に書かれている通り、参照されるのはドライバ初期時なので、/boot/loader.confに記述するか aq driverをロードする前にkenv(8)で設定するのが正解(ロード前は、sysctlノードはまだ生えていないぞ!)

netioによるTCP接続ベンチマークで、X550-T2とかだと普通に10Gbpsまで伸びるGen3 x4バス接続で、3~4Gbpsまでしか出ないのが難なのだが、現時点でWoL出来る10G PCIe NIC Cardってこれしか見つけていない Orz

2.5Gだと、I225とかRealtek 8125辺りはオンボード実装でWoLサポートしているので、WoLできるPCIe Cardがあるかも知れんが、速度的にはAQC107ほんの少し速い罠 (NBASE-T対応10Gスイッチなので、素直に性能が出る5GBASE-TなWoL PCIe NIC出てきたら考えるかも)

いや、一応複数ストリームなら 9Gbps越えしてくるから、rsync複数立てとかだと性能が出るのだが、Tbyte級のファイルをNFS越に流し込むとかのケースで性能が頭打ちに (X550とかだともう少し素直に性能が伸びる)

状況的には、aq driver - userland間のコンテキストスイッチコストや転送遅延もしくは、RX/TX queue 1本辺りの処理帯域でリミットがかかっているのだろうが…

RX/TX queueを 1個にして試したけど、single TX/RX queueでも複数ストリームなら 9Gbps越えてくるので、aq driver - userland間の転送帯域で限界が来てるぽぃ


2022-10-28 [長年日記]

_ [Ryzen][雑記]Ryzen TR 2950X機置き換え準備

メインの5950X機を置き換えた7950X機だが、稼働も順調で旧式化した Ryzen TR 2950X機に対して圧倒的な性能・電力効率が確認されたので、 Ryzen TR 2950X + ASRock X399M Taichiを置き換えを決意

本日、調達したのは…

  • Ryzen 7950X
  • ASRock B650M PG
  • CORSAIR VENGEANCE DDR5 for AMD CMK64GX5M2B5600Z40

ストレージは、現行のTR 2950X機から引き継ぎ、ケース・クーラーは5950X機を解体して空いたAntec P5・Noctua NH-U12Aを流用

B650マザーなので、ROG X670E GENEと比べるとかなり安いのもあるが、各種キャンペーンによる割引が13,750円あるのが大きい

DDR5メモリに関しては、Intelも新製品投入してきている関係か、32GBx2のセットは品薄ぎみ (16GBx2はそれなりに在庫している模様)

JEDEC NativeなDDR5-5600が市場投入されていない現状、Ryzen 7000定格のDDR5-5200はAMD EXPOなOC品だが、品薄で現物がないので、AMD EXPOなDDR5-5600 OCメモリを選択せざるを得なかった

NVMe M.2 SSDは、どの店も9/30と比べると値上がり気味、おそらく在庫が入れ替わった時点で円安なレートで入ってきた品に変わっている模様

ASRock B650M PGのファームの癖などは、動かして見ないと分からないが、現時点で発売・発表済みのAM5 M-ATXマザーの中では、PCIeスロット構成が一番遊べそうなマザーです 構成は、上から

  1. PCIe Gen4 x16 (CPU)
  2. PCIe Gen3 x1 (エッジフリー・Chipset)
  3. PCIe Gen3 x1 (エッジフリー・Chipset)
  4. PCIe Gen4 x4 (x16形状・CPU)

他のM-ATXマザーに対する優位性は、第2/3スロットのエッジフリーPCIe x1の回りにM.2スロットやChipsetヒートシンクなどx4/x8/x16カードの挿入を邪魔するものが何一つ無い点

代わりに、M.2スロット周りは、CPU直結・ヒートシンク付きのGen5 x4とChipset接続・ヒートシンク無しのGen4 x4で、妥協することになりますが、 拡張カードで色々遊ぶには比較的バランスの良い構成です

個人的には、CPUの x16を x8/x8にばらせる構成にして、Gen4 x16(x16 or x8)/Gen3 x1/Gen4 x16(x0 or x8)/Gen4 x4なM-ATXマザーがあると一番おもしろそうなのですがねぇ(x8/x8にばらした所に25G NIC + 12G/24G SAS HBAを差し込むのが面白そう)


2022-10-31 [長年日記]

_ [Ryzen][FreeBSD]amdsmn/amdtempのRyzen 7000対応(仮)

Host Bus BridgeのPCI DeviceIDとCPU ModelIDを追加すると、一様それっぽい値が読めるようになった

--- sys/dev/amdsmn/amdsmn.c.orig
+++ sys/dev/amdsmn/amdsmn.c
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
 #define        PCI_DEVICE_ID_AMD_17H_M10H_ROOT         0x15d0
 #define        PCI_DEVICE_ID_AMD_17H_M30H_ROOT         0x1480  /* Also M70H, F19H M00H/M20H */
 #define        PCI_DEVICE_ID_AMD_17H_M60H_ROOT         0x1630
+#define        PCI_DEVICE_ID_AMD_19H_M60H_ROOT         0x14d8

 struct pciid;
 struct amdsmn_softc {
@@ -104,6 +105,12 @@ static const struct pciid {
                .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
                .amdsmn_data_reg = F17H_SMN_DATA_REG,
        },
+       {
+               .amdsmn_vendorid = CPU_VENDOR_AMD,
+               .amdsmn_deviceid = PCI_DEVICE_ID_AMD_19H_M60H_ROOT,
+               .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
+               .amdsmn_data_reg = F17H_SMN_DATA_REG,
+       },
 };

 /*
--- sys/dev/amdtemp/amdtemp.c.orig
+++ sys/dev/amdtemp/amdtemp.c
@@ -111,6 +111,7 @@ struct amdtemp_softc {
 #define        DEVICEID_AMD_HOSTB17H_M10H_ROOT 0x15d0
 #define        DEVICEID_AMD_HOSTB17H_M30H_ROOT 0x1480  /* Also M70H, F19H M00H/M20H */
 #define        DEVICEID_AMD_HOSTB17H_M60H_ROOT 0x1630
+#define        DEVICEID_AMD_HOSTB19H_M60H_ROOT 0x14d8

 static const struct amdtemp_product {
        uint16_t        amdtemp_vendorid;
@@ -135,6 +136,7 @@ static const struct amdtemp_product {
        { VENDORID_AMD, DEVICEID_AMD_HOSTB17H_M10H_ROOT, false },
        { VENDORID_AMD, DEVICEID_AMD_HOSTB17H_M30H_ROOT, false },
        { VENDORID_AMD, DEVICEID_AMD_HOSTB17H_M60H_ROOT, false },
+       { VENDORID_AMD, DEVICEID_AMD_HOSTB19H_M60H_ROOT, false },
 };

 /*
@@ -845,6 +847,7 @@ amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model)
        switch (model) {
        case 0x00 ... 0x0f: /* Zen3 EPYC "Milan" */
        case 0x20 ... 0x2f: /* Zen3 Ryzen "Vermeer" */
+       case 0x60 ... 0x6f: /* Zen4 Ryzen "Raphael" */
                maxreg = 8;
                _Static_assert((int)NUM_CCDS >= 8, "");
                break;

Linuxのk10temp driver側の変更を流し読みしたが、Ryzen 7000系の温度換算式はRyzen 5000とオフセットが違うみたいだ…(読み違え 2022/11/02修正)CCD毎のTdieの格納位置がRyzen 5000(AMDTEMP_17H_CCD_TMP_BASE)とRyzen 7000で異なる。(Tctlの格納位置AMDTEMP_17H_CUR_TMPは同じ模様)

https://www.coelacanth-dream.com/posts/2022/07/10/fam19h-60h-70h/


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