web-dev-qa-db-fra.com

Est-il possible de patcher sans augmenter le CPU?

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).

4
Peter Turner

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:

3
WinEunuuchs2Unix