問題タブ [cpuset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cpu - cpuset を使用しようとすると、echo $$ > tasks で「デバイスに空き領域がありません」と表示される
cpuset(7) マニュアルの例を試して、cpuset Charlie を作成しました。Ubuntu 14.4 LTS と SLES 12 の両方で、現在のプロセスを cpuset に入れようとすると、次のエラーが発生します。
/dev/cpuset/Charlie# echo $$ > tasks
bash: echo: write error: No space left on device
何か助けはありますか?
linux - 組み込み Linux を使用したシングル コアでの低レイテンシ プロセス
ALSA/JACK
Linux システムが組み込まれた別のコアで、単一の低レイテンシ タスク (オーディオ用) を実行したいと考えています。ここでは、スケジューラやその他の割り込みを削除することが重要になる場合があります。
これまでに見つけたいくつかのアプローチがありました。たとえばcpusets
、2009 年のオフライン スケジューラ (残念ながらユーザー空間タスクをサポートしていません) などです。
これを達成するためのより新しい/より便利な方法はありますか?
docker - docker run --cpuset は効果がありません
cpuset を 1 コアに指定して、1 つの Docker コンテナーを開始しました。
cpuset を 4 コアに指定して 2 つ目:
各コンテナー内でロード プロセスを開始し、両方のコンテナーの CPU 消費量を監視しました。
ロード プロセスは次のようになります。
私は、両方のコンテナ間の実行時間に関して改善がないことを観察しました (スピードアップなし)。
改善されない理由がわかりませんか?4 コアのコンテナーは、1 コア コンテナーよりも高速に実行する必要があります。
注意: 1core コンテナーに top を使用する
4core コンテナーに top を使用すると、docker は 4 つのコアのいずれかをランダムに選択してプロセスを起動します。場合によってはコアごとに 30% 影響します
cpu - cgroups の 1 つのディレクトリにさらに 2 つのサブシステムをマウントするにはどうすればよいですか?
私は大学でコンピューター工学を学んでいます。勉強中、私はいくつかの問題を抱えています。
1 つのディレクトリに 2 つのサブシステムをマウントしたいと考えています。
私は次のように試しました
mount -t cgroup -o cpu,cpuset cpu_and_cpuset /cgroup/cpu_and_cpuset
このコマンドは、redhat のマニュアル ページで説明されています。
Red Hat マニュアルページのリンク
私のLinuxでエラーが発生しました。
エラーメッセージは
マウント: cpu_and_cpuset が既にマウントされているか、/cgroup/cpu_and_cpuset がビジーです
しかし、サブシステムをマウントしませんでした。
/cgroup/cpu_and_cpuset は直前に作成されます。
トラブルシューティングのために、すべての cgroup サブシステムをアンマウントしてみました。
このコマンドを再試行しました。しかし、結果は同じでした。
単一のサブシステムをマウントする場合、問題はありません。
これらのサブシステムが各ディレクトリにマウントされ、適切な属性が設定されていれば、1 つのディレクトリに 2 つのサブシステムがマウントされているような環境を構成できます。
しかし、それは私にとって正しい答えではありません。
私のコマンドの問題は何ですか?
このエラーの解決策はありますか?
linux-kernel - タスクの実行が許可されているCPUを印刷しますか?
特定のタスクの実行が許可されているCPUを印刷しようとしています。
struct task_struct (ここで見つけることができます) の中にcpumask_t cpus_allowedがあり、私が理解していることから、私が探しているものが正確に含まれています。そうですか?
もしそうなら、許可されているCPUの番号を抽出するにはどうすればよいですか?
たとえば、私のコンプには8つの論理コアがあります-したがって、cpus_allowed内のどこかでそれらの数値を見つけることができると期待しています(たとえば、0,2,5)
linux - Cpuset を使用してカーネル モジュールを特定のコアに分離する
ユーザー空間からcpusetを使用して、システム内の特定のコアを実際に分離し、そのコアに対して特定のプロセスを 1 つだけ実行できます。
カーネルモジュールで同じことをしようとしています。したがって、モジュールを分離されたコアで実行する必要があります。言い換えれば、カーネルモジュール内から 'sを使用するにはどうすればよいですか? cpuset
*
カーネル モジュールでlinux/cpuset.hを使用しても機能しません。したがって、次のようなモジュールがあります。
このモジュールをロードしようとするとdmesg
、次のメッセージが表示されますcpusets is enabled!
。しかし、メッセージも受け取りますUnknown symbol cpu_init (err 0)
。
同様に、実行中のすべてのプロセスを特定のコアに移動し、モジュールを分離されたコアに実行するためにsched_setaffinity
fromを使用してみました。linux/sched.h
同じエラー メッセージが表示されました: Unknown symbol sched_setaffinity (err 0)
。EXPORT_SYMBOL
これらの関数にはカーネルがないため、「不明なシンボル」を取得したと思います。sys_sched_setaffinity
だから私は行ってシステムコールを呼び出そうとしました(この質問に基づいて)が、再びこのメッセージが表示されました:Unknown symbol sys_sched_setaffinity (err 0)
!
isolcpus
さらに、起動中に設定される を使用するソリューションを探していません。モジュールをロードした後、分離を実行したいと思います。
- (より正確には、カーネル スレッドを分離されたコアで実行する必要があります。アフィニティを使用してスレッドを特定のコアにバインドできることはわかっていますが、これはコアが実行中の他のプロセスによって分離されることを保証するものではありません。 )