ToDo:
3840x2160 @ 144Hzだと、DP-HDMIアダプタ+HDMI2.1 KVMが挟まっている関係で、液晶Displayの電源を切ると画面が映らなくなる
一度VT-Switchする(TMDS互換のHDMI2.0に一旦切り替える)と映るので、 液晶Display側がPowerON時の転送モードがTMDSになっていて、KVMの出力側から転送モードネゴシエーションが走らないためと推定される(KVM側でEDIDエミュレーションが走っているので、GPUはDisplay Power Offに気づいていない)
VT-SwitchするとFirefoxの表示がGPUアクセラレーション絡みでバグるので、 xrandrを使って画面モードを一旦TMDS互換に切り替えて再度144Hzへ切り替えるスクリプトを書いて、window managerのkeyboard shutcutへ仕込んだ
Display ON後にShutcutを叩くだけで、画面が復帰するようになった
検証用兼1slotカード予備品として保有していたELSA GTX1650 SP V2のファンブレード基部のプラスチックにひびが入っていた Orz
この状態では、検証作業はともかく本番には投入したく無いなぁ
最初は作業中に工具等をぶつけたかを疑ったのだが、観察した限り、構造上ストレスがかかる部分からひびが伸びているので、プラスチックの成形不良もしくは耐久性不足ではないかと疑っている (メーカー保証は2023年末に切れているので、製品保証的には充分かもしれんが、交換部品が一般に流通しない品なのでもう少しどうにかならんのかなぁ…)
最初の発見は、ブレード根元付近でスピンドル部がひび割れて出来た隙間である
しかし、よく観察するとブレードとスピンドル基部を一体成形したプラスチック部品の回転軸に穴が開けてあり回転軸の金属ピンと嵌め合わせになっている構造で、金属ピンの周辺から3本のひびが放射状に伸びており、うち1本が目に見えて広がった隙間を成している
ブレードが叩かれて割れたというより、成形部品の穴周辺からひび割れが広がり拡大したように見える。穴周辺からひび割れが進行しれいたのなら、成形・加工不良ないし材料の耐久性の問題に思える。
ファンの交換部品がないかネットで調べたが、GPUクーラーの故障事例写真でこの種の放射状のひび割れが結構見つかるので、薄型に成形するプラスチックファンブレード共通の問題かも?
一応、ノギスで測ったファンの諸元をメモ
とりあえず、密林さんでそれらしきファンの部品を手配した
届いたら、交換修理を試みる予定 (多分、カバーを開くのに2mmぐらいの六角レンチが必要…)
RTX A400の方は、β版ドライバでの安定動作が確認出来たので、実戦へのRTX A400(TDP 50W・LP可)を投入し GTX1650 SP V2(TDP 70W)は検証用・予備品として保持予定
3840x2160 144Hz対応モニタ(BenQ EX321UX)・HDMI2.1対応KVM環境を構築したので、ぬるぬるスクロールを目指してFreeBSD + nvidia-driver環境でも 120/144Hzを試してみたメモ
Windows11機 + RTX A400 on x16 slot(Nvidia driver 553.24)での3840x2160での動作検証 ... 普通に動く模様
Mode | Rate | 表示 | 備考 |
RGB/SDR | 60 | ○ | default 動作 |
RGB/HDR | 60 | ○ | 10bitRGB動作 |
RGB/SDR | 120 | ○ | |
RGB/HDR | 120 | ○ | 10bitRGB動作 |
Mode | Rate | 表示 | 備考 |
RGB/SDR | 60 | ○ | default 動作 |
RGB/HDR | 60 | ○ | 10bitRGB動作 |
RGB/SDR | 120 | ○ | |
RGB/HDR | 120 | ○ | 10bitRGB動作 |
RGB/SDR | 144 | ○ | |
RGB/HDR | 144 | ○ | 10bitRGB動作 |
Mode | Rate | 表示 | 備考 |
RGB/SDR | 60 | ○ | default 動作 |
RGB/HDR | 60 | ○ | 10bitRGB動作 |
RGB/SDR | 120 | ○ | |
RGB/HDR | 120 | ○ | 10bitRGB動作 |
RGB/SDR | 144 | ○ | |
RGB/HDR | 144 | ○ | 10bitRGB動作 |
備忘録としてまとめておく
Processor | FamilyID | ModelID | Stepping |
Ryzen 9 9950X | 1Ah | 44h | 0 |
Ryzen 9 7950X | 19h | 61h | 2 |
diff --git a/sys/dev/amdsmn/amdsmn.c b/sys/dev/amdsmn/amdsmn.c index a0a7b9db60f8..e5c5656c5f11 100644 --- a/sys/dev/amdsmn/amdsmn.c +++ b/sys/dev/amdsmn/amdsmn.c @@ -205,6 +205,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 583ff80cac69..0220887134fd 100644 --- a/sys/dev/amdtemp/amdtemp.c +++ b/sys/dev/amdtemp/amdtemp.c @@ -229,6 +229,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[] = { @@ -316,6 +317,7 @@ amdtemp_probe(device_t dev) case 0x16: case 0x17: case 0x19: + case 0x1a: break; default: return (ENXIO); @@ -475,6 +477,7 @@ amdtemp_attach(device_t dev) break; case 0x17: case 0x19: + case 0x1a: sc->sc_ntemps = 1; sc->sc_gettemp = amdtemp_gettemp17h; needsmn = true; @@ -538,6 +541,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), @@ -889,3 +894,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); +}
CPU: AMD Ryzen 9 9950X 16-Core Processor (4292.17-MHz K8-class CPU) Origin="AuthenticAMD" Id=0xb40f40 Family=0x1a Model=0x44 Stepping=0 Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT> Features2=0x7ed8320b<SSE3,PCLMULQDQ,MON,SSSE3,FMA,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND> AMD Features=0x2e500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM> AMD Features2=0x75c237ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,IBS,SKINIT,WDT,TCE,Topology,PCXC,PNXC,DBE,PL2I,MWAITX,ADMSKX> Structured Extended Features=0xf1bf97ab<FSGSBASE,TSCADJ,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,PQM,PQE,AVX512F,AVX512DQ,RDSEED,ADX,SMAP,AVX512IFMA,CLFLUSHOPT,CLWB,AVX512CD,SHA,AVX512BW,AVX512VL> Structured Extended Features2=0x19405fde<AVX512VBMI,UMIP,PKU,OSPKE,AVX512VBMI2,GFNI,VAES,VPCLMULQDQ,AVX512VNNI,AVX512BITALG,AVX512VPOPCNTDQ,RDPID,MOVDIRI,MOVDIR64B> Structured Extended Features3=0x10000110<FSRM,AVX512VP2INTERSECT,L1DFL> XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES> AMD Extended Feature Extensions ID EBX=0x791ef257<CLZERO,IRPerf,XSaveErPtr,RDPRU,BE,WBNOINVD,IBPB,INT_WBINVD,IBRS,STIBP,STIBP_ALWAYSON,PREFER_IBRS,SAMEMODE_IBRS,NOLMSLE,SSBD,CPPC,PSFD,BTC_NO,IBPB_RET> SVM: Features=0xfebb9dff<NP,LbrVirt,SVML,NRIPS,TscRateMsr,VmcbClean,FlushByAsid,DecodeAssist,<b8>,PauseFilter,EncryptedMcodePatch,PauseFilterThreshold,V_VMSAVE_VMLOAD,vGIF,GMET,<b19>,GuesSpecCtl,<b21>,<b23>,<b25>,<b26>,<b27>,<b28>,<b29>,<b30>,<b31>> Revision=1, ASIDs=32768 TSC: P-state invariant, performance statistics ... 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: 40.2C dev.amdtemp.0.ccd0: 40.0C dev.amdtemp.0.core0.sensor0: 50.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:
宅内LANのコアスイッチとしてQSW-M1208-8Cを運用しているが微妙に検証作業等でポートが足らんことがあるので、FOXNE FNS-3200を導入
最近流行りのRealtekの2.5G Ethernet SoCを使ったハブで、 SFP+ 1ポートに 2.5GBASE-TなRJ45が 8ポートのファンレススイッチで 9000円前後で購入できる
ファンレスになっているが、筐体が熱を持つ訳でも無く(10GBASE-TなFSP+モジュールを刺した場合は知らんが…)、マネージメント機能も無いプレーンな小型スイッチングハブである
まあ、電源が12V ACアダプター(PSEマークは入っていた)なのは、インフラ用途では不満だが、価格帯と大きさから考えればBuffaloやElecomのやつも同様なので価格相応といったところか
1G/2.5Gポート増設用途でアンマネージド型を選択したが、1000〜2000円上乗せすると同SoCベースなマネージド型もある模様、ただ価格帯が価格帯だけにUIまわりの完成度は期待出来ない気がする Orz
QNAPとかNetgear等で10Gスイッチの新作が投入されているが、大抵規模が大きすぎて高いか一台に纏めるにはポートが足らない or SFP+が多すぎる辺りなのが、逸般家庭用の難しいところ
理想的には、VLAN使えて、SFP+ 4ポート・10G RJ45 4ポート・2.5G RJ45 8ポートぐらいが繋がるハーフラックスイッチで10万円前半の製品が欲しい
QNAPだとQSW-M3224-24Tはデカすぎ&SFP+が無いのがネック、QSW-M3216R-8S8Tだと総ポート数的にはマッチするが、RJ45がもう少し欲しいところ (モジュールは意外に単価と発熱が…/あとQSW-M1208-8Cの経験だと10GBASE-Tモジュール挿すとFirmwareでエラーが出るケースが難、通信遮断は一時的だが、以後マネージドポートのMACアドレスとファン回転数が見えなくなる)
とりあえず、現状までに分かったことを纏める
Ver. | Date | 備考 |
3.08 | 2024/09/19 | NTP offsetジッター発生より後 |
3.06 | 2024/07/30 | Ryzen 9 9950X運用開始時点のFirmware |
3.01 | 2024/05/16 |
現状の調査状況からは、ntpdのソフトウェアのバグもしくは、NTPDがやりとりするNTPパケット(UDP port 123→port 123)の混線((A)がNAPTな外部Gatewayなのでパケットがあつまる)あたりしか原因が思いつかん Orz
時間が取れたら、RTX830を本番投入してGateway機能を分離してみよう…NTPパケットの混線ならこれで治るはず
先日から調べてるNTP offsetジッターの件であるが、muninに記録されているジッターの悪化が始まった時刻帯とNTP clientノードの再起動時刻が被っている上に、以後リブートしていない…
一方、同一のGPS NTP serverに同期している正常なNTP clientのbuildworldはそれよりも新しい
ひょっとして、stable/14で更新途上の変なbuildを引いている?
少なくともCPU更新(Ryzen 7950X → 9950X)に伴うハードウェア入れ替えは2024/08/30前後なので、CPU起因では無い模様…
ここ最近、GPS同期しているNTPを参照していると妙にoffsetジッターが大きいホストがある…
どうも、10G switchの問題っぽぃぞ…
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記