Debianで特定の時間にcronジョブが実行されるのを防ぐ方法は?(「ゲーム」/「パフォーマンスモード」)


12

私はlogcheckのcronジョブとして設定しているように、それがプロセスを実行していますたびに見えgrepによってlogcheck私のCPUの1/4を中心に取り上げます。

CPUのフルキャパシティが必要になる特定の時間帯があり、特定のプロセス(何らかの方法で指定できる場合を除く)を除いて、システムができるだけ少ないリソースを使用するようにします。

Debian 9.1をKDEマシンに設定して、ユーザーが明示的に起動していないプロセスがシステムリソースを大量に消費するのを防ぎ、バックグラウンドプロセスの負荷を軽減するパフォーマンスモード(または「ゲームモード」)に設定することは可能ですか? :そのモードが再び停止するまでcronジョブを遅らせますか?


6
単純な解決策は、cronジョブでlogcheckを実行するのではなく、カスタムスクリプトを記述してcronジョブで実行することです。スクリプトでは、最初に必要なチェックを実行し、すべてのチェックに合格した場合はスクリプトの最後にlogcheckを実行します。
ソースコード

5
優先度を確認してください。19まで改善されている場合、CPUが他に何もすることがない場合にのみ実行されます。
トールビョーンラヴンアンデルセン

回答:


18

「特定の時間」が固定されていない場合、つまり、システムが「パフォーマンスモード」に入るときと出るときに手動で指定する場合は、単に停止および開始できますcron

sudo systemctl stop cron

cronジョブが実行されないようにします。

sudo systemctl start cron

それらを再度有効にします。

また、のanacron代わりにチェックアウトすることもできcronます。用途に合わせてグローバルに微調整する方が簡単な場合があります。


12

私は2つのアプローチを検討します

  1. スケジューリングは変更せずに、すべてのcronジョブをの下niceで実行しますionice

    0 * * * *    root    ionice -c3 nice /some/command and parameters
    
  2. cron特定の時間にジョブを許可しません。フラグファイルを作成(または削除)できるユーザーは、このアプローチを制御できることに注意してください。ゲームの起動スクリプトにとコマンドを追加することにより、オンデマンドで設定さたゲームモードを使用する場合は、動作する可能性がtouchありrmます。(/tmpではなくを使用する必要があるかもしれませんが/var/run、その後はどのユーザーでも簡単に開くことができます。)

    0 18 * * *      root    touch /var/run/no_cron
    0 19 * * *      root    rm -f /var/run/no_cron
    
    0 * * * *       root    test ! -f /var/run/no_cron && /some/command...
    

一度設定すると、どちらのアプローチもルートアクセスを必要としません。さらに、どのジョブをこの制御の対象とすべきか、またどのジョブを非対象とすべきかを事前に決定できます。


1
正しい。使用可能なCPUが十分にあるときにプロセスをボトルネックにするのはなぜですか?OSの優先順位は、arbitrarily意的ではなく、不足があるときに発動します。
MSalters

-c3 -n7少なくともLinuxでは、この組み合わせが意味をなさないと思います。アイドルスケジューリングクラスには優先順位を持っていません。
ガーデンヘッド

@gardenheadおっしゃるとおりです。私は-c2 -n7自分自身を使用しますが、この回答のためにクラスをアイドルに落としたとき、優先順位を削除するために省略しました。
ロアイマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.