显卡空转监控分析

总结示意图

【仓库】 RAM (内存)       【搬运】 CPU (指挥)       【车间】 VRAM (显存)
+---------------+      +---------------+      +-------------------------+
|               |      |   12个熟练工   |      |  [ 物理批次 uBatch ]     |
| [ 待处理数据 ] --(1)-->|  (精简核数)   |--(2)-->|   2048 (宽大传送带)     |
|               |      |  (消除延迟)   |      |  (PP: 500 t/s 冲刺)     |
+---------------+      +---------------+      +------------|------------+
                                                           |
                                                   [ 核心计算 (SM) ]
                                                           |
                                              +------------V------------+
【产出】 每秒 73 字 <-----------(4)-----------| [ KV Cache 历史记忆 ]    |
                                              |  (量化压缩: 节省地皮)     |
                                              |  (n_ctx: 预留地皮)       |
                                              +-------------------------+

目标

  • 提升pp吞入和tg吐出的速度:900+,75+,有点完美
  • 提升显卡利用率:sm等cpu运送的间隔最少,sm90+

nvidia-smi dmon -s uc -i 0 日志

4096 4096的效果

# gpu     sm    mem    enc    dec    jpg    ofa   mclk   pclk
# Idx      %      %      %      %      %      %    MHz    MHz
    0     15      3      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     58     19      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     11      0      0      0      -      -    877   1530
    0     58     18      0      0      -      -    877   1530
    0     37      6      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     65     22      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0     66     20      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     64     20      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     65     20      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0     64     20      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     73      4      0      0      -      -    877   1530
    0     59     19      0      0      -      -    877   1530
    0     79     25      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     69     21      0      0      -      -    877   1530
    0     80     26      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     87      4      0      0      -      -    877   1530
    0     54     16      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     59     19      0      0      -      -    877   1530
# gpu     sm    mem    enc    dec    jpg    ofa   mclk   pclk
# Idx      %      %      %      %      %      %    MHz    MHz
    0     72     23      0      0      -      -    877   1530
    0     87     29      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     79     25      0      0      -      -    877   1530
    0     93     30      0      0      -      -    877   1530
    0     79     24      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     79     24      0      0      -      -    877   1530
    0     66     20      0      0      -      -    877   1530
    0     60     15      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     80     26      0      0      -      -    877   1530
    0     83     26      0      0      -      -    877   1530
    0     88     29      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     59     19      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     58     18      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     55     16      0      0      -      -    877   1530
    0     56     17      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     66     21      0      0      -      -    877   1530
    0     57     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      4      0      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0     66     20      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     66      7      0      0      -      -    877   1530
    0     65     20      0      0      -      -    877   1530
    0     65     14      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     61      4      0      0      -      -    877   1530
    0     54     14      0      0      -      -    877   1530
    0     76     25      0      0      -      -    877   1530
# gpu     sm    mem    enc    dec    jpg    ofa   mclk   pclk
# Idx      %      %      %      %      %      %    MHz    MHz
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     65     20      0      0      -      -    877   1530
    0     75     24      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     60     19      0      0      -      -    877   1530
    0     79     26      0      0      -      -    877   1530
    0     71     12      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     39      1      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     83     27      0      0      -      -    877   1530
    0     83     26      0      0      -      -    877   1530
    0     62     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     59     19      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0     19      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      1      0      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0     64     20      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     79     25      0      0      -      -    877   1530
    0     89     28      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      3      0      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0     78      7      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     81     23      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     66      2      0      0      -      -    877   1530
    0     82     23      0      0      -      -    877   1530
# gpu     sm    mem    enc    dec    jpg    ofa   mclk   pclk
# Idx      %      %      %      %      %      %    MHz    MHz
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     59     19      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     28      8      0      0      -      -    877   1530
    0     79     21      0      0      -      -    877   1530
    0     11      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     58     19      0      0      -      -    877   1530
    0     60     18      0      0      -      -    877   1530
    0     59     18      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      4      0      0      0      -      -    877   1530
    0     37     23      0      0      -      -    877   1530
    0     37     22      0      0      -      -    877   1530
    0     37     22      0      0      -      -    877   1530
    0     38     23      0      0      -      -    877   1530
    0     38     23      0      0      -      -    877   1530
    0     40     24      0      0      -      -    877   1530
    0     36     22      0      0      -      -    877   1530
    0     36     22      0      0      -      -    877   1530
    0     37     22      0      0      -      -    877   1530
    0     37     22      0      0      -      -    877   1530
    0     38     23      0      0      -      -    877   1530
    0     40     24      0      0      -      -    877   1530
    0     36     22      0      0      -      -    877   1530
    0     26     16      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1312
    0      0      0      0      0      -      -    877   1312
    0      0      0      0      0      -      -    877   1312
    0     60     21      0      0      -      -    877   1530
    0     58     19      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     19      1      0      0      -      -    877   1530
    0     61     20      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0      0      0      0      0      -      -    877   1530
    0     60     19      0      0      -      -    877   1530
