Linuxで開いているファイルの数を監視できるようにしたいです。現在、/proc/<pid>/fd
合計のファイル数を計算していますfdinfo
。
私のロードバランサーには約100万のFDがあります。したがって、実行には約20秒かかります。
ただし、これによりCPU使用率が高くなります。47.18% [kernel] [k] __d_lookup
この番号を取得するより効率的な方法はありますか?
ベストアンサー1
専用ロードバランサーの場合は、I / OリソースとCPUリソースをプロセスごとに計算して無駄にするのではなく、システムで開いているファイルの総数を追跡します。不要なプロセスの残りのオープンファイルには、期待される結果に対して意味のない値が必要です。
Linuxシステムでグローバルに開かれたファイル数を確認するために統計は必要ありません。 Linuxカーネルは開いているファイルの数を追跡します。
これを確認するには:
cat /proc/sys/fs/file-nr | awk ' { print $1 } '
または
sysctl fs.file-nr | awk ' { print $1 } '
これは、出力を使用して開かれたすべてのファイルを計算するよりもはるかに効率的です。lsof
これはすべての/proc/$PID/fd
ディレクトリを通過し、システムI / O / CPUリソースに悪影響を及ぼします。