最近PCがフリーズするので対策してみる。(Windowsで、一部メモリ領域を無効化する方法)

現行コンソール用PCが17インチのi7 4800QM+GTX970M(モンハンワールドが何とか動くレベル)でしたが最近メモリ異常と思われるフリーズ事象が出て試行錯誤してみました。

PCがフリーズを繰り返す

PCがフリーズを繰り返す。そのたびに強制電源OFF/ONで対応していたが、かなり頻繁になってきたので、調査開始

Windowsのメモリチェックを実施

まずは、Windows10にメモリチェックの機能があるので、これでチェック。
(スタートメニュー -> Windows 管理ツール -> Windows メモリ診断)

標準だと、特にエラー検知なし。
詳細でチェックすると、途中(20%ぐらい)でフリーズ

Memtest86でチェック

続いて、Windows側の問題を除外するため、
DVD起動のMemtest86でチェックすると、特定の領域、テストパターンでエラーが見つかった。
ただ普通は何回か試しても、同じような結果が出ることが多いのだが、
毎回エラーの出るアドレスが微妙に変わるし、パターン3,4でのみエラーが出るのがちょっと気になる。通常ならほかのパターンでもエラーが出るはずなのに。

https://www.memtest86.com/tech_individual-test-descr.html


何回か試してみたけど、エラーが出ているメモリ領域は、
000bef20000 – 000bef7ffff
の範囲でているみたい。

(別パターン)

メモリ交換

とりあえず、メモリエラーが発見されたので、メモリを交換してみる。
今回のノートパソコンですが、DDR3のメモリが4枚刺さるものなんですが、現状は8GB2枚の刑16GBで稼働していました。

まずは、2枚のうち1枚を取り外して、試してみる。
現象同じでした。では、残ったメモリが被疑部品かな

では残ったメモリを取り外して、先ほど交換したメモリを元あったスロットに交換してみる。あれ、こちらも現象同じ・・・・・

もしかしてメモリ両方ダメだったのか
それでは新品メモリ8GBに交換してみる

やっぱり同じだ

メモリスロット変更

とりあえず可能性をつぶしてみる。メモリスロットのエラーか?
使用していた2スロットとは別の2スロットにメモリを差し替えてみる。

やっぱりダメ。となると、メモリソケットも問題なし。
マザーボード側の配線の問題も薄いかな。
マザーボードは正直変えられないし・・・

CPU交換

最後の手段でCPU交換を検討。
今回のノートPCのCPUはi7 4810MQだから、メモリコントローラはCPUに内蔵。
メモリコントローラが故障しているとなると、CPU交換しかない。

あとMEMTEST86で特定のパターンのみエラーになるのも気になる。そうするとCPIのALU部分も怪しくなってくる。

ただ、4810MQの中古を探したが、ちょっとお高めなので、
比較的安価でほとんどスペックが変わらない4800MQを入手。
(4810MQ 2.8GHz(Max3.80GHz) -> 4800MQ 2.7GHz(MAX3.7GHz))

CPU交換時に、CPUソケットも確認したけど、特に異常は見られない。
それでは、CPU交換。

が、やはりだめ。症状変わらず。
CPU交換してダメということは、メモリコントローラやCPU演算部分についても

その他ハードウェア被疑考察

つまり、ハードウェア的には
・メモリモジュール
・メモリスロット
・メモリコントローラ(CPU)
については問題ない模様。あと怪しいパーツは・・・・

Windowsの利用メモリマップをMSINFO32使って、確認してみたけど、
特定の危機にメモリマップドIOとしてマッピングされているものもなし。
(エラーの出る領域は「000bef20000 – 000bef7ffff」3055MBから1MB程度の範囲な模様)

MSINFO32

となると、交換できそうなパーツについては、全滅状態。
マザー変えるのは、パーツ調達的な部分で難しいので、ハードウェア的な対策では無理そう。

ソフトウェア的な対策(BCDEDIT)

いろいろ調査した結果、WinowsやLinuxでは特定のメモリ領域を意図的に使用しないようにする設定ができるとのこと。(どうやらECCメモリを利用しているときにメモリ不具合を検知したときに、その領域を極力利用しないように登録する機能っぽい)

Windows BCDEDIT(“{badmemory}”)
Linux GRUBでの設定(“GRUB_BADRAM”)

Windowsでは、BCDEDITというコマンドで、そのメモリ使用除外設定指定が出来るようです。
Windowsでは、メモリ管理の最小単位が4KBということで、4KB単位で使用しないメモリ領域を指定していきます。

今回の場合、000bef20000 – 000bef7ffffを指定するので、4KB単位で指定するとなると、下3桁を無視する形で以下のように領域をまとめます。

000bef20000 -> 000bef20
000bef7ffff -> 000bef7f

000bef20000 – 000bef7ffff の範囲だと、以下のようになります。

では、設定していきます。
管理者として実行したコマンドプロンプト上で次のコマンドを実行していきます。

・指定したメモリアドレスの使用を禁止する設定
bcdedit /set {badmemory} badmemoryaccess no

・使用しない領域の登録
bcdedit /set {badmemory} badmemorylist <アドレス指定1> <アドレス指定2> ・・・・


badmemorylistは、1回で実行してください。

正しく登録されたかどうかを確認するは、以下のコマンドを入力します。
bcdedit /enum {badmemory}

これで、Windowsを再起動すれば、指定したメモリ領域を使用しなくなります。

