質問者
PowerShellでブラウザと別なソフトを同時に立ち上げるとカクカク動くので解決したい

質問
-
はじめての投稿となります。よろしくお願いいたします。
Start-Sleep -Seconds 5
Powerscellを使って、まだ2ヶ月なんですが、下記の問題にぶつかり悩んでおります。
PC起動時に2つのソフトを同時に立ち上げたいのですが、下記のスクリプトを書いたところ、両方ともカクカク動きます。
Start-Sleep -Seconds 5
start https://www.google.com
start F:\TVstreaming\TVshow.exe
1つずつですと、問題なくスムーズに動くのですが、2つですとカクカクしてスムーズに動きません。
高性能のグラフィックカード(GTX1060)を積んでいるノートPC(Windows10)でも試したのですが、やはり動きませんでした。*メインに使うPCはWindows7の64bit小型PCとなります。
そこでネットで調べたところ、CPUのコアごとにソフトが割り当てられるような内容(ProcessorAffinityを使う)があったので、下記のスクリプトを試しました。
start https://www.google.com
Get-Process chrome | Select-Object ProcessorAffinity
$Process = Get-Process chrome; $Process.ProcessorAffinity=1
start F:\TVstreaming\TVshow.exe
Get-Process TVshow | Select-Object ProcessorAffinity
$Process = Get-Process TVshow; $Process.ProcessorAffinity=2
残念ながらスクリプトが間違っているのか、これでもスムーズに動きませんでした(というよりか全くコアごとに割り当てていないようです)。
やはり、これですとうまく割り当てられていないのでしょうか?
あるいは別な方法があるのでしょうか?
初心者の質問で大変恐縮ですがよろしくお願いいたします。
- 編集済み 天気晴れ 2019年2月18日 17:46
すべての返信
-
> PC起動時に2つのソフトを同時に立ち上げたいのですが、下記のスクリプトを書いたところ、両方ともカクカク動きます。
スクリプトの起動にタスクスケジューラを用いていませんか?
その場合、デフォルトでは親プロセス(powershell.exe)のみならず、スクリプトから起動したプロセスについても、プロセス優先度が「通常以下」に設定されてしまうため、処理が重くなることがあります。
対処法としては、タスクをエクスポートして手動で優先度を書き換えてから再インポートする方法があります。
参考:タスクスケジューラから起動されるプロセスの優先度を変更する | Like The Wind - Blog
他の方法としては、以下のようにスクリプトから子プロセスの優先度を変更するのでも良いかも知れません。$Process = Get-Process chrome
$Process.PriorityClass =[System.Diagnostics.ProcessPriorityClass]::Normal
> そこでネットで調べたところ、CPUのコアごとにソフトが割り当てられるような内容(ProcessorAffinityを使う)があったので、下記のスクリプトを試しました。
ProcessorAffinityは使用するコアの番号ではなく、使用する論理プロセッサをビットマスクで指定します。例えば論理プロセッサ数が8個の環境で、そのうち1~4と6の計5個を使いたい場合は、
$Process.ProcessorAffinity = [Convert]::ToInt32("00101111",2)
のように指定します。
- 編集済み 牟田口大介Moderator 2019年2月18日 19:36
- 回答の候補に設定 Haruka6002Microsoft contingent staff, Moderator 2019年2月22日 6:09
- 回答としてマーク 天気晴れ 2019年2月24日 16:43
- 回答としてマークされていない 天気晴れ 2019年2月24日 16:43
- 回答としてマーク 天気晴れ 2019年2月24日 16:44
- 回答としてマークされていない 天気晴れ 2019年2月24日 16:44