今天在大神的幫助下找到了一個解決方法,原來這個問題是因為在 Windows 8 上面缺少了環境變數 TRACE_LOGGING_MEMORY,然後在執行 Log.cmd 的時候就會去使用 systeminfo.exe 並利用它的結果来查看記憶體的容量,根據文章的解釋是因為中文系統下面的 systeminfo.exe 所輸出的資訊與 Log.cmd 預期的不符合,所以它無法辨識出正確的記憶體資訊!此時只要利用下面的方式即可解決:
> set TRACE_LOGGING_MEMORY=4096 > log.cmd
設定 4096 的原因是為了讓 GPUView 使用大的記憶體緩衝區,必須設定大於 4000 才會使用大的記憶體緩衝區,如果小於 4000 大於 2000,則會使用中等的記憶體緩衝區,小於 2000 的話會使用小的記憶體緩衝區!這個可以視狀況調整!
另外根據 GPUView.chm 裡面「Enabling Logging of DirectX Video Acceleration Version 2 and Direct3D Version 9 Events」,想要追蹤 DXVA2 或是 D3D9 Events 的話,必須在註冊表裡加入:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Media Foundation] "WmiInstrumentation"=dword:00000001
即可正常取得 Event!
經過實際測試,可以把問題解決囉!
基本上 Log.cmd 有問題是可以理解的,畢竟其實我的問題是在日文機上面覆現的,所以大概只要系統預設 CodePage 是這類特殊格式的機器,大概都會遇到一樣的問題吧! 另一種解決法可以使用 CHCP 指令,這個指令可以指定所要使用的 CodePage,因為 Log.cmd 當初設計的環境應該是英文語系的國家,所以才會直接在使用 systeminfo.exe 之後直接搜尋"Total Physical Memory"字串,建議可以在命令模式下輸入下列指令:
> CHCP 65001
將 CodePage 切換至 UTF-8,這樣 systeminfo.exe 就會輸出英文字串"Total Physical Memory",原來的 Log.cmd 就可以正常運作了!
2015/06/22 新增:
> CHCP 437
將 CodePage 切換至 OEM - United States 也可以正常運作!這裡再記錄一下!
沒有留言:
張貼留言