注意点として、Windows10の大規模アップデートなどを実施した場合に、これらの設定がクリアされてしまう場合があるとのことですので、注意してください。

まとめ

BCDEDITでメモリ除外設定をしたことで、やっと安定してノートPCを利用することができるようになりました。

そろそろ、新PCも検討しているので、それまで持てばという暫定対応のようなものですが、とりあえず急場をしのげそうです。
(コンソールPCで、メイン処理は別にメモリ256GB搭載したESXサーバがいるのでなにかあっても移行は楽)

モンハンワイルズ目当てのコンソールPC更新なので、スペック検討中です。

(参考URL)
Blacklist bad memory addresses in Windows

Blacklisting RAM Pages (MemTest86 Technical Information)

カテゴリー: Windows, ハード | コメントする

2024年10月のBS/CS放送のトランスボンダの移動について

2024年10月のBS/CS放送のトランスボンダの移動

9/9早朝に、一部BSチャンネルのトランスポンダの変更があったようです。

今回の対象は、「BSアニマックス」と「釣りビジョン」が影響です。
(修正しないと、録画に失敗します。)

TVなどでは、自動で対応されますが、
bondriverを利用したEDCBのようなアプリでは、bondriverの定義ファイルの修正&チャンネルスキャンが必要のようです。

Px4での対応

px4_drv for WinUSBを使っているのであれば、以下のページを参考にすれば対応できると思います。

https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhisonobi.hatenablog.com%2Fentry%2Fbs-transponder-202410

http://manbou.tea-nifty.com/blog/2021/02/post-d5b2b8.html

ほかのドライバ使っていると、ちょっと修正方法が変わります。
(行追加時はチャンネル番号は連番になるように修正して下さい。)

BonDriver_BDAS系ドライバの時はpx4_drv for WinUSBと同じで行けました。(PX-BCUD)
BS03/TS1 0 4 1 17969
BS03/TS2 0 5 1 17970

Radi-sh系ドライバ(PX-Q3PE)だと以下で行けるみたいです。
CH004=1,11765.840,R,0,BS03/TS1,0x0,0x4631
CH005=1,11765.840,R,0,BS03/TS2,0x0,0x4632

ご参考まで

なお、11/11(早朝)にも変更が予定されていますが、
対象は「放送大学」なので、こちらを見ていない場合は優先度は低いかもしれません。

カテゴリー: 未分類 | コメントする

古いOS(WIn2012等)で最新のVMware.PowerCLIをインストールする方法


古いWin2012等のOSで、VMWareのAPIであるPowerCLI動かす方法を調べてみました。
(現時点での最新バージョンは 13.2.1)

最新のVMware.PowerCLIは、以下の前提ソフトが必要なようです。
・.NET Framework 4.7.2 or later または .NET Core 3.1
・Windows PowerShell 5.1 または PowerShell 7.x

この条件は、Windows7(Win2008R2)以降であれば、MSからインストーラがダウンロードできますので、何とかなりそうです。

いろいろ試行錯誤した結果、
以下の方法で、インストール出来ることを確認しました。

  • .netframework 4.7.2 以上に更新(OS再起動要求有)

    現在の .netframework のバージョンを確認するには、以下のコマンドをpowershellで実行してください

  • Windows Management Frameworkを5.1以上に更新(OS再起動要求有)
    バージョンを確認するには、Powershell上で以下のコマンドを実行し、
    PSVersion行を確認してください。
  • Install-Moduleが「NuGet プロバイダーが必要です」というエラーで失敗する場合、
    Netの通信プロトコルをTLS1.2に変更する必要があります。
    (TLS1.2に対応していない場合、powershellで実行)。

    (設定確認)
    [Net.ServicePointManager]::SecurityProtocol
    (設定変更)
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
  • 既存PowerCLIアンインストール
    (旧バージョンを既に導入していた場合、プログラムと機能から実施)
  • PowerCLIのインストール(powershellからコマンド実行)
    Install-Module VMware.PowerCLI

これで一旦インストールできました。

なお、今までは、Connect-VIServer接続時に、証明書エラーがあっても、黄色い文字で警告が出るのみで、処理の継続ができていましたが、
PowerCLI10以降では、完全にエラーとなり、処理が進まなくなっているようです。

これを回避するには、2つあり、以下のいずれかで対応します。

  • Connect-VIServerのオプションで、-Force を付けて実行
  • Set-PowerCLIConfiguration でPowerCLIの規定値を変える

現在のPowerCLIコマンドのバージョンは以下のコマンドで確認できます。

PowerCLIのバージョンアップは、PowerCLI 6.5.1以降をPowerShell Galleryからすでにインストールしている場合は、以下のコマンドで実行できます。

PowerCLI 6.5.1以降インストール済での、PowerCLI削除は以下のコマンドで可能です。。

関連URL

Compatibility Matrix for VMware PowerCLI

.NET Framework 4.7.2 をダウンロード | 無料の公式ダウンロード (microsoft.com)

Download Windows Management Framework 5.1 from Official Microsoft Download Center

【PowerShell】Install-Module MSOnline実施時に「NuGet プロバイダーが必要です」と表示された場合 (zenn.dev)

PowerCLI のインストール (vmware.com)

PowerShell Gallery からの PowerCLI インストール・アップデート方法

PowerCLIのセキュリティ警告を無視する設定

カテゴリー: 未分類 | コメントする