2017年7月7日 星期五

[不定時 update] AMD ryzen 一些筆記

一開始就是拿來跑 ubuntu + VM workstation 所以以下筆記全以 linux 為主. 目前僅知的幾點:

  • ASM1083 PCI bridge 有些先天的問題在 IOMMU v2 上只能用 kernel parameter "iommu=soft" 迴避. ASM1083 的問題也同樣出現在 Z87 VT-d 上過, IDT PES12N3A 就一點問題都沒有. 現在 IOMMU 開, PCI 全都不插東西. (見 update)
  • AGESA 1004 以後對記憶體相容性有大幅度改善, 但後來交差驗證跟我碰到的問題無關.
  • kernel NMI 錯誤 ("NMI watchdog: BUG: soft lockup" 這個) 無法用設定 hung_task_timeout_secs (echo 0 > /proc/sys/kernel/hung_task_timeout_secs) 解, 兩者無關. 後來是換掉 power 後解決.
  • SATA 界面會跟 WD 藍標某特定款 power manager 衝突的問題, 後來不知道為什麼解決, 我懷疑也是那顆 Power 的關係... 換了一顆新巨 400w 就好了.
  • SVM 功能在 AGESA 1004a VMworkstation 12.5.5 會碰上  WinXP 不能開機的問題 (1004 可以), AGESA 1006 可以.
  • BIOS 中 C-state report 把它直接關掉. 我嚴重懷疑這個問題是 linux kernel 的 power manager 沒寫好出的包, 因為有不少 CPU (Summit-Ridge, Baytrail-I/T, Apollo-lake) 上都有一模一樣的問題. C-state 關掉後 cpufreq-info 裡仍舊可以看的到頻率仍舊可升降 (Baytrail 不行), 功耗實測上竟然也沒什麼變化..
  • 散熱器可以用舊有 socket754/939 兩爪扣具. 1700X 的熱度我用過去給 Athlon64 3000+ 的風扇是綽綽有餘... (這次用的板子是 asus prime B350 plus)
  • USB 3.1 因為沒設備我不確定 VM workstation 有沒有辦法 bridge 過去, 看 workstation 的文件是 guest 只有支援到 3.0....
目前環境 ubuntu 16.04.2LTS, kernel 4.10.0-26 (linux-image-extra-virtual-hwe-16.04-edge), VMware Workstation 12.5.6.

update 170726: 結果進氣道 12cm 風扇讓它接 12v 全速跑後, 一切正常了, yocto compile 也可以一次到底了(但不是每一次)... 果然太小看散熱問題了

update 170807: sensor 要使用 it87 這個 driver:
https://github.com/groeck/it87
git clone https://github.com/groeck/it87.git;make;make install
搭配 lm_sensor 套件就可以看到了這樣.

update 171127: 24號下班前看到華碩有放了一版 171120 的 BIOS (AGESA 1071 的 update) 就拿來試, 目前看來編 yocto 時 gcc 會 segment fail 的問題解掉了 (yocto 2.2.1, x86-64 用的 gcc 為 6.2.0). 不錯啊, 拖了七個月這個問題終於解決了...
ps. 在這之前開關 kernel ASLR (Address space layout randomization) 沒有差別, 有沒有關掉 rcu 對我也沒有差別, 都會死.

update 180503: 華碩後來放出的 BIOS (4008, 4011) 在 AMD CBS 裡多了一個 OPcache 的選項, 把這個選項關掉後, 之前 gcc 不定時掛點的問題解決的比之前要徹底, 最少這次我編 yocto 2.2.1 全程都沒有再遇上問題. 我把之前的問題重新提出來回一遍:
  • IOMMUv2. kernel 4.15.0 用的 IOMMUv2 driver 看起來不會再像過去那樣跳一堆錯誤後 PCI 死掉. 不過這次我直接在 kernel 裡關掉 (iommu=soft), 沒有多試, 我只能確定編的編不過跟 IOMMU 沒關係, 也跟 SR-IOV 沒有關係. (見 update)
  • DDR4 相容性. 這次用預設的 DDR4-2400 在跑不需要降, 降了其實也沒什麼用.
  • KERNEL NMI錯誤, 這個跟 c-state 有關係, BIOS 中可以將 c-state report 關掉, 沒辦法關 c-state 的板子需要把 CPU governor 全調成 performance 來迴避問題 (跟 Baytrail 的問題很像, 其實我懷疑是 linux kernel 自己的問題). 神奇的是就算調到全速, CPU 自己的省電功能依舊有效. 據說, 關掉這個可以讓 PCIe 跑快一點..
  • SATA.. 這個確定是 WD 的問題. WD 從有 IDE 以來就這個樣子不意外
  • SVM: 後來預設變關掉, 我是打開
  • c-state 同 kernel NMI message.
  • 散熱器不需要太好的...
  • VMware workstation 14 也沒有支援 USB 3.0 gen.2.
  • kernel ASLR 在 host / guest OS 我都關掉, 好像有快那麼一點點.
  • BIOS 中 performance bias 為 auto 或 none. 其它的會亂超頻.
這顆 CPU 是我用過第二難搞的 CPU, 第一難搞的是 intel Pentium2 SL2W8

update 2019/03/06 AMD-Vi iommu 跟 ASM1083 的問題可以在 kernel 追加以下參數解決:
"amd_iommu=on iommu=pt kvm_amd.npt=1"
可以在 /etc/defaut/grub, "GRUB_CMDLINE_LINUX" 追加, 再執行 update-grub.

ubuntu hwe kernel 4.15.0 & 4.18.0 下都工作正常. 話說這個參數其實是另一篇寫給 QEMU pass-through PCIe memory 用的參數, 如果沒用到虛擬機 & kernel KVM 功能的話, 不如直接一點把 BIOS 中 IOMMU / SR-IOV 等全關掉省的麻煩...

update 191017: 有關 yocto build 會掛掉已經間接證實是 yocto builder 自己的問題, 簡單的說, yocto 在編譯時最大會開到 CPU h/w threads 數平方個 task, 8core 共 64 tasks, 16core 時會爆增到 256 tasks, RAM 加到 32G 看來無解. 解法是在
[build directory]/conf/local.conf 裡增加
BB_NUMBER_PARSE_THREADS = "4"
的敘述, 限制每一個套件在編譯時使用的最大 threads, 16core 下建議設定 4-5.
設太多是 yocto builder 會把 OS 給炸了而不是 CPU 有問題....

沒有留言: