web-dev-qa-db-ja.com

`isolcpus`カーネルパラメータはUbuntu 16.04デスクトップには影響しません

/etc/default/grubに次の行を追加しました

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=1,3"

次にSudo grub-updateを実行(および再起動)しましたが、topによると、プロセスは引き続きCPU 1および3でスケジュールされています。これについてはどうすればよいですか?

追加を求められたもの:

nabeel@nabeel-Inspiron-3542:~$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.0-22-generic.efi.signed root=UUID=1e46ca65-843f-439a-8e2a-f5e666a03ffe ro quiet splash isolcpus=1,3 vt.handoff=7

topの出力:

PID USER      PR S P 
182 root      20 S 0 
183 root       0 S 0 
220 root      20 S 0 
223 root      20 S 0 
253 root      20 S 2 
261 root       0 S 0 
312 root     -51 S 0 
343 root       0 S 3 <-------- Processes being scheduled on CPU 1 and 3
347 root       0 S 1 <--------
373 root       0 S 2 
398 root       0 S 0 
474 root       0 S 2 
478 root      20 S 0 
548 systemd+  20 S 0 
632 avahi     20 S 2 
633 root      20 S 2 
642 root      20 S 0 
7
nom

これら2つのプロセスはkworkerまたは別のカーネルタスクだと思います。

現在、isolcpus=はユーザー空間のスレッドにのみ影響するため、カーネルスレッドは分離されたCPUに表示されます。

RHELドキュメント (私の強調)から、

3.3.6.2。 CPUの分離

Isolcpusブートパラメータを使用して、1つ以上のCPUをスケジューラから分離できます。これにより、スケジューラがこのCPUでuser-space threadsをスケジュールするのを防ぎます。 CPUが分離されると、CPUアフィニティシステムコールまたはnumactlコマンドを使用して、分離されたCPUにプロセスを手動で割り当てる必要があります。

誰かが この動作をパッチする を試みましたが、私が知る限り、それは確認されませんでした。

要約すると、Ubuntuはオプションを無視していません。意図したとおりに機能しています。期待どおりに機能しているかどうかは、別のクエリです。

6
EightBitTony