那個伺服器監控真的很厲害。你應該把它包裝起來賣啊! ![]()
或者至少公開給大家用……
那個伺服器監控真的很厲害。你應該把它包裝起來賣啊! ![]()
或者至少公開給大家用……
Na9d,
謝謝你的讚美,不過想要獨立提供這個工具真的很難,有幾個原因。
首先,很多內容都是為了解決 QNAP 結構上的問題而存在。QNAP OS 自帶的 busybox 已經非常老舊,無法修改或更新,所以我必須建立一個容器,裡面包含我自己的現代化工具集,所有功能也都寫在這個環境而不是原生工具裡。
但 QNAP 為了過度保護預設配置,任何你在 shell 裡設置的東西都無法在重啟或韌體更新後保留。啟動的服務進程,全部都是單一 session。有必要在啟動時用 autorun.sh 腳本重建整個環境:重新啟動監控服務、串聯工具箱、重新安裝 cron 任務,因為 QNAP 會在每次重啟(包括系統崩潰重啟)時覆蓋現行的 crontab,所以持久化的任務必須存放在正確的設定檔,並由啟動腳本重新放回。而且每次韌體更新後,autorun 鉤子本身都必須重新檢查,因為更新可能會重置它。
所以如果要提供一個獨立版本,就得要求大家自己修改 autorun 和 cron。這兩個過程如果操作失誤,就有可能帶來毀滅性的改變。我真的很喜歡 QNAP 的很多優點,但他們為了避免配置災難採取的各種限制,讓 workaround 都必然變得具侵入性。
我能夠打包它嗎?大概可以。但一旦有人弄壞 NAS 或丟失資料而想找人負責,我就得背這個鍋了。
只是想說一下,我已經在我的 TS-h1290FX 和 TS-j1277AFX 上安裝了 Rel 6,兩台都安裝得很順利,沒有出現任何問題。不過安裝完後,1277 重新開機時等了很久,但現在一切都沒問題。我其實拖延了升級超過一週。
我覺得這不是測試版,因為沒有測試版標籤,甚至連 RC(發行候選)標籤都沒有。對我來說,看起來像是 QuTS hero 6 的完整正式發行版。
哈!眼光真好。我已經習慣 h6.x 系列都是測試版,結果根本沒注意到 3550 居然是正式發行。
雖然有些人可能會說它其實還是測試版,只是發佈時漏掉了標籤。 ![]()
說真的,總得有個起點正式上線,不然它就永遠停留在測試版或 RC 階段了。
你好,
這個週末我完全重置了我的 NAS,並使用最新的韌體:h6.0.3564 Build 20260723。
在重置之前的安裝過程中,新版 nvkernerdriver 驅動程式已自動安裝。
重置後,Ollama 上無法重新啟動模型;最後在安裝 Nvidia 驅動程式後,重啟後才運作成功。儘管如此,今天早上又再一次無法在 GPU 上啟動模型。
就如同週末時一樣,我在「dmesg」裡看到了這些錯誤:
[59082.857111] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[59082.871729] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[59083.013898] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[59083.028519] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[59083.568050] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[59083.582684] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[59083.638931] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[59083.653570] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[59084.839297] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[59084.853921] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
重新啟動 Ollama 容器並不足以恢復顯示卡功能,我必須重新啟動 NAS。
自從重置後,我終於能夠順利安裝一個虛擬機,虛擬交換器也沒有再出現錯誤。
但這無可否認地造成時間浪費,而備份必須妥善管理。
這週末在研究如何讓顯卡正常運作時,我找到這篇文章;我不是很想按照它的建議去做:Getting GPU-Accelerated PaddlePaddle Working in Docker on QNAP NAS
除非 QNAP 能改善這個情況
@achimede333 — 那個 dmesg 輸出就是你的問題所在。不是驅動、不是 Ollama,也不是你的 VRAM,別再在那些地方白忙了。
在進一步閱讀前
我也是 QNAP 用戶,不是 QNAP 員工,跟 QNAP 支援也沒有關係。以下所有內容都是我根據類似硬體的自身經驗誠心提供,沒有任何保證。
你的 NAS 必須由你自行負責。 在執行任何指令前請先理解每行命令的意義,並確保你關心的資料已經有最近而且驗證過的備份。
需要特別釐清哪些行為有風險:
- 診斷用指令(
df,free,du,dmesg,uptime)都是唯讀,不會改變任何資料。- 重新掛載和編輯自動執行則是系統層級變動。打錯一次
mount命令或有問題的開機腳本,都可能讓 NAS 進入需要救援的狀態。我對因此而造成的任何硬體、資料,或設定損壞不負任何責任。如果你不想承擔這個風險,建議直接向 QNAP 支援提交服務單 —— 考慮到日誌的內容,這可能是更好的選擇。
faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer
nvCheckOkFailedNoLog: Out of memory [NV_ERR_NO_MEMORY]
NVIDIA 核心驅動程式正在嘗試為 MMU 非可重播錯誤配置 client shadow fault buffer。這個緩衝區是在系統記憶體(RAM)裡,不在 VRAM。註冊它是設置 CUDA/UVM context 的一部份。如果這個配置失敗,就無法建立 CUDA context —— 所以當 Ollama 啟動並尋找 GPU 時,找不到可用的資源,就回退到 CPU。
這就解釋了你觀察到的所有現象:
nvidia-smi 一直都能用,因為它只用管理庫,不需要 CUDA context。這是 QNAP 上最容易誤導人的症狀。你的 dmesg 記錄在 59082 秒 —— 16 小時 24 分鐘開機時間。再加上你自己發現重啟 Ollama container 沒用,必須整台 NAS 重開,這個模式非常明顯:開機後可以用,跑幾個小時就壞,一定要重開才能恢復。
這就是記憶體耗盡逐漸發生的現象。沒有任何設定錯誤會這樣,所以你完全重置系統也沒能解決,而且本來就不會有效。
這些都是唯讀操作。當系統壞掉時馬上執行:
df -h /
free -h
然後重開 NAS 之後再執行一次,互相比較。如果在壞掉時 root 空間比重開後大很多,你就找到了答案,可以停止瞎猜。
我能理解你對 PaddlePaddle 貼文的猶豫——它大部份內容是建構 container,跟你沒關係。你不用 Dockerfile、不用 pip pins,也不用其它東西。只需這一行:
mount -o remount,size=800M /
QNAP 的 root 檔案系統是 ramdisk,容量預設很小。這個修改可以讓 GPU 驅動程式有足夠空間配置 fault buffer。
在壞掉狀態下測試——如果之後模組可以載到 GPU,不用重開 NAS,那你一次就證明了診斷也證明了解法。如果沒效,也沒損失,因為這個設定下次重開就會回復。
重新掛載並不會持久。mjellybaby 把它寫到 NvKernelDriver QPKG 啟動腳本裡,這麼做雖然有效,但你每次更新 QPKG 驅動就會覆蓋該腳本——而你已經更新過幾次驅動了。
我會選擇寫到 autorun.sh,這樣可以防止 QPKG 更新時被覆蓋。固件更新後還是要重新確認,但這只需檢查一次,避免每次動驅動都會出現隱性回退。
注意啟用及編輯 autorun 本身就是一個值得先理解的系統改變——有問題的 autorun 會在每次開機自動執行。
值得查清楚,因為擴充容量只是治標不治本。
注意你目前跑的 h6.0.1.3564 版本 release notes 裡有寫:「修復了 API 處理異常導致異常日誌寫入,進而導致 ramdisk 錯誤的問題。」 QNAP 本來就知道這個 firmware 版本有 ramdisk 耗盡的缺陷。要嘛修復不完整,要嘛你系統裡有別的東西在耗用。
要找出消耗者,在系統壞掉狀態下(唯讀)執行:
du -xk -d1 / 2>/dev/null | sort -n | tail -20
-x 保證只查 root filesystem,不會跑到 storage pool。
有個請求:無論結果如何,請貼上你壞掉前後的 df -h /。如果 ramdisk 開機後時間越久越滿,並造成 h6.0.1 GPU 問題,讓 QNAP 官方也能在這串帖看到。
感謝你的精彩回覆。
當然,也許我找解決方案的地方並不正確。
我剛剛測試了以下指令:
你是用 Busybox 還是用某些工具的安裝,例如透過 Entware?
你的設定跟我一樣嗎,沒有遇到同樣的問題嗎?
我並沒有猶豫要遵循你的建議,還有那位在 Paddle 那篇討論串上貼出來的人的建議 ![]()
其實,我是在說這個討論串很有意思,也凸顯了 QNAP 特有的一個結構,這並不是「顯而易見」的。
祝好
achimede333,
抱歉,這次是我的問題。我每次啟動的時候都會把整個工具箱都載入到容器裡並放到 path,結果我總是忘了不是每個人都隨手有同一組工具。我給你的那些指令是假設有現代 busybox。你的其實是 QNAP 原廠的 busybox,比較舊。
free 不加任何參數在每個 busybox 都能用(輸出單位是 KB)。如果連這個也出問題,head -3 /proc/meminfo 絕對穩 — 它直接讀 kernel,沒有可以搞錯的參數。du -xks /* 可以只看一層,不需要用 -d。這些指令可以提供你 QNAP 原廠 busybox(「願它那古老殘缺的屁股下地獄」)所能給出的同樣資訊。這也是我對 QNAP 長期抱怨之一,他們牢牢掌控作業環境。原廠 busybox 沒辦法更新、沒辦法替換,所以你要嘛繞路,要嘛像我這樣帶自己的工具箱到容器裡。
dmesg | grep -i NVRM
df -k /
uptime
head -3 /proc/meminfo
注意我用 df -k 而不是 df -h —— 就像 free -h 在你的 busybox 不能用一樣。-k 在 busybox 是預設值,所以版本怎麼樣都能跑。大小都是 KB。
我習慣自己的系統,裡面裝了 192GB 記憶體。如果你的差很多,我就想釐清 root ramdisk 是不是根據可用記憶體比例去分配大小,而不是固定上限。
如果真的是這樣,很多事情就能解釋:同一韌體,同一 GPU 系列,在兩台機器上表現完全不同,只是因為某台有更多 buffer 讓 NVIDIA driver 分配 fault buffer。這就變成記憶體容量決定的問題,而不是設定問題——這種情況常常等到有人用比較小的機器才會被發現。
df -k / 跟 /proc/meminfo 輸出合起來可以讓我們知道是哪種情況。
Thank you for your help!
The defect was present before the model loading. Here is the result before and after the model loading, in the… CPU ![]()
Before the load :
]$ dmesg | grep -i NVRM
[ 284.005891] NVRM: loading NVIDIA UNIX Open Kernel Module for x86_64 575.64.05 Release Build (dvs-builder@U22-A23-13-1) Fri Jul 18 16:00:10 UTC 2025
[27877.210663] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27877.225294] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27877.601371] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27877.616030] NVRM: sysmemConstruct_IMPL: *** Cannot allocate sysmem through fb heap
[27877.623639] NVRM: nvAssertOkFailedNoLog: Assertion failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from pRmApi->Alloc(pRmApi, device->session->handle, isSystemMemory ? device->handle : device->subhandle, &physHandle, isSystemMemory ? NV01_MEMORY_SYSTEM : NV01_MEMORY_LOCAL_USER, &memAllocParams, sizeof(memAllocParams)) @ nv_gpu_ops.c:4647
[27878.531209] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27878.545826] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27878.601580] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27878.616207] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27880.102423] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27880.117054] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27900.022239] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27900.036867] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28156.315466] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28156.330119] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28156.551884] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28156.566518] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28157.186096] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28157.200726] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28157.258996] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28157.273628] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28158.257236] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28158.271863] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28182.958643] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28182.973267] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
]$ df -k /
Filesystem 1K-blocks Used Available Use% Mounted on
none 473088 390860 82228 83% /
]$ uptime
23:37:41 up 8:18, load average: 21.30, 23.85, 26.89
]$ head -3 /proc/meminfo
MemTotal: 32328040 kB
MemFree: 562976 kB
MemAvailable: 357008 kB
After :
]$ dmesg | grep -i NVRM
[ 284.005891] NVRM: loading NVIDIA UNIX Open Kernel Module for x86_64 575.64.05 Release Build (dvs-builder@U22-A23-13-1) Fri Jul 18 16:00:10 UTC 2025
[27877.210663] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27877.225294] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27877.601371] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27877.616030] NVRM: sysmemConstruct_IMPL: *** Cannot allocate sysmem through fb heap
[27877.623639] NVRM: nvAssertOkFailedNoLog: Assertion failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from pRmApi->Alloc(pRmApi, device->session->handle, isSystemMemory ? device->handle : device->subhandle, &physHandle, isSystemMemory ? NV01_MEMORY_SYSTEM : NV01_MEMORY_LOCAL_USER, &memAllocParams, sizeof(memAllocParams)) @ nv_gpu_ops.c:4647
[27878.531209] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27878.545826] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27878.601580] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27878.616207] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27880.102423] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27880.117054] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27900.022239] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27900.036867] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28156.315466] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28156.330119] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28156.551884] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28156.566518] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28157.186096] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28157.200726] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28157.258996] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28157.273628] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28158.257236] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28158.271863] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28182.958643] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28182.973267] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
]$ df -k /
Filesystem 1K-blocks Used Available Use% Mounted on
none 473088 390860 82228 83% /
]$ uptime
23:50:18 up 8:31, load average: 33.62, 35.05, 32.14
]$ head -3 /proc/meminfo
MemTotal: 32328040 kB
MemFree: 6922760 kB
MemAvailable: 6712488 kB
I unloaded model and execute :
mount -o remount,size=800M /
I reloaded the model again in Ollama, without any change.
]$ dmesg | grep -i NVRM
[ 284.005891] NVRM: loading NVIDIA UNIX Open Kernel Module for x86_64 575.64.05 Release Build (dvs-builder@U22-A23-13-1) Fri Jul 18 16:00:10 UTC 2025
[27877.210663] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27877.225294] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27877.601371] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27877.616030] NVRM: sysmemConstruct_IMPL: *** Cannot allocate sysmem through fb heap
[27877.623639] NVRM: nvAssertOkFailedNoLog: Assertion failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from pRmApi->Alloc(pRmApi, device->session->handle, isSystemMemory ? device->handle : device->subhandle, &physHandle, isSystemMemory ? NV01_MEMORY_SYSTEM : NV01_MEMORY_LOCAL_USER, &memAllocParams, sizeof(memAllocParams)) @ nv_gpu_ops.c:4647
[27878.531209] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27878.545826] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27878.601580] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27878.616207] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27880.102423] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27880.117054] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[27900.022239] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[27900.036867] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28156.315466] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28156.330119] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28156.551884] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28156.566518] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28157.186096] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28157.200726] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28157.258996] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28157.273628] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28158.257236] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28158.271863] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[28182.958643] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[28182.973267] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[31392.811153] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[31392.825783] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[31393.035352] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[31393.049973] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[31395.347200] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[31395.361828] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[31395.438280] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[31395.452912] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
[31403.016203] NVRM: nvCheckOkFailedNoLog: Check failed: Out of memory [NV_ERR_NO_MEMORY] (0x00000051) returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353
[31403.030848] NVRM: faultbufCtrlCmdMmuFaultBufferRegisterNonReplayBuf_IMPL: Error allocating client shadow fault buffer for non-replayable faults
]$ df -k /
Filesystem 1K-blocks Used Available Use% Mounted on
none 819200 390860 428340 48% /
]$ uptime
00:21:08 up 9:02, load average: 28.42, 28.40, 31.70
]$ head -3 /proc/meminfo
MemTotal: 32328040 kB
MemFree: 6029652 kB
MemAvailable: 5823852 kB
嗯,看來我的猜測是錯的。
remount 完全按照預期運作:上限從 462 MiB 提升到 800 MiB,使用率由 83% 降到 48%,有 418 MiB 可用。而 NVRM 錯誤依然不斷累積,正如 uptime 8:43(t=31392–31403)的大量錯誤所示,也就是在 8:31 那次取樣後。
從這些追蹤紀錄很明顯可以看出,你的系統記憶體狀況非常嚴峻。第一筆取樣時,MemTotal 30.8 GiB,MemAvailable 卻只有 349 MiB。這台 48 GB 的機器在 ZFX 佔用記憶體後,只剩 1.1% 可用。381 MiB 的 ramdisk 跟這種差距比起來根本是九牛一毛。我一開始用 TVS-AIH1688ATX 時也遇過一堆記憶體不足的問題,最後還是咬牙加了記憶體。說句公道話,QNAP 客服對於我加裝記憶體都沒說什麼,依然給了很棒的技術支援。我不能保證加記憶體就能解決你的問題,只是單純分享我個人的經驗。
我覺得現在可以開個客服單,請技術支援協助你處理了。
祝你好運,有新進展記得告訴大家!
@achimede333 回報的記憶體資訊看起來相當正常。我的 TVS-672XT 有 32 GB 記憶體,執行 head 03 /proc/meminfo 所顯示的記憶體數量也差不多。

接下來在 Resource Monitor(資源監控)裡,情況又有點不同:
顯示我有 11 GB 空間,不是 6 GB。
目前我只用了約 4 GB 的交換空間(swap)。
我猜這裡的結論就是,如果你想在 NAS 上跑大型語言模型(large language models),你真的需要大量記憶體。
QuTShero 在 ZFS ARC 上遇到問題。
你們好,
在我之前的訊息中,NVIDIA 驅動程式在使用 Ollama 模型之前就已經出錯了。
自從我重置系統後,一直在恢復檔案和重新配置,這對我來說工作量很大。
這可能會有影響,而監控加上監督可能會讓這件事更簡單。
其實我從購買時開始就有 32GB 的記憶體,考慮到現在的價格,我暫時沒辦法再買:P
在重置前,我在晚上就已經收到了 NAS 記憶體不足的訊息,但原因並不清楚(例如沒有使用 Ollama,我知道問題來自其他地方,但還是想說明一下)。
後來我們在網路上發現一些錯誤(「「[NV_ERR_NO_MEMORY](0x00000051)returned from _memdescAllocInternal(pMemDesc) @ mem_desc.c:1353…」)追蹤,主要是 NVIDIA 驅動程式本身造成,但你們的系統記憶體更多,似乎沒有遇到這個問題。
接下來還是要看情況,不過關於監控的部分,目前我應該沒有時間討論這個主題(以後有機會一定會)。
你可以降低 ARC 最大記憶體用量。我設成 50% 就沒問題。
為什麼 QuTS hero 的記憶體用量那麼高?| QNAP
謝謝你,我可以測試看看。
不過,我是在天黑後才發現這些訊息。這肯定是維修/夜間作業造成的。
編輯:
經過檢查,我可能會找到一些不是「很」(這是相對的 :)) 貴的酒吧。
@kzboray 你那邊用了什麼?
我找到了「KSM56E46BD8KM‐48HM」,但我還需要查查看賣家。
目前我用的是「TS4GLA72V8E」。
我是在 Newegg.com 購買這些的。它們附有終身保固,這一點我很喜歡。而且我不想混用不同品牌和記憶體時序,所以我把原本的 UDIMM 拆下來,安裝了兩條新的記憶體。
我先買了一組,確認它們能夠運作並能讓 NAS 完成 POST 開機自檢。結果可以,所以我又買了第二組來湊足 192GB。第一次安裝好前兩條記憶體開機時,NAS 花了大約 5 分鐘進行 POST 的記憶體驗證。
看起來很有趣,特別是在價格上漲之前……
這個品牌其實是美國品牌。
我想是指 ECC on-die。
在歐洲似乎有 PHS-Memory,不過我只知道那些大品牌(Kingston、Corsair、Crucial、HPE、Samsung 等)。
我從 NEMIX 收到的記憶體標示為美光(Micron)記憶體,而且是 ECC on-die。雖然我不能說他們只出貨美光產品,但我分兩次購買的兩組記憶體條,間隔一個月,都是完全相同的美光 UDIMM。