web-dev-qa-db-ja.com

atd、batch //負荷制限要因の設定

batchを使用して非対話型ジョブを起動していますが、8つのコアすべてを使用するために、負荷制限係数を増やしたいと思います。私はUbuntu16.04LTSを使用しています。

私の理解では、batchatdを使用してジョブを実行します。ジョブは、負荷率が負荷制限率と呼ばれるしきい値を下回ると開始されます。 manatdには、-lオプションを使用してこの係数を変更できると書かれています。

私の質問:このatd -l XXオプションをどのように使用できますか?たとえば、batchの前にatd -l 7.2と入力しても、何も変更されていないようです。

私がこれまでに見つけたもの:

/etc/init.d/atdで導入できるようですが、どこにあるのかわかりません。私はそのようなファイルを変更したことがありません。

では、batchコマンドで使用される負荷制限係数を変更するにはどうすればよいですか?

6
ciliou

解決策を見つけました:

  • ファイルを作成します:/etc/init/atd.override
  • 行を追加しますexec atd -l 7.2
  • 次にSudo service atd restart

これは、「Upstartinitデーモン」がどのように機能するかと関係があります。そこに説明があります: http://linux.die.net/man/5/init ファイルが/etc/init/atd.overrideexecで始まる行ですでに存在します、この行を編集してください。

2
ciliou

Ubuntu 16.04/systemdで/lib/systemd/system/atd.serviceを編集します。

-l «load avg»ExecStartに追加した後:

$ cat /lib/systemd/system/atd.service 
[Unit]
Description=Deferred execution scheduler
Documentation=man:atd(8)

[Service]
ExecStart=/usr/sbin/atd -f -l 7.2
IgnoreSIGPIPE=false

[Install]
WantedBy=multi-user.targe

systemctl status atdまたは(service atd status)を実行すると、次のメッセージが表示されます。

警告:atd.serviceがディスク上で変更されました。 'systemctldaemon-reload'を実行してユニットをリロードします。

そのコマンドを実行すると警告が削除されますが、実際に変更を取得するには、サービスを再起動する必要があります(service atd restart)

1
Wesley Baugh

近くにUbuntu16.04 LTSはありませんが、Debianベースのシステムでは/etc/init.d/atdは通常次のように言います。

case "$1" in
  start)
        log_daemon_msg "Starting deferred execution scheduler" "atd"
        start_daemon -p $PIDFILE $DAEMON -l 7
        log_end_msg $?

-l 7部分を追加した場所に注意してください。次に、/etc/init.d/atd restartで再起動し、受け入れられたかどうかをps auxwww|grep atdで確認する必要があります。

/etc/default/atdがある場合があることに注意してください。これは、より簡単な方法です(また、次のアップグレードで変更がサイレントに消去されないため、より適切です)

0
Matija Nalis