AMD Ryzen - Arch Linux 中文维基

跳至內容

# AMD Ryzen

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Ryzen，最近一次同步於 2025-04-10，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Ryzen 是 Advanced Micro Devices (AMD) 製造的微處理器品牌。本文涵蓋了不同代 CPU 的系統配置和故障排除信息。

這篇文章的某些內容需要擴充。

原因：添加關於 `amd_pstate` 的內容，或至少連結到 CPU frequency scaling#Scaling drivers。 (在 Talk:AMD Ryzen 中討論)

相關文章

- 性能優化
- 性能優化/啟動過程
- 內核
- 微碼

## 啟用微碼支持

安裝 amd-ucode包 包以啟用微碼更新，並在微碼頁面的幫助下啟用它。這些更新提供了對系統穩定性至關重要的 Bug 修復。儘管它是專有產權的，仍然強烈建議使用。

## 微調 Ryzen

### 監視電壓、電源和溫度

lm_sensors包 可以開箱即用來監視溫度。但是電量消耗及電壓等更詳細的信息需要 zenpower3-dkmsAUR。也有圖形用戶界面的工具，如 zenmonitorAUR 和對於 Zen 3 CPU 的 zenmonitor3-gitAUR。

### 電源管理、降壓和超頻

- RyzenAdj — RyzenAdj 是一個用來調節 Ryzen 移動處理器電源管理設置的命令行工具。

  https://github.com/FlyGoat/RyzenAdj || ryzenadj-gitAUR

- amdctl — amdctl 是一個 AMD CPU 的降、超（升）頻率和電壓的命令行工具，目前支持 AMD CPU 的 10h, 11h, 12h, 15h, 16h, 17h 和 19h 家族。

  https://github.com/kevinlekiller/amdctl/ || amdctlAUR

- ZenStates-Linux — ZenStates 是一個調節時鐘頻率和電壓的命令行工具。一個詳細的設置例子可以在 Level1Techs 論壇 找到。

  https://github.com/r4m0n/ZenStates-Linux || zenstates-gitAUR

- ryzen_smu — Ryzen SMU 是一個 Linux 內核驅動程序，它可以讓用戶訪問某些 AMD Ryzen 處理器的 SMU（系統管理單元）。這 是一個給 5800x3D 降壓的例子。

  https://gitlab.com/leogx9r/ryzen_smu || ryzen_smu-dkms-gitAUR

## 編譯內核

關於啟用 Ryzen 支持，參考 Gentoo:Ryzen#Kernel。官方支持的內核中已默認包含了所需的配置。

## 疑難解答

### 隨機重啟

如果你遇到了隨機重啟的問題，請參考 Gentoo:Ryzen#Random_reboots_with_mce_events。Ryzen 5000 系列，特別是 5950X 和 5900X 這兩款高端型號，在 Linux 下似乎有一些輕微的不穩定問題，可能與 5.11+ 的內核有關，如這個內核 bug 所示。根據網上的報告，似乎 Windows 默認會讓 CPU 運行在更高的電壓和更低的峰值頻率，而 Linux 內核則相反，這取決於你的矽片抽籤結果，可能會導致一些隨機的應用程式崩潰或硬體錯誤，從而導致重啟。你可以通過 dmesg 日誌來識別這些問題，例如：

    kernel: mce: [Hardware Error]: Machine check events logged
    kernel: mce: [Hardware Error]: CPU 22: Machine Check: 0 Bank 1: bc800800060c0859
    kernel: mce: [Hardware Error]: TSC 0 ADDR 7ea8f5b00 MISC d012000000000000 IPID 100b000000000
    kernel: mce: [Hardware Error]: PROCESSOR 2:a20f10 TIME 1636645367 SOCKET 0 APIC d microcode a201016

CPU ID 和處理器編號可能會不同。要解決這個問題，你需要給你的 CPU 提供更高的電壓，以便它在高頻運行時保持穩定。最簡單的方法是使用 AMD 曲線優化器，這是一個可以通過你的主板 UEFI 訪問的功能。進入 UEFI 並設置一個正向的 4 點偏移，這會增加你的 CPU 在高負載時的電壓。這會限制超頻的潛力，因為需要更好的散熱，但它會運行得更穩定。更多細節請查看這個論壇帖子。當我對我的 5950X 這樣做時，我的處理器穩定了，頻率和電壓的範圍也更接近 Windows 下的情況。

### 系統掛起

在類似 #隨機重啟的情況下，系統可能會在重負載或特定的低負載下掛起，即使在應用了修復措施後也是如此。重置按鈕或強制關機不起作用，外設電源關閉，視頻輸出可能會停止，拔掉電源是唯一的方法。

將頻率降低到非超頻標準並增加 CPU 或 RAM 的電壓可能會有所幫助，但可能無法解決問題。一個潛在的解決方法是更新 UEFI（也被誤稱為「BIOS 更新」），然後應用 PBO+4 曲線以提高高頻下的穩定性。根據矽片抽籤結果，某些 CPU 可能需要 +6 或更高的偏移量。

### 屏幕撕裂（APU）

如果你正在使用 Xorg 並遇到了屏幕撕裂的問題，請查看：AMDGPU#無撕裂渲染。

### 軟鎖凍結

這個 bug 已經很有名了，目前正在 bugzilla 和 launchpad 上討論。雖然解決方案並不是在所有情況下都一樣，但這個幫助了一些用戶。把這個命令 `echo rcu_nocbs=0-$(($(nproc)-1))` 的輸出作為一個內核參數添加，其中命令 `nproc` 只是列印出你的 CPU 的線程數。要應用這個選項，你需要一個帶 `CONFIG_RCU_NOCB_CPU` 選項編譯過的內核（比如 linux包）。

導致凍結的另一個原因是電源管理中的 c-states。最大的省電狀態 c6 可能會導致問題。在一些情況下，添加內核參數 `processor.max_cstate=5` 會有幫助，但其他用戶報告說這個選項沒有應用，c6 狀態仍然被進入。對他們來說，這個包 disable-c6-systemdAUR 會有幫助。在使用它之前，需要運行 `modprobe msr` 來激活那個內核模塊。

一些帶有 Ryzen CPU 的筆記本電腦，比如 HP Envy x360 15-bq100na，可能會遇到 CPU 軟鎖定，導致系統凍結。可以通過添加內核參數 `idle=nomwait` 來避免。

在一些情況下，內核參數 `pci=nomsi` 可以修復問題。

在其他一些情況下，問題只是硬體不好，保修換一個新的 CPU 可能就能解決你的問題。

### 關機、重啟、掛起時卡住

注意：通過更新 UEFI（也被誤稱為「BIOS 更新」）獲取的較新 AGESA 固件可能已經修復了這個問題。

這似乎與 C6 c-state 有關，它在 Linux 中似乎並不受到很好的支持（如果有的話）。

要解決這個問題，進入 UEFI 設置並搜索一個標記為類似於「電源空閒控制」的選項。將其值更改為「典型空閒電流」。請注意，這些名稱取決於主板製造商對它們的命名，因此在您的特定情況下可能會有所不同。

其他不太理想的解決方案包括在 UEFI 設置中禁用 c-states 或在內核命令行參數中添加 `processor.max_cstate=1`。

## 另見

- Gentoo:Ryzen

分類：​

- CPU

AMD Ryzen
新增話題