アカウント名:
パスワード:
素人の質問です。
64ビット版のLinuxなら,デフォルトで64個までコアを認識します
認識できるコアの上限は,Linuxカーネルのソースコード中の NR_CPUS という定数で決まります.またNR_CPUSの上限はNR_CPUS_RANGE_ENDという定数になっています
定義ファイルはこれですhttps://github.com/torvalds/linux/blob/master/arch/x86/Kconfig [github.com]このようにx86系で64ビットならNR_CPUSのデフォルト値は64です.
そしてNR_CPUS_RANGE_ENDは8192なので,NR_CPUSを変更してカーネルをビルドしなおせば8192個まではコアを認識するようになります
これは他のCPUでも大体同じでCPUが N ビットならアーキテクチャによらず認識するコア数も N になります.
これにはつぎのような理由が有ります.カーネルの中にはコアをビット単位で管理している部分があります.その処理ではN個コアがあると,Nビットの変数が一つ必要になります.もしCPUが64ビットなら,一命令,一レジスタで管理できるビット数の上限は64になりますつまり1個から64個まではコストは同じ.ということでNR_CPUSのデフォルト値は64に設定されています.
なーぁるほど。よくわかりました。ありがと。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
コアっていくつまで可能? (スコア:0)
素人の質問です。
Re:コアっていくつまで可能? (スコア:5, 参考になる)
64ビット版のLinuxなら,デフォルトで64個までコアを認識します
認識できるコアの上限は,Linuxカーネルのソースコード中の NR_CPUS という定数で決まります.
またNR_CPUSの上限はNR_CPUS_RANGE_ENDという定数になっています
定義ファイルはこれです
https://github.com/torvalds/linux/blob/master/arch/x86/Kconfig [github.com]
このようにx86系で64ビットならNR_CPUSのデフォルト値は64です.
そしてNR_CPUS_RANGE_ENDは8192なので,NR_CPUSを変更してカーネルをビルドしなおせば
8192個まではコアを認識するようになります
これは他のCPUでも大体同じでCPUが N ビットならアーキテクチャによらず認識するコア数も N になります.
これにはつぎのような理由が有ります.
カーネルの中にはコアをビット単位で管理している部分があります.
その処理ではN個コアがあると,Nビットの変数が一つ必要になります.
もしCPUが64ビットなら,一命令,一レジスタで管理できるビット数の上限は64になります
つまり1個から64個まではコストは同じ.ということでNR_CPUSのデフォルト値は64に設定されています.
Re: (スコア:0)
なーぁるほど。よくわかりました。ありがと。