1

Linux のすべてのシステム スレッドがコア 0 で実行されるようにし、他のすべてのコアはアプリケーションに任せたいと考えています。RHEL 6 を使用しており、/etc/rc.d/rc.sysinit の先頭に次の行を追加しました。

taskset -p 0x01 1
taskset -p 0x01 2
taskset -p 0x01 $$

PPID 2 が 0 以外のコアで実行されている多くのスレッド/プロセスがまだ見られますkthreadd。プロセス 2 のすべての子もコア 0 で実行されるようにするにはどうすればよいですか?

編集: たとえば、コア 4 のスレッドがあります。これらのいずれかをコア 4 から移動できますか?

~> ps -L -eo pid,ppid,tid,nlwp,tty,comm,psr | grep 4$
  PID  PPID   TID NLWP TT       COMMAND         PSR  <-line added
   15     2    15    1 ?        migration/4       4
   16     2    16    1 ?        ksoftirqd/4       4
   17     2    17    1 ?        watchdog/4        4
   31     2    31    1 ?        events/4          4
   46     2    46    1 ?        kintegrityd/4     4
   54     2    54    1 ?        kblockd/4         4
   65     2    65    1 ?        ata/4             4
   88     2    88    1 ?        aio/4             4
   96     2    96    1 ?        crypto/4          4
  420     2   420    1 ?        ext4-dio-unwrit   4
  879     2   879    1 ?        kdmflush          4
  926     2   926    1 ?        ext4-dio-unwrit   4
  935     2   935    1 ?        ext4-dio-unwrit   4
 1632     2  1632    1 ?        rpciod/4          4
4

1 に答える 1

2

一部のカーネル スレッドは、その CPU に関連するいくつかの作業を行うために、特別な (ロジック) CPU にバインドされていました。これらのカーネル スレッドを CPU から移行することはできません。できることは、他のすべてのタスクを移行して固定することです。

この奇妙な要件はあなたの最終的な目的ではなく、これ(タイトル)はあなたの目的への正しいアプローチではないと思います。最終的な目的を提供する場合は、SO のスタッフがお手伝いします。

于 2012-07-19T07:46:47.457 に答える