最近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

Test 3 [Moving inversions, ones&zeros, Parallel]
テスト 3 [移動反転、1 と 0、並列]

このテストでは、すべて 1 と 0 のパターンを持つ移動反転アルゴリズムを使用します。キャッシュは有効になっていますが、テスト アルゴリズムに多少干渉します。キャッシュを有効にすると、このテストはそれほど時間がかからず、すべての「ハード」エラーといくつかのより微妙なエラーをすばやく検出できます。


Test 4 [Moving inversions, 8 bit pattern]
テスト4 [移動反転、8ビットパターン]

これはテスト 3 と同じですが、8 ビット幅の「ウォーキング」 1 と 0 のパターンを使用します。このテストでは、「ワイド」メモリ チップの微妙なエラーをより適切に検出します。


何回か試してみたけど、エラーが出ているメモリ領域は、
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 の範囲だと、以下のようになります。

0xbef20 0xbef21 0xbef22 0xbef23 0xbef24 0xbef25 0xbef26 0xbef27 
0xbef28 0xbef29 0xbef2a 0xbef2b 0xbef2c 0xbef2d 0xbef2e 0xbef2f 
0xbef30 0xbef31 0xbef32 0xbef33 0xbef34 0xbef35 0xbef36 0xbef37 
0xbef38 0xbef39 0xbef3a 0xbef3b 0xbef3c 0xbef3d 0xbef3e 0xbef3f 
0xbef40 0xbef41 0xbef42 0xbef43 0xbef44 0xbef45 0xbef46 0xbef47 
0xbef48 0xbef49 0xbef4a 0xbef4b 0xbef4c 0xbef4d 0xbef4e 0xbef4f 
0xbef50 0xbef51 0xbef52 0xbef53 0xbef54 0xbef55 0xbef56 0xbef57 
0xbef58 0xbef59 0xbef5a 0xbef5b 0xbef5c 0xbef5d 0xbef5e 0xbef5f 
0xbef60 0xbef61 0xbef62 0xbef63 0xbef64 0xbef65 0xbef66 0xbef67 
0xbef68 0xbef69 0xbef6a 0xbef6b 0xbef6c 0xbef6d 0xbef6e 0xbef6f 
0xbef70 0xbef71 0xbef72 0xbef73 0xbef74 0xbef75 0xbef76 0xbef77 
0xbef78 0xbef79 0xbef7a 0xbef7b 0xbef7c 0xbef7d 0xbef7e 0xbef7f 

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

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

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

bcdedit /set {badmemory} badmemoryaccess no

bcdedit /set {badmemory} badmemorylist 0xbef20 0xbef21 0xbef22 0xbef23 0xbef24 0xbef25 0xbef26 0xbef27 0xbef28 0xbef29 0xbef2a 0xbef2b 0xbef2c 0xbef2d 0xbef2e 0xbef2f 0xbef30 0xbef31 0xbef32 0xbef33 0xbef34 0xbef35 0xbef36 0xbef37 0xbef38 0xbef39 0xbef3a 0xbef3b 0xbef3c 0xbef3d 0xbef3e 0xbef3f 0xbef40 0xbef41 0xbef42 0xbef43 0xbef44 0xbef45 0xbef46 0xbef47 0xbef48 0xbef49 0xbef4a 0xbef4b 0xbef4c 0xbef4d 0xbef4e 0xbef4f 0xbef50 0xbef51 0xbef52 0xbef53 0xbef54 0xbef55 0xbef56 0xbef57 0xbef58 0xbef59 0xbef5a 0xbef5b 0xbef5c 0xbef5d 0xbef5e 0xbef5f 0xbef60 0xbef61 0xbef62 0xbef63 0xbef64 0xbef65 0xbef66 0xbef67 0xbef68 0xbef69 0xbef6a 0xbef6b 0xbef6c 0xbef6d 0xbef6e 0xbef6f 0xbef70 0xbef71 0xbef72 0xbef73 0xbef74 0xbef75 0xbef76 0xbef77 0xbef78 0xbef79 0xbef7a 0xbef7b 0xbef7c 0xbef7d 0xbef7e 0xbef7f 


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

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

c:\>bcdedit /enum {badmemory}

RAM 不良
--------------------------------
identifier              {badmemory}
badmemoryaccess         No
badmemorylist           0xbef20
                        0xbef21
                        0xbef22
                        0xbef23
                        0xbef24
                        0xbef25
                        0xbef26
                        0xbef27
                        0xbef28
                        0xbef29
                        0xbef2a
                        0xbef2b
                        0xbef2c
                        0xbef2d
                        0xbef2e
                        0xbef2f
                        0xbef30
                        0xbef31
                        0xbef32
                        0xbef33
                        0xbef34
                        0xbef35
                        0xbef36
                        0xbef37
                        0xbef38
                        0xbef39
                        0xbef3a
                        0xbef3b
                        0xbef3c
                        0xbef3d
                        0xbef3e
                        0xbef3f
                        0xbef40
                        0xbef41
                        0xbef42
                        0xbef43
                        0xbef44
                        0xbef45
                        0xbef46
                        0xbef47
                        0xbef48
                        0xbef49
                        0xbef4a
                        0xbef4b
                        0xbef4c
                        0xbef4d
                        0xbef4e
                        0xbef4f
                        0xbef50
                        0xbef51
                        0xbef52
                        0xbef53
                        0xbef54
                        0xbef55
                        0xbef56
                        0xbef57
                        0xbef58
                        0xbef59
                        0xbef5a
                        0xbef5b
                        0xbef5c
                        0xbef5d
                        0xbef5e
                        0xbef5f
                        0xbef60
                        0xbef61
                        0xbef62
                        0xbef63
                        0xbef64
                        0xbef65
                        0xbef66
                        0xbef67
                        0xbef68
                        0xbef69
                        0xbef6a
                        0xbef6b
                        0xbef6c
                        0xbef6d
                        0xbef6e
                        0xbef6f
                        0xbef70
                        0xbef71
                        0xbef72
                        0xbef73
                        0xbef74
                        0xbef75
                        0xbef76
                        0xbef77
                        0xbef78
                        0xbef79
                        0xbef7a
                        0xbef7b
                        0xbef7c
                        0xbef7d
                        0xbef7e
                        0xbef7f

c:\>

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

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

まとめ

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

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

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

(参考URL)
Blacklist bad memory addresses in Windows

Blacklisting RAM Pages (MemTest86 Technical Information)

Views: 84

カテゴリー: 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(早朝)にも変更が予定されていますが、
対象は「放送大学」なので、こちらを見ていない場合は優先度は低いかもしれません。

Views: 97

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

古い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で実行してください
$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
switch ($release) {
{ $_ -ge 533320 } { $version = '4.8.1 or later'; break }
{ $_ -ge 528040 } { $version = '4.8'; break }
{ $_ -ge 461808 } { $version = '4.7.2'; break }
{ $_ -ge 461308 } { $version = '4.7.1'; break }
{ $_ -ge 460798 } { $version = '4.7'; break }
{ $_ -ge 394802 } { $version = '4.6.2'; break }
{ $_ -ge 394254 } { $version = '4.6.1'; break }
{ $_ -ge 393295 } { $version = '4.6'; break }
{ $_ -ge 379893 } { $version = '4.5.2'; break }
{ $_ -ge 378675 } { $version = '4.5.1'; break }
{ $_ -ge 378389 } { $version = '4.5'; break }
default { $version = $null; break }
}

if ($version) {
Write-Host -Object ".NET Framework Version: $version"
} else {
Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}

  • Windows Management Frameworkを5.1以上に更新(OS再起動要求有)
    バージョンを確認するには、Powershell上で以下のコマンドを実行し、
    PSVersion行を確認してください。
$PSVersionTable
  • 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の規定値を変える
(設定確認)
PS C:> Get-PowerCLIConfiguration
Scope ProxyPolicy DefaultVIServerMode InvalidCertificateAction DisplayDeprecationWarnings WebOperationTimeout
Seconds
----- ----------- ------------------- ------------------------ -------------------------- -------------------
Session UseSystemProxy Multiple Unset True 300
User
AllUsers
(設定変更:PowerCLI10以前の動作と同じ、警告表示するが、作業は続行する)
PS C:\> Set-PowerCLIConfiguration  -InvalidCertificateAction  Warn  -Scope  AllUsers
Perform operation?
Performing operation 'Update PowerCLI configuration.'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S]Suspend  [?] Help (defaultis "Y"): A
Scope    ProxyPolicy     DefaultVIServerMode InvalidCertificateAction  DisplayDeprecationWarnings WebOperationTimeout Seconds
-----    -----------     ------------------- ------------------------  -------------------------- -------------------
Session  UseSystemProxy  Multiple            Warn                      True                       300
User
AllUsers                                     Warn

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

Get-PowerCLIVersion

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

Update-Module -Name VMware.PowerCLI

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

Get-Module -Name VMware.* -ListAvailable | Uninstall-Module -Force

関連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のセキュリティ警告を無視する設定

Views: 31

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