専用CPUを割り当てることができません。ほぼ純粋な処理は私が行うシンプルなモノスレッドアプリケーションを持っている私のプロセス
- それが読み同じサイズ
- 2つのintバッファを使用して1バイ第一のバッファ
- 各値の全ての値は、第2のバッファのランダムな指標である
- 、第2のバッファのインデックスの値を読み出し
- それは大きく、終わり
- 大きく、Iがの数を印刷
- それ行い、すべての前のステップのために第2のバッファから取られたすべての値を合計します理由:自発的および非自発的なCPUのコンテキストは、バッファのサイズが非常に大きくなる場合は、私のPCは遅くし始め
スイッチ?私はハイパースレッディングで4つのコアを持っているので、3つのコアがリメインされています。 1つだけが100%ビジーです。それは私のプロセスが「RAMバス」の100%近くを使用しているからですか?
はその後、私は私が私のプロセスに捧げたいCPUセット(私のCPU-セットが同じコアのCPU-スレッドの両方が含まれています)
$ cat /sys/devices/system/cpu/cpu3/topology/core_id
3
$ cat /sys/devices/system/cpu/cpu7/topology/core_id
3
$ cset set -c 3,7 -s my_cpuset
$ cset set -l
cset:
Name CPUs-X MEMs-X Tasks Subs Path
------------ ---------- - ------- - ----- ---- ----------
root 0-7 y 0 y 934 1/
my_cpuset 3,7 n 0 n 0 0 /my_cpuset
を作成したことは絶対にありませんタスクのすべてのようです私のCPUセットで実行されています。私は自分のプロセスを再起動することができますし、それが実行されている間、私が起動します。
$ taskset -c 7 ./TestCpuset # Here, I launch my process
...
$ ps -mo pid,tid,fname,user,psr -p 25244 # 25244 being the PID of my process
PID TID COMMAND USER PSR
25244 - TestCpus phil -
- 25244 - phil 7
PSR = 7:私のプロセスは十分予想されるCPUスレッドで実行されています。それは他のプロセスが私のコア上で実行されていることを意味し、私は非自発的なコンテキストスイッチを持っていた場合
Number of voluntary context switch: 2
Number of involuntary context switch: 1231
:私は私のプロセスを表示し、それが唯一のそれではなく、最後に実行されていることを願うどのようにそれは可能ですか?不随意的なコンテキストスイッチの数= 0を得るためにはどうすればよいですか?
最後の質問:私のプロセスが実行されている私はもう一度
$ cset set -l
cset:
Name CPUs-X MEMs-X Tasks Subs Path
------------ ---------- - ------- - ----- ---- ----------
root 0-7 y 0 y 1031 1/
my_cpuset 3,7 n 0 n 0 0 /my_cpuset
を起動した場合、私は私のCPUセットに0タスクを取得します。しかし、私はそれに実行されているプロセスがあることを知っている:それはタスクがプロセスではないようだ?