web-dev-qa-db-ja.com

iotopがkswapd0を99.99%で表示し、0%のディスク読み取りとディスク書き込み

私は重いpostgresクエリを持っています。実行には10分以上かかります。ハードウェアをアップグレードして、実行速度を上げたいです。もっとRAMが役立つと思いますが、マザーボードがいっぱいなので、まったく新しいマザーボードが必要になります。より良い結果が得られると確信しない限り、投資したくありません。ここに何がありますか?私はiotopで見る:

総ディスク読み取り:46.81 M /秒|合計ディスク書き込み:0.00 B/s 
 TID PRIOユーザーディスク読み取りディスク書き込みSWAPIN IO>コマンド
 27 be/4ルート0.00 B/s 0.00 B/s 0.00%99.99%[kswapd0] 
 2514 be/4 postgres 46.81 M/s 2.45 M/s 0.00%18.36%postgres:postgres db1 127.0.0.1(55328)SELECT 
 1 be/4 root 0.00 B/s 0.00 B/s 0.00%0.00%init 
 2 be/4 root 0.00 B/s 0.00 B/s 0.00%0.00%[kthreadd] 
 3 be/4 root 0.00 B/s 0.00 B/s 0.00% 0.00%[ksoftirqd/0] 
 4 be/4 root 0.00 B/s 0.00 B/s 0.00%0.00%[kworker/0:0] 
 5 be/4 root 0.00 B/s 0.00 B/s 0.00%0.00%[kworker/u:0] 
 6 rt/4 root 0.00 B/s 0.00 B/s 0.00%0.00%[migration/0] 
 7 rt/4ルート0.00 B/s 0.00 B/s 0.00%0.00%[ウォッチドッグ/ 0] 
 8 rt/4 root 0.00 B/s 0.00 B/s 0.00%0.00%[migration/1] 
 9 be/4 root 0.00 B/s 0.00 B/s 0.00%0.00%[kworker/1:0] 
 10 be/4ルート0.00 B/s 0.00 B/s 0.00%0.00%[ksoftirqd/1] 

Kswapd0がハードドライブを最も多く使用していることに注意してください(99.99%IO)。ただし、kswap0のDISK READおよびDISK WRITEおよびSWAPINはすべてゼロです。 kswap0は何をしていますか?それは本当に私のハードドライブを打っていますか?このシステムにさらにRAM=を追加すると役立ちますか?

7
User1

あなたは間違った角度からこれに近づいています。 SQLを最適化した後でのみ、問題に対してより多くのRAM/CPU /ディスク(I/O帯域幅)を投入することを検討し、特定した問題に対処することを検討してください。

まずPostgresにEXPLAIN(またはEXPLAIN ANALYZE)クエリの実行方法。
そこから常に愛する子猫を最適化し、それでもパフォーマンスの問題が解決しない場合は、さらに調査してボトルネックがどこにあるかを特定します( sonassiは、あなたがさらに見るべきものについていくつかの良い提案をしましたto iotop )。

WebスタックとDBを同じサーバーで実行している場合は、今度はそれらも分割する良い機会です...

2
voretaq7

あなたのIO-subシステムに問題がないことを110%確信していますか。たとえば、すべてのハードドライブは正常です[スマート/ RAIDセルフテスト]、ライトバックキャッシュが有効になっています[RAIDカードにバッテリーバックアップキャッシュがある場合]?

IO 48MB /秒の読み取り転送でpostgresが飽和していませんか?

0
pQd

kswapdは、Linuxの仮想メモリを処理するために必要なジョブの一部を実行しています。したがって、それを100%にすると、PGプロセスによって取得されたリソースが不足している可能性があります(たとえば、RAMがバッファに残されていない) IO)。

通常のツールでRAMの使用/未使用を確認します。

IO列以外の統計の欠如に関して、私は次の説明が正しいかわかりませんが、カーネルがカーネル空間(ここにある場所)でスワップイン/スワップアウトを追跡できない可能性がありますLinuxはカーネルスペースに割り当てられたページに対して何もスワップアウトしないためです。

0

診断のために他の重要な情報に言及しなかった。

free -m
cat /proc/meminfo
top -b

kswapdからのI/Oは、postgresのI/Oから疑似報告されている可能性があります。プロセスの1つはおそらくD状態になりますが、上記のコマンドからのデータはすべて確認されます。 swapinが空であるのは不思議ですが.