web-dev-qa-db-ja.com

WineまたはCrossOverでCPUアフィニティを設定するにはどうすればよいですか?

今日のコンピューターのマルチコアプロセッサーを嫌う古いゲームがいくつかあります。 WineまたはCrossOverでそれらのCPUアフィニティを「1」に設定する方法があるかどうか疑問に思っていますか?つまり、ネイティブWindows環境では、タスクマネージャーでゲームのプロセスを右クリックし、そこでアフィニティを設定します。

RunFirst.exeというプログラムに出くわしましたが、それを実行する方法を見つけられず、1つのコマンドでゲームを実行できません。

提案をいただければ幸いです。ありがとう!

6
hpy

Wineに付属のtaskmgr.exeを実行すると、Windowsと同じようにアフィニティを設定できます:)。

永続的に設定する方法や設定を自動化する方法はわかりませんが。

おそらく、Windowsがこのタスクに使用するのと同じAPIがWineに存在します。これは、Windowsツールをそのタスクに使用できることを意味します。

編集:

私はまさにそれを行うツールを見つけました:

http://retired.beyondlogic.org/solutions/processutil/processutil.htm

Process -a name_of_exe 1アフィニティマスクをプロセッサ0に設定します。

Process -a name_of_exe 11アフィニティマスクをプロセッサ0および1に設定します。

... 等々。

参照:

http://en.wikipedia.org/wiki/Affinity_mask

0

これはtasksetコマンドで可能だと思います。このようにワインを実行します。

taskset -c 0 wine program_name.exe

デバッグメッセージを取り除くには:

WINEDEBUG=-all taskset -c 0 wine program_name.exe

「-c0」の部分はコア1のCPUアフィニティを設定し、「-c1」はコア2のcpuアフィニティを設定します。詳細については「mantaskset」を参照してください。

2
Ye Lin Aung

OSXでのプロセッサアフィニティの設定はサポートされていません。この機能を実現するためにwineが実行できるようなシステムコールはありません。 WineHQでのこれに関連するバグは、WONTFIXとして適切にクローズされます( バグ30480-CPUアフィニティの設定はMacでは機能しません )。

この関連するSUの質問:「OSXでプロセッサ親和性を設定する方法」 も参照してください。

したがって、イェンスの答えは勇敢な努力ですが、WineはMacでアフィニティを設定するためにそれらのAPI呼び出しをサイレントに(またはWINEDEBUGによってはそれほどサイレントではなく)破棄します。

一般的に引用されている回避策は、Xcodeの開発者ツール(Instrumentsなど)の1つを使用して、システム全体で使用できるアクティブコアの総数を制限することです。きれいではありませんが、機能します。 Instruments.app Preferences: General Pane

2
Matt B.