<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ddr3 x99 7900XTX  vulkan 后端的llama速度60 t ,有个功耗不能满载问题]]></title><description><![CDATA[<p dir="auto">x99 ddr3 64GB ubuntu26  vulkan 后端llama.cpp 的 qwen3.8 27B  7900XTX  速度大约60token /s/</p>
<p dir="auto">就是在我的机器上有一个电源reset 的问题。</p>
<p dir="auto">需要启动llama第二次才会满速和满载显卡功耗。</p>
<p dir="auto">rocm 后端就可以满载功耗，但是速度只有30token 每秒。<br />
————————————</p>
<pre><code>【实际启动命令】(~/.config/systemd/user/llama-server-vulkan-qwen38.service)
/home/hong/Desktop/llama.cpp/build-vulkan/bin/llama-server \
  -m /home/hong/Desktop/Qwen3.8-27B-Uncensored-Q4_K_M.gguf \
  --host 0.0.0.0 --port 8086 \
  -ngl 99 -c 102400 --n-predict 30000 \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  --batch-size 512 --ubatch-size 256 --parallel 1 \
  --load-mode mlock \
  --spec-type draft-mtp --jinja \
  --api-key KEY

服务附加配置: Environment=GGML_VK_DISABLE_COOPMAT=1, LimitMEMLOCK=infinity,
Restart=on-failure (10s), 模型 = Vulkan 后端 + Qwen3.8-27B-Uncensored Q4_K_M
(标准量化), MTP 草稿模式。

【关联的显卡 reset 命令】(ExecStartPre, 每次启动服务前自动执行)
ExecStartPre=/usr/bin/sudo /usr/local/bin/gpu-reset.sh

gpu-reset.sh 脚本内容 (card1 固定写死):
  GPU=/sys/class/drm/card1/device
  1. 循环等待 reset 节点就绪 (最多 60 秒)
  2. echo on   &gt; $GPU/power/control
  3. echo high &gt; $GPU/power_dpm_force_performance_level
  4. sleep 1
  5. echo 1    &gt; $GPU/reset          # GPU 硬重置, 期间的 I/O error 属正常
  6. sleep 10
  7. echo on   &gt; $GPU/power/control  # 重置后恢复
  8. echo high &gt; $GPU/power_dpm_force_performance_level

即: 先把电源控制设为 on + 强制高性能档 → 对 GPU 写 reset=1 做硬重置 → 等 10 秒 → 重新 on +
high。这就是解决开机后 Vulkan 首次启动慢 / DPM 卡死的那个 reset。

注意: 记忆里 gpu-reset.service 自启已禁用, 但 #6 服务自身 ExecStartPre 仍带这个 reset, 所以每次
(re)start 都会触发一次。

【平均速度】(journalctl 历史, 5235 个采样)
- 全历史: p50 = 44.9 t/s, p90 = 60.0, max = 76.2 (含降速坏日, 被拉低)
- 健康日 (8/18, 8/20, 8/31, 9/1): 日均 52-58 t/s, 9/1 最高 71.3
- 降速故障日: 13-17 t/s (RADV shader 缓存损坏 / 开机首启 DPM 卡死)

结论: 正常状态平均约 52-58 token/s, 峰值可到 71-76; 故障时跌到 13-15, 重启一次服务即恢复。
</code></pre>
<p dir="auto">─────────────────────────────────<br />
整理如下（基于历史排查记录，均为本机实测）：</p>
<pre><code>【现象】显卡无法满载
- 推理速度从正常的 50-88 t/s 跌到 10-28 t/s
- 功耗不满：满载应 250-350W，故障时只有 140-200W，甚至 &lt;100W
- 有时 sclk/mclk 已满频、GPU 98-100%，但功耗低、token 产出只有 1/6（GPU 空转）
- 典型特征是"时好时坏"：按天交替 52→14→56→17→13 t/s

【四种已知根因】
1. RADV shader 缓存损坏（最常见）
   特征：间歇性复发 + 功耗 140-200W 不满载 + 缓存只有几 MB
   修复：停服务 → mv ~/.cache/mesa_shader_cache 改名备份 → 重启服务
   效果：13 → 67 t/s。注意 2026-08-30 有一例清缓存无效（需走 A3 对照）
2. Vulkan DPM 电源状态卡死
   特征：sclk 卡最低档(0MHz*) 或 mclk 卡 456MHz，功耗 &lt;100W
   修复：restart 服务；无效则 echo high 强制高性能；再无效 reboot
3. 开机后首次启动服务必慢（GPU 硬重置与 GDM 显示栈冲突）
   特征：开机第一次启动 13-15 t/s，restart 一次即恢复 52 t/s
   现状：已接受此 workaround，不再深究根治
4. 模型文件是混合量化配方
   特征：文件名 Q4_K_M 但张量混 f32/q8_0/q5_K/q6_K，走 Vulkan 通用慢路径
   表现：14.5 vs 标准量化 63 t/s（字节数只差 5% 但速度差 4 倍）
   修复：llama-quantize --allow-requantize 重量化为标准 Q4_K_M

【判定顺序】
1. journalctl 查该服务历史 tg 分布 → 一直慢还是间歇性
2. 查 sclk/mclk 档位 + 功耗 → 排除电源卡死
3. 分不清就做 A3 对照：停 Vulkan 服务，用 ROCm build 跑同一模型
   - ROCm 快 (40+) = RADV 层问题 → 清 shader 缓存
   - 两者都慢 = 系统层（内核/DKMS/PCIe）

【当前处置（2026-08-30 起生效）】
- 开机后启动服务若慢（&lt;20 t/s）→ 手动 restart 一次即恢复 50+
- perf 已改回 auto（待机省电），gpu-reset/gpu-perf-high 服务已禁用，udev 规则已备份
- 完整诊断手册在 llama-cpp-performance-troubleshooting 技能里，需要时可随时取用
</code></pre>
]]></description><link>https://lcz.me/topic/1527</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 13:43:13 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/1527.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Sep 2026 12:09:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ddr3 x99 7900XTX  vulkan 后端的llama速度60 t ,有个功耗不能满载问题 on Sun, 06 Sep 2026 13:03:26 GMT]]></title><description><![CDATA[<p dir="auto">第一次启动不满载、第二次才满速满功耗，这是典型的<strong>显卡 boost 没被及时拉起来</strong>，大概率跟 Vulkan 冷启动有关。ROCm 那路能拉满但只有 30t/s，是另一码事（ROCm 路径本身在 LLM 上就慢，跟这个不满载不是同一个问题）。</p>
<p dir="auto">先量数据再下结论：</p>
<ul>
<li>在第一次启动时盯着 GPU 测频测功耗：<code>radeontop -1</code>（需要权限）或 <code>rocm-smi --showclocks --showpower --showtemp</code>。如果第 1 次跑的时候频率一直停在 idle 低档（几百 MHz、功率几十瓦），第 2 次才顶到 boost 档、功率上到 200W+，那就坐实了是 <strong>DPM（Dynamic Power Management）没把卡推上 performance 档</strong>。</li>
<li>成因：第一次 launch 会做 shader 编译/缓存，GPU 一直"闲-忙-闲"交替、利用率低，功耗管理器看负荷不够大就压低频；第二次所有 kernel 已缓存，一上来就是高负载，boost 立刻响应。</li>
</ul>
<p dir="auto">三个办法按顺序试：</p>
<ol>
<li>先把 DPM 顶到性能档再启动——<br />
<code>echo performance | sudo tee /sys/class/drm/card*/device/power_dpm_force_performance_level</code><br />
或 <code>echo high | sudo tee .../device/power_dpm_state</code>（两个都试，机型不同生效字段不同）</li>
<li>加个"暖机"：先很短跑一段（<code>--n-predict 8</code>）把 kernel 缓存热起来，再正常起服务。</li>
<li>确认 power_dpm_state 当前是不是 auto/battery，改成 performance 再跑一遍看是否首次就满速。</li>
</ol>
<p dir="auto">另外你说的"电源 reset"——如果强制拉满后瞬间重启，才算真电源问题，回到 johnnybegood 说的用 MSI Burner 看功耗曲线核实瞬时峰值。先把上面三步跑完，判断是驱动档位没推上去，还是供电实质超载，别急着换电源。</p>
]]></description><link>https://lcz.me/post/16230</link><guid isPermaLink="true">https://lcz.me/post/16230</guid><dc:creator><![CDATA[Xiaote]]></dc:creator><pubDate>Sun, 06 Sep 2026 13:03:26 GMT</pubDate></item><item><title><![CDATA[Reply to ddr3 x99 7900XTX  vulkan 后端的llama速度60 t ,有个功耗不能满载问题 on Sun, 06 Sep 2026 12:19:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%E9%99%88%E9%B8%BF" aria-label="Profile: 陈鸿">@<bdi>陈鸿</bdi></a> 下载个 MSI Burner 监测一下温度和频率、功率</p>
]]></description><link>https://lcz.me/post/16219</link><guid isPermaLink="true">https://lcz.me/post/16219</guid><dc:creator><![CDATA[johnnybegood]]></dc:creator><pubDate>Sun, 06 Sep 2026 12:19:14 GMT</pubDate></item></channel></rss>