以下のスクリーンショットをご覧ください。強調表示された値は80%から95%の間にジャンプします。
ご覧のとおり、postgresプロセスはCPUをすべて占有していますが、実際にはほとんどのCPUがアイドル状態と見なされます。マシンのCPUアイドル状態が最も高い。
ここで情報を収集しました。Linux "top"コマンド:us、sy、ni、id、wa、hi、si、st(CPU使用量)は何ですか?
そしてここ:https://scoutapm.com/blog/understanding-linuxs-cpu-stats
後者のソースは、データベースが「ユーザースペース」部分の一部であると具体的に言います。この不一致は他のCPUコアに関連していますか?
更新:
1
コマンドを実行した後に押すと、top
コアあたりのCPU使用率が表示されます。
ご覧のとおり、CPUコアは18個あります。そのうちの1つはPostgresによって完全に消費されましたが、残りは空です。上部のコマンドにリストされている%CPUは、どのくらいのCPUを使用しているかを示しています。シングルコア?私が見つけたソースではこれは明確ではありませんでした。
よりソリューション指向のアプローチをとると、より多くのコアを追加しても効果はありません。むしろ、postgresプロセスを実行するCPUのサイズを大きくすると、潜在的に使用するCPUの割合が低下する可能性がありますか?
答え1
ご覧のとおり、postgresプロセスはすべてのCPUを占めています。
いいえ、単一のCPUコアを占有します。これはUnix / Linuxでは100%を意味し、正確ではありません。
Postgresプロセスには、2つの異なるCPUコアの50%を占める2つのアクティブスレッドがあり、top
/ps
は100%を報告します。
他のCPUコアに関連していますか?
はい。
ご覧のとおり、そのうちの1つはポストグレスによって完全に食べられましたが、残りは空です。
スクリーンショットには2つのCPUコアがあり、1つは88%、もう1つは9%です。その合計はposgresが使用するものと似ています。
コアを追加しても効果はありません。
ただし、特定の状況では、実行中のワークロードが何でもシングルスレッドCPUのパフォーマンスによって制限されるように見えるため、正解です。
むしろ、postgresプロセスを実行しているCPUのサイズを拡大すると、潜在的に使用するCPUの割合が低下する可能性がありますか?
どういう意味なのかよくわかりません。