
私は通常Postgresを次のように起動しますpg_ctl -D /db start
どうすれば「nice」で起動して、より低い優先度で実行できるようになりますか?
答え1
postmaster だけでなく、すべてのバックエンド プロセスを "nice" にする必要があります。 http://wiki.postgresql.org/wiki/優先順位
答え2
systemd では、次のようなものが必要になる場合があります。ここでは (Debian/Ubuntu)、エンジン バージョンとクラスター名を使用して特定のサービスを制御できますが、これはディストリビューションでは当てはまらない可能性があることに注意してください。
# systemctl edit postgresql@10-main
[Service]
Nice=15
IOSchedulingClass=2
IOSchedulingPriority=7
# service postgresql@10-main restart
I/O スケジューリングも制御したい場合に備えて含めましたが、もちろん省略することもできます。明示的に設定しない場合は、nice レベルに応じて自動的に設定される可能性があります。低いほど優先度が高く、クラス 2 (ベストエフォート) 内では 0 ~ 7 です。クラス 3 はアイドルです。クラス 1 はリアルタイムですが、おそらく必要ないでしょう。
答え3
nice pg_ctl -D /db start
nice コマンドを使用して、変更されたスケジューリング優先度/niceness でプログラムを実行します。niceness の範囲は、少なくとも -20 (最も好ましいスケジューリング) から 19 (最も好ましくないスケジューリング) までです。デフォルトの動作では、niceness が 10 増加します。
niceness を、スレッドの実行順序をアプリケーションが決定できるようにするスケジューリング優先度と混同しないでください。優先度とは異なり、niceness はスケジューラへの単なるアドバイスであり、スケジューラはそれを無視することができます。