web-dev-qa-db-ja.com

CPUをスパイクせずにパッチを適用することは可能ですか?

無人アップグレードを使用して約300 ubuntu(16.04 LTS)マシン(実際にはネットワークアプライアンス)にパッチを適用していますが、一部はESXi、Azure、AWSで実行されている1 CPU VMであり、その他はベアメタルクアッドコアAtom = IOTデバイス。ベアメタルマシンではこの問題は発生していませんが、マシンにパッチを適用すると、SNMPモニタリングが正常に機能しなくなり、VMが高くなります。 CPUスパイク、スワップメモリ​​アラートなど。

これらのアラートを抑制する方法で作業するのではなく(これは私が求めていることではありません)、reniceのパッチを適用して、パッチの適用に時間をかける方法はありますか?無人でパッチを当てるのに4時間かかっても構わないと思います(ansibleまたはaptで直接パッチを適用した場合、パッチの適用をそれほどゆっくりと実行したくありません)。

4
Peter Turner

これは answer にあなたが探しているすべてが含まれていると思います:

OK、私はあなたと同じように自分で管理しましたが、いくつかの変更点があります:

1)同じユーティリティをインストールしました:

Sudo apt-get install cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1

2)私はこのようにconfファイルを編集しました:

Sudo -H gedit /etc/init/cgroup-lite.conf

description "mount available cgroup filesystems"
author "Serge Hallyn <[email protected]>"

start on mounted MOUNTPOINT=/sys/fs/cgroup

pre-start script
test -x /bin/cgroups-mount || { stop; exit 0; }
test -d /sys/fs/cgroup || { stop; exit 0; }
/bin/cgroups-mount
cgconfigparser -l /etc/cgconfig.conf
end script

post-stop script
if [ -x /bin/cgroups-umount ]
then
    /bin/cgroups-umount
fi
end script

Sudo -H gedit /etc/cgconfig.conf

# Since systemd is working well, this section may not be necessary.
# Uncomment if you need it
#
# mount {
# cpuacct = /cgroup/cpuacct;
# memory = /cgroup/memory;
# devices = /cgroup/devices;
# freezer = /cgroup/freezer;
# net_cls = /cgroup/net_cls;
# blkio = /cgroup/blkio;
# cpuset = /cgroup/cpuset;
# cpu = /cgroup/cpu;
# }

group limitcpu{
  cpu {
    cpu.shares = 400;
  }
}

group limitmem{
  memory {
    memory.limit_in_bytes = 512m;
  }
}

group limitio{
  blkio {
    blkio.throttle.read_bps_device = "252:0         2097152";
  }
}

group browsers {
    cpu {
#       Set the relative share of CPU resources equal to 25%
    cpu.shares = "256";
}
memory {
#       Allocate at most 512M of memory to tasks
        memory.limit_in_bytes = "512m";
#       Apply a soft limit of 512 MB to tasks
        memory.soft_limit_in_bytes = "384m";
    }
}

group media-players {
    cpu {
#       Set the relative share of CPU resources equal to 25%
        cpu.shares = "256";
    }
    memory {
#       Allocate at most 256M of memory to tasks
        memory.limit_in_bytes = "256m";
#       Apply a soft limit of 196 MB to tasks
        memory.soft_limit_in_bytes = "128m";
    }
}

cgconfigparser -l /etc/cgconfig.conf

Sudo -H gedit /etc/cgrules.conf

user:process                                         subsystems   group
[user]:/usr/lib/chromium-browser/chromium-browser   cpu,memory      browsers
[user]:/usr/bin/clementine                        cpu,memory     media-players

注:このセクションは/usr/bin/aptで更新する必要があります

これは例です。[user]ではなく自分のユーザー名を使用してください。制限する必要のあるアプリケーションを追加し、CPU、メモリ、またはその両方を制限するかどうかを定義できます。

GRUB_CMDLINE_LINUX_DEFAULT/etc/default/grub行を編集しました:

GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"

それを更新する:

Sudo update-grub

3)最後に再起動して変更を適用します。

そして、それが私がこれを機能させる方法です。これまでは、OOMをマルチタスクで頻繁に使用していました-クロムブラウザー、クレメンタイン、崇高なテキスト、および多くのリソースを使用する他のアプリケーションで-今はスムーズに実行されており、マルチタスクを改善できます。


追加のcgroupsリソース:

3