看你问的是"哪个模型现在占着内存",分两条线查,因为你现在llama.cpp和Ollama是两套独立管理机制,各自看各自的:
查 llama.cpp 这边(三个大模型手动切换那套)
直接看容器运行状态,谁在跑就是谁占内存:
docker ps --filter "name=llama-"
有输出说明对应模型正在跑、占着内存;没有输出说明当前llama.cpp这边空闲,一个都没占用。
查 Ollama 这边
Ollama有专门的命令,直接显示当前加载在内存里的模型:
docker exec -it ollama ollama ps
输出格式类似:
NAME ID SIZE PROCESSOR UNTIL
qwythos-9b xxxxx 5.6GB 100% GPU 4 minutes from now
UNTIL 那一列很关键——显示的是还有多久会因为 OLLAMA_KEEP_ALIVE=5m 超时自动卸载,如果输出是空的,说明Ollama这边当前没有任何模型占用内存(都已经自动卸载了)。
综合确认:直接看内存总账
free -h
结合上面两条命令的结果,就能对上"现在到底是谁在占用这些内存"。如果 free -h 显示占用明显但上面两个命令都显示没模型在跑,那说明占用的是其他常驻服务(Frigate/Immich/CompreFace/Hermes这些),不是大模型。
更细一步:确认具体是哪个进程占了多少
docker stats --no-stream
这个会列出所有正在运行的容器各自实时的内存占用(不只是模型相关的),一次性看全貌,比分别查两套更直观,缺点是不会区分"这个容器有没有模型加载在内存里"这个语义,只是纯粹的容器级内存用量。
日常最快速的检查习惯,建议这三条连着跑:
docker ps --filter "name=llama-"
docker exec -it ollama ollama ps
free -h
评论区