Je bezpečné zvýšit tuto hodnotu a jaké by byly důsledky příliš vysoké hodnoty?
Ano, je bezpečné tuto hodnotu zvýšit a níže jsou možné náklady [zdroj]:
- Každý použitý hodinky inotify zabírají 540 bajtů (32bitový systém) nebo 1 kB (dvojitý - na 64bitovém) [zdroje:1, 2]
- To vychází z paměti jádra , který je nezaměnitelný.
- Za předpokladu, že nastavíte maximum na 524288 a všechny byly použity (nepravděpodobné), použili byste přibližně 256 MB/512 MB paměti 32bitového/64bitového jádra.
- Všimněte si, že vaše aplikace bude také využívat další paměť ke sledování popisovačů inotify, cest k souborům/adresářům atd. – kolik závisí na jejím návrhu.
Chcete-li zkontrolovat maximální počet hodinek inotify:
cat /proc/sys/fs/inotify/max_user_watches
Nastavení maximálního počtu hodinek inotify
Dočasně:
- Spusťte
sudo sysctl fs.inotify.max_user_watches=
s vámi preferovanou hodnotou na konci.
Trvale (podrobnější informace):
- zadejte
fs.inotify.max_user_watches=524288
do nastavení sysctl. V závislosti na vašem systému mohou být na jednom z následujících míst:- Debian/RedHat:
/etc/sysctl.conf
- Arch:vložte nový soubor do
/etc/sysctl.d/
, např./etc/sysctl.d/40-max-user-watches.conf
- Debian/RedHat:
- možná budete chtít znovu načíst nastavení sysctl, abyste se vyhnuli restartování:
sysctl -p
(Debian/RedHat) nebosysctl --system
(oblouk)
Zkontrolujte, zda bylo dosaženo maximálního počtu hodinek inotify:
Použijte tail
s -f
(sledovat) volbu na libovolném starém souboru, např. tail -f /var/log/dmesg
:- Pokud je vše v pořádku, zobrazí se posledních 10 řádků a pauza; přerušit pomocí Ctrl-C- Pokud jste mimo hodinky , selže s touto poněkud záhadnou chybou:
tail: cannot watch '/var/log/dmsg': No space left on device
Chcete-li zjistit, co spotřebovává hodinky, inotify
find /proc/*/fd -lname anon_inode:inotify |
cut -d/ -f3 |
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
uniq -c |
sort -nr
První sloupec udává počet inotify fds (nikoli však počet sledování) a druhý ukazuje PID tohoto procesu [zdroje:1, 2].