# gpu     sm    mem    enc    dec    jpg    ofa   mclk   pclk
# Idx      %      %      %      %      %      %    MHz    MHz
    0     60     18      0      0      -      -    877   1530

[37175] slot update_slots: id  1 | task 0 | new prompt, n_ctx_slot = 102400, n_keep = 0, task.n_tokens = 68702
[37175] slot update_slots: id  0 | task 16 | new prompt, n_ctx_slot = 102400, n_keep = 0, task.n_tokens = 68702
[37175] slot update_slots: id  0 | task 33 | new prompt, n_ctx_slot = 102400, n_keep = 0, task.n_tokens = 68702
[37175] prompt eval time =     142.18 ms /     4 tokens (   35.55 ms per token,    28.13 tokens per second)
[37175]        eval time =   14156.41 ms /   794 tokens (   17.83 ms per token,    56.09 tokens per second)
[37175] slot update_slots: id  0 | task 833 | new prompt, n_ctx_slot = 102400, n_keep = 0, task.n_tokens = 18267

配置

# -------------显卡资源-------------
# fit = on                      # 在v100上,无法用这个参数取代手动调优
n-gpu-layers = 99
tensor-split = 1,1
flash-attn = on                 # on 开启Flash Attention 算法,降低长文显存增长
cache-type-k = q8_0
cache-type-v = q8_0
mmap = 1                        # 1 内存动态管理加载模型文件,而非独占
no-kv-offload = 0				# 0 kv cache 加载到显卡,极大提速,C4推理速度=73 t/s
no-warmup = 1					# 1 预热 buffer和核函数
# -------------CPU资源-------------
threads = 12
batch-size = 4096               # 逻辑批次:影响吞入速度
ubatch-size = 4096				# 物理批次:影响吞入速度,会增加kvcache的30%的显存占用

gemini分析

1. 核心发现:显卡在“严重饥饿”中频繁空转
看你的 dmon 数据(特别是这一段):

Plaintext
# sm     %
  93     # 瞬间爆发,说明 ubatch 起作用了
  79
   0     # 突然断流!显卡空转
   0     # 持续空转
  79     # 数据来了,又算一下
诊断结果: 显卡(GPU)处理数据的速度远快于 CPU/内存 搬运数据的速度。

现象: 在 4096/4096 的配置下,显卡的 sm 利用率确实能冲到 93%,这证明显卡算力没问题。

病根: 显卡处理完这 4096 个 token 后,CPU 没能及时把下一批数据喂过来,导致出现了大量的 0% 空转。你的 85 tokens/s 其实是“工作时间+大量空等时间”被平均后的结果。

调整 KV Cache 的位宽(解决 68k tokens 的内存压力)
V100 只有 32G 显存。

68k tokens 在 FP16 下约占 8.5GB(以 GQA 架构 7B 模型计)。

加上模型权重和内部 Buffer,显存已经非常紧张。

操作: 强制使用 q8_0 或 q4_0 缓存:

Bash
--cache-type-k q4_0 --cache-type-v q4_0
这能大幅减少显存带宽压力,让 CPU 给显卡喂数据更快。

C. X99 平台的 PCIe 带宽限制
你的 mclk 锁在 877MHz,且 sm 频繁归零,说明数据从内存通过 PCIe 搬到 V100 的过程太慢了。

优化: 检查你的 V100 是否插在主板的 PCIe 3.0 x16 全速插槽上?如果插在 x4 或 x1 的转接线上,68k tokens 的搬运延迟会直接毁掉所有吞吐量。

你的 4096/4096 设置已经成功让显卡能够跑满(93%),但 CPU 和总线跟不上。 建议下一步操作:

必须开启 --flash-attn。

将 KV Cache 压缩为 q4_0。

如果可能,减少 API 的分段发送,确保 llama.cpp 的 API 接收端能够一口气吃掉 4096 个 token。