Manual:$wgShellCgroup/cs

Pod Linuxem: Adresář cgroup používaný k omezení využití paměti příkazy shellu. Adresář musí být zapisovatelný pro uživatele, který spouští MediaWiki.

Je-li zadáno, použije se místo ulimit, což je nepřesné, a způsobí, že malloc vrátí hodnotu NULL, což odhalí chyby v aplikacích C a způsobí jejich segfault nebo uváznutí.

Obalový skript vytvoří cgroup pro každý spuštěný příkaz shellu jako podskupinu zadané cgroup. Pokud je limit paměti překročen, jádro pošle signál SIGKILL procesu v podskupině. (MediaWiki často hlásí tuto chybu jako chybový kód 137 po návratu bash příkazu přijímajícího SIGKILL)



Nastavení
Pokud cgroups nejsou nastaveny, možná budete muset připojit souborový systém cgroup. As root:

mount -t tmpfs cgroup_root /sys/fs/cgroup mkdir /sys/fs/cgroup/memory mount -t cgroup cgroup_memory -omemory /sys/fs/cgroup/memory

Next you need to do MediaWiki specific configuration:

mkdir -p /sys/fs/cgroup/memory/mediawiki mkdir -m 0777 /sys/fs/cgroup/memory/mediawiki/job

The reliability of cgroup cleanup can be improved by installing a notify_on_release script in the root cgroup (This step is optional).


 * Copy to /usr/local/bin/cgroup-mediawiki-clean
 * Run the command

echo "/usr/local/bin/cgroup-mediawiki-clean" > /sys/fs/cgroup/memory/release_agent

Last of all, enable cgroups in your

echo '$wgShellCgroup = "/sys/fs/cgroup/memory/mediawiki/job";' >> LocalSettings.php

The reliability of cgroup cleanup can be improved by installing a notify_on_release script in the root cgroup, see e.g. 40784

Řešení problémů
If cgroups don't work, things to try:

If the memory subsystem has a 0 under enabled, then memory cgroups may be disabled in your kernel. Try rebooting your computer with  on the kernel command line. You should use at least 4.1
 * Install cgroup-bin package
 * Run the command.
 * Older bash doesn't like the readarray call in limit.sh.



Viz též

 * shell script
 * cgroup documentation in the Linux kernel