web-dev-qa-db-ja.com

kswapdが使用されている原因となっているプロセスを確認するにはどうすればよいですか?

Kswapdが100%のCPUを使用しているのを確認しています... kswapdがどのように多く使用されているかを知るにはどうすればよいですか?

22
Deshawn

kswapdはallプロセスで物理的に利用可能なメモリ要求よりも大きいメモリ要求に応じてスワップスペースを管理しています。

それはプロセスにとらわれず、どのページがいつアクセスされるかだけに関心があります(もちろん、これよりも複雑ですが、物事をシンプルに保つために、このように表示することもできます)。

つまりrealの質問は、「kswapdが常にページングする必要がある原因となっているメモリへの負荷が最も大きいプロセスはどれか」です。

これは、「top」を使用してメモリ使用量ソートモードに切り替えると、最も簡単に答えられます。

17
Paul

あなたはそれをスクリプト化することができます。しかし、トップを介してそれを行うこともできます

Topを実行し、次に[〜#〜] o [〜#〜]を押し、次にpを押し、次にenterを押します。

すべてのプロセスがスワップ使用量でソートされ、どのプロセスがそれを使用しているかを確認できます

9
Mike

Ubuntu 15.10以降を使用している場合、これは実際には バグ の結果である可能性があります。特に、システムがスワップパーティションのない仮想マシン(AWS EC2など)の場合はそうです。問題 他のディストリビューションに存在する ですが、執筆時点では、同じ修正が普遍的に機能するかどうかは不明です。

一時的な回避策:

Sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
Sudo reboot

これにより、XenおよびHyper-V仮想マシンのRAM/CPUのホットアドが無効になります。

8
Zenexer

kswapdのどこかにバグがあるようですが、古いカーネルでのみうまくいくと思います。

ほぼ毎日、kswapdは(ただし、現在のカーネルではない)より大きなクラスターの一部のマシンでランダムにbeserkします。両方のkswapdプロセスで100%CPU。他の実行中のプロセス(sshシェルを除く)はなく、十分な空きRAM(700 MB以上))およびSWAPはまったく使用されていません。スワップインもスワップアウトもありません。

特定のマシンがヒットし、別のマシンがヒットしない理由はまだ説明されていません。通常は短期間に複数のマシンにヒットするため、完全にランダムではないようです。アイドル状態のマシンや高圧下にあるマシンは、効果の影響を受けにくい(!)ようです。したがって、ワークロードで何かを行う必要があり、マシンがアイドル状態でもビジー状態でもない場合にのみヒットします。

問題が発生しても、何も解決しません。すべてのプロセス(強制終了できなくなったわけではありません)を強制終了し、すべてのファイルシステムをアンマウントします。 kswapdは依然として100%CPUのままです。私はSMPカーネルのスピンロックレースを疑っていますが、私が間違っている可能性もあります。

おそらく私の答えを見てください serverfault.com/questions/316995/#493257

ノート:

  • シャットダウンプロセスがどこかでハングし始めるため、影響を受けるマシンの再起動はしばしば失敗します。
  • インターネットへの直接接続はありません。外国の原因はほとんどありません。
  • 影響を受けなかった(まだ)マシンがあるため、負荷の観点からマシンが処理するワークロードのタイプに依存しているようです。
  • 申し訳ありませんが、私たちが何をしているのか、そしてその理由を詳しく説明することはできません。
  • はい、私は推測しています。今日は非常に不可解な効果なので。
6
Tino