J'utilise des mises à niveau sans assistance pour corriger environ 300 machines ubuntu (16.04 LTS) (appliances réseau vraiment), certaines sont des machines virtuelles à 1 processeur fonctionnant sur ESXi, Azure et AWS et d'autres quad core en métal nu Atom = Périphériques IOT. Je n'ai pas rencontré ce problème sur les machines nues, mais sur les machines virtuelles, qui sont alimentées juste assez pour faire ce qu'elles doivent faire, lorsque les machines se corrigent elles-mêmes, notre surveillance SNMP devient folle et nous devenons élevés Pics de CPU, alertes de mémoire d'échange, etc.
Plutôt que de travailler de manière à supprimer ces alertes (ce qui n'est pas ce que je demande), existe-t-il des moyens de laisser le correctif renice et de le laisser prendre son temps? Cela ne me dérangerait pas s'il a fallu 4 heures pour patcher, sans surveillance c'est-à-dire (je ne voudrais pas que les patches se déroulent si lentement si je le lancais directement avec ansible ou apt).
Je pense que cela réponse contient tout ce que vous recherchez:
OK, je me suis débrouillé pour faire la même chose que vous, mais avec quelques changements:
1) J'ai installé les mêmes utilitaires:
Sudo apt-get install cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1
2) J'ai édité des fichiers conf comme ceci:
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
Remarque: cette section doit être mise à jour avec /usr/bin/apt
C'est un exemple, utilisez votre nom d'utilisateur au lieu de [utilisateur]. Vous pouvez ajouter les applications dont vous avez besoin pour limiter et définir si vous voulez qu'elles soient limitées en CPU, en mémoire ou les deux.
J'ai édité le GRUB_CMDLINE_LINUX_DEFAULT
faire la queue /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
Mise à jour:
Sudo update-grub
3) Et enfin redémarrer pour appliquer les changements.
Et c'est comme ça que ça fonctionne. Avant cela, j'avais des MOO fréquents avec multitâche - avec navigateur chrome, clémentine, texte sublime et d'autres applications utilisant beaucoup de ressources -, maintenant ils fonctionnent bien et je peux mieux effectuer plusieurs tâches.
Ressources cgroups
supplémentaires:
cgroups
a été développé par Google en 2006: Wikipedia