アフィニティ・マスクについて



 ◇-?アフィニティ・マスクについて-ポロ-04/07-12:47(119)-No.445619
   ┗?!Re:アフィニティ・マスクについ...-norimaki2000-04/07-13:07(119)-No.445623
     ┗?!【ありがとう】Re:アフィニティ...-ポロ-04/07-13:15(119)-No.445624
       ┣?!A!Re:アフィニティ・マスクにつ...-閻魔-04/07-14:08(118)-No.445630
       ┃ ┗?!A!【ありがとう】Re:アフィニテ...-ポロ-04/07-14:18(117)-No.445634
       ┃   ┗?!A!A!Re:アフィニティ・マスクに...-norimaki2000-04/07-14:29(117)-No.445638
       ┗?!A!Re:アフィニティ・マスクにつ...-pandora-04/07-14:22(117)-No.445635

▲このページのトップに戻る
445619アフィニティ・マスクについてポロ 2008/04/07-12:47

メーカー名:富士通
OS名:WindowsXp HomeEdition
パソコン名:FMV-NX90SD
--
アフィニティ・マスクについて知りたいのですが
アフィニティマスクを使ってシングルコアで特定のソフトを作動させた場合
元のデュアルコアやクアッドコアで動作させるようにするにはどんな数値にすればいいのでしょうか?
書式は以下の通りですが、1の所を何にすればデュアルやクアッドなどになるのか教えてください

シングル:CPU1→1
デュアル:CPU1+CPU2→?
トリプル:CPU1+CPU2+CPU3→?
クアッド:CPU1+CPU2+CPU3+CPU4→?

imagecfg -a 1 "???"

▲このページのトップに戻る
445623Re:アフィニティ・マスクについてnorimaki2000 2008/04/07-13:07

記事番号445619へのコメント
アフィニティ・マスクって言葉、初めて知りました。
勉強になります。

これが参考になりそうです。
http://d.hatena.ne.jp/Kazzz/20070128/p2
・JVMが特定のCPU(だけ)を使うように設定する - Kazzzの日記

0x6 (00000110) で CPU1 と CPU2
0xE (00001110) で CPU1 と CPU2 と CPU3
の指定になるようです。
まるでTCP/IPのサブネットマスクのような指定方法ですね。

▲このページのトップに戻る
445624Re:アフィニティ・マスクについてポロ 2008/04/07-13:15

記事番号445623へのコメント
norimaki2000さんは No.445623「Re:アフィニティ・マスクについて」で書きました。

こちらのサイトはチェックしたのですが、二基目と三基目とかになっていて
つまり一期目から順番に設定する方法が知りたくて
それと16進数になるんでしょうか?
私は進数とかよくわからないので質問している書式での進数指定でやる場合
つまりCPU1(一基目)を指定する場合は1ですが
マルチコアの場合はこの数値が何になるかなんですが
すいませんわざわざ探して頂いて恐縮ですが、こちらのサイトでは少しわからないもので

▲このページのトップに戻る
445630Re:アフィニティ・マスクについて閻魔 2008/04/07-14:08

記事番号445624へのコメント
私も初めて知りました。

CPUを各ビットで表す事から。
>0x1 (00000001) = CPU0 (一基目の最初の論理/物理CPUだけを使用する)
>0x2 (00000010) = CPU1 (二基目の)
>0x3 (00000100) = CPU2 (三基目の)
>0x6 (00000110) = CPU1 or CPU2 (二基目と三基目の)
>0xE (00001110) = CPU1 or CPU2 or CPU3(二基目と三基目、四基目

と成っていますので、
0x3 (00000011) = CPU0 or CPU1
 要するに、ビットの立っている部分がCPUの位置に当たるのだと思います。
しかし、
>0x3 (00000100) = CPU2 (三基目の)
は、
0x4 (00000100) = CPU2 (三基目の)
の間違いかと思います。



▲このページのトップに戻る
445634Re:アフィニティ・マスクについてポロ 2008/04/07-14:18

記事番号445630へのコメント
閻魔さんは No.445630「Re:アフィニティ・マスクについて」で書きました。

ああなるほど詳しくご説明ありがとうございます
これでなんとかやれそうなので再度やってみます
ありがとうございましたm(_ _)m

▲このページのトップに戻る
445638Re:アフィニティ・マスクについてnorimaki2000 2008/04/07-14:29

記事番号445634へのコメント
もう解決したかもしれませんが。

>つまりCPU1(一基目)を指定する場合は1ですが
>マルチコアの場合はこの数値が何になるかなんですが

16進数での指定については、この記事に下のほうに書かれています。
「このツールに「-a 1」というふうにオプションを与えると、アフィニティ・マスクを設定できる(10進数の場合はそのまま、16進数の場合は先頭に0xを付ける)。」
http://www.atmarkit.co.jp/fwin2k/win2ktips/862affinity/affinity.html
・プログラムの実行に使用するCPUを限定させる − @IT


http://d.hatena.ne.jp/Kazzz/20070128/p2
先の「Kazzzの日記」によると、CPU指定はこうなっています。
2進数で考えてこの指定方法になっています。
・一番右のビット(1桁目)がCPU0
・2桁目がCPU1
・3桁目がCPU2
・4桁目がCPU3

例えばクアッドコアでCPU0〜CPU3の4つすべてを指定する場合、
00001111(2進数)=15(10進数)=F(16進数)となります。

@ITの記事によると16進数指定の場合は先頭に0xを付けると言う事なので、こうなるのでしょう。
imagecfg -a 0xF hogehoge.exe


閻魔さん。

>>0x3 (00000100) = CPU2 (三基目の)
> は、
> 0x4 (00000100) = CPU2 (三基目の)
> の間違いかと思います。

そのとおりでしょうね。

▲このページのトップに戻る
445635Re:アフィニティ・マスクについてpandora 2008/04/07-14:22

記事番号445624へのコメント
ポロさんは No.445624「Re:アフィニティ・マスクについて」で書きました。

2進数(16進数)を理解してる人には、何のことは無いんですけどね。
知らない人には苦しいかも。。。

こちらのページの方が素人向けにもう少し優しく書いてあります。
http://www.atmarkit.co.jp/fwin2k/win2ktips/862affinity/affinity.html
(以下の部分)
>このツールに「-a 1」というふうにオプションを与えると、アフィニティ・マスクを設定できる
>(10進数の場合はそのまま、16進数の場合は先頭に0xを付ける)。
>アフィニティ・マスクは2進数のbit配列として解釈され、
>最下位bitがCPU 0(10進数で1に相当)、
>次のbitがCPU 1(10進数で2に相当)、
>その次のbitがCPU 2(10進数で4に相当)、……となっている。
>実行を許可したいCPUのbitを1にして数値で指定する。


つまり、
CPUコアの割り当ては、2進数の各bitに割り当てられてこんな具合。
 0bit目 → CPUコア 0
 1bit目 → CPUコア 1
 2bit目 → CPUコア 2
 3bit目 → CPUコア 3

bit対比させるとこんな具合。
 bit番号:  ・・・ 4 3 2 1 0
 CPUコア: ・・・ 4 3 2 1 0

つまり、CPU 0、2 を割り当てたいなら、0/2bit目を 1 にしてこんな具合。
 bit番号:  4 3 2 1 0
 CPUコア: 4 3 2 1 0
 マスク:   0 0 1 0 1
この場合のアフィニティ・マスクは、00101 (2進数)/0x05 (16進数) になります。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言