Apakah aman untuk menaikkan nilai tersebut dan apa konsekuensi dari nilai yang terlalu tinggi?
Ya, aman untuk menaikkan nilai tersebut dan di bawah ini adalah kemungkinan biayanya [sumber]:
- Masing-masing digunakan jam inotify membutuhkan 540 byte (sistem 32-bit), atau 1 kB (ganda - pada 64-bit) [sumber:1, 2]
- Ini berasal dari memori kernel , yang tidak dapat ditukar.
- Dengan asumsi Anda menyetel maksimum pada 524288 dan semuanya telah digunakan (tidak mungkin), Anda akan menggunakan sekitar 256MB/512MB memori kernel 32-bit/64-bit.
- Perhatikan bahwa aplikasi Anda juga akan menggunakan memori tambahan untuk melacak pegangan inotify, jalur file/direktori, dll. -- seberapa banyak bergantung pada desainnya.
Untuk memeriksa jumlah maksimal jam tangan inotify:
cat /proc/sys/fs/inotify/max_user_watches
Untuk menyetel jumlah maksimum jam tangan inotify
Untuk sementara:
- Jalankan
sudo sysctl fs.inotify.max_user_watches=
dengan nilai pilihan Anda di bagian akhir.
Permanen (info lebih detail):
- masukkan
fs.inotify.max_user_watches=524288
ke pengaturan sysctl Anda. Bergantung pada sistem Anda, mereka mungkin berada di salah satu tempat berikut:- Debian/RedHat:
/etc/sysctl.conf
- Arch:masukkan file baru ke dalam
/etc/sysctl.d/
, mis./etc/sysctl.d/40-max-user-watches.conf
- Debian/RedHat:
- Anda mungkin ingin memuat ulang pengaturan sysctl untuk menghindari reboot:
sysctl -p
(Debian/RedHat) atausysctl --system
(Lengkungan)
Periksa untuk melihat apakah jumlah maksimum jam tangan inotify telah tercapai:
Gunakan tail
dengan -f
(ikuti) opsi pada file lama mana pun, mis. tail -f /var/log/dmesg
:- Jika semuanya baik-baik saja, itu akan menampilkan 10 baris terakhir dan jeda; batalkan dengan Ctrl-C- Jika Anda kehabisan jam tangan , itu akan gagal dengan kesalahan yang agak samar ini:
tail: cannot watch '/var/log/dmsg': No space left on device
Untuk melihat apa yang menggunakan jam tangan 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
Kolom pertama menunjukkan jumlah inotify fds (meskipun bukan jumlah jam tangan) dan kolom kedua menunjukkan PID dari proses tersebut [sumber:1, 2].