Add new service "file_tracker"
This new service periodically tracks the file open in the system.
Closes-Bug: #1995502
Change-Id: I02e097fef07655ff571af9f35bf258b2ed975098
diff --git a/.zuul.yaml b/.zuul.yaml
index 6dbb5ba..ce38760 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -469,6 +469,7 @@
dstat: false
etcd3: true
memory_tracker: true
+ file_tracker: true
mysql: true
rabbit: true
group-vars:
@@ -477,6 +478,7 @@
# Shared services
dstat: false
memory_tracker: true
+ file_tracker: true
devstack_localrc:
# Multinode specific settings
HOST_IP: "{{ hostvars[inventory_hostname]['nodepool']['private_ipv4'] }}"
@@ -544,6 +546,7 @@
dstat: false
etcd3: true
memory_tracker: true
+ file_tracker: true
mysql: true
rabbit: true
tls-proxy: true
@@ -593,6 +596,7 @@
# Shared services
dstat: false
memory_tracker: true
+ file_tracker: true
tls-proxy: true
# Nova services
n-cpu: true
diff --git a/doc/source/debugging.rst b/doc/source/debugging.rst
index fd0d9cd..3ca0ad9 100644
--- a/doc/source/debugging.rst
+++ b/doc/source/debugging.rst
@@ -20,6 +20,12 @@
falling (i.e. processes are consuming memory). It also provides
output showing locked (unswappable) memory.
+file_tracker
+------------
+
+The ``file_tracker`` service periodically monitors the number of
+open files in the system.
+
tcpdump
-------
diff --git a/lib/dstat b/lib/dstat
index eb03ae0..870c901 100644
--- a/lib/dstat
+++ b/lib/dstat
@@ -40,12 +40,18 @@
if is_service_enabled peakmem_tracker; then
die $LINENO "The peakmem_tracker service has been removed, use memory_tracker instead"
fi
+
+ # To enable file_tracker add:
+ # enable_service file_tracker
+ # to your localrc
+ run_process file_tracker "$TOP_DIR/tools/file_tracker.sh"
}
# stop_dstat() stop dstat process
function stop_dstat {
stop_process dstat
stop_process memory_tracker
+ stop_process file_tracker
}
# Restore xtrace
diff --git a/tools/file_tracker.sh b/tools/file_tracker.sh
new file mode 100755
index 0000000..9c31b30
--- /dev/null
+++ b/tools/file_tracker.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+set -o errexit
+
+# time to sleep between checks
+SLEEP_TIME=20
+
+function tracker {
+ echo "Number of open files | Number of open files not in use | Maximum number of files allowed to be opened"
+ while true; do
+ cat /proc/sys/fs/file-nr
+ sleep $SLEEP_TIME
+ done
+}
+
+function usage {
+ echo "Usage: $0 [-x] [-s N]" 1>&2
+ exit 1
+}
+
+while getopts ":s:x" opt; do
+ case $opt in
+ s)
+ SLEEP_TIME=$OPTARG
+ ;;
+ x)
+ set -o xtrace
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+
+tracker