スレッドと並列処理を試してみたいです。私はプロセッサに複数のコアがあることを知っていますが、各コアで何が起こっているのかを確認する方法がわかりません。この情報にアクセスする正しい方法は何ですか?
具体的には以下を計画しています。複数のスレッドを起動する小さなプログラムを書くことを想像してください。このプログラムはコア全体に分散しており、必要に応じて互いに通信する必要があります。どのスレッドが実行されているかを観察したいと思います。どのようなヒントがありますか?
私はこの種の作業を初めて試しています。 (問題を直接解決できない情報についても喜んで回答いたします。)
最高、バート
(グーグルをすると「cat /proc/cpuinfo」にしか接続されません。これはプロセッサが7つあることを知らせるようです。これは本当ではなく、この出力の読み方がわからないことを意味します。)
ベストアンサー1
各コアには独自のエントリがあるため、/proc/cpuinfo
ここには重複した情報がたくさんあります。
保持しているCPUおよび/またはコアの数を確認するには、次の手順を実行します。
# egrep 'processor|core id|physical id' /proc/cpuinfo
processor : 0
physical id : 0
core id : 0
processor : 1
physical id : 0
core id : 1
これは私のシングルチップデュアルコアコンピュータで実行されます。したがって、番号0と1の2つのコアがありますが、どちらも物理CPU 0に属します。
覚えておいて、コンピュータの専門家は0から世紀を始めるのが好きです。
デュアルCPU、シングルコアシステムの出力は次のとおりです。
$ egrep 'processor|core id|physical id' /proc/cpuinfo
processor : 0
processor : 1
そのため、CPUが2つなのにコアが指定されていないため、プロセッサチップあたりコアが1つずつあることがわかっています。
もっと興味深い点があります。
$ egrep 'processor|core id|physical id' /proc/cpuinfo
processor : 0
physical id : 0
core id : 0
processor : 1
physical id : 0
core id : 1
processor : 2
physical id : 1
core id : 0
processor : 3
physical id : 1
core id : 1
これが私のデュアルCPUデュアルコアシステムです。プロセッサ0または1には、それぞれコア0または1として「プロセッサ」0-3があります。
あなたは理解しました。
要約すると、プロセッサ0〜7を含むデュアルCPUクアッドコアシステムがあるようです。