summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/rados/operations/index.rst1
-rw-r--r--doc/rados/operations/memory-profiling.rst96
2 files changed, 97 insertions, 0 deletions
diff --git a/doc/rados/operations/index.rst b/doc/rados/operations/index.rst
index 032b567bc90..fca327a89b0 100644
--- a/doc/rados/operations/index.rst
+++ b/doc/rados/operations/index.rst
@@ -15,6 +15,7 @@ and, monitoring an operating cluster.
operating
monitoring
cpu-profiling
+ memory-profiling
troubleshooting
debug
diff --git a/doc/rados/operations/memory-profiling.rst b/doc/rados/operations/memory-profiling.rst
new file mode 100644
index 00000000000..dc46dcc888c
--- /dev/null
+++ b/doc/rados/operations/memory-profiling.rst
@@ -0,0 +1,96 @@
+==================
+ Memory Profiling
+==================
+
+Ceph OSD and metadata server daemons can generate heap profiles using
+``tcmalloc``. To generate heap profiles, ensure you have ``google-perftools``
+installed::
+
+ sudo apt-get google-perftools
+
+The profiler dumps output to your ``log file`` directory (i.e.,
+``/var/log/ceph``). See `Logging and Debugging Config Reference`_ for details.
+To view the profiler logs with Google's performance tools, execute the
+following::
+
+ google-pprof -gv {log-path/filename}
+
+Refer to `Google Heap Profiler`_ for additional details.
+
+Once you have the heap profiler installed, start your cluster and begin using
+the heap profiler. You may enable or disable the heap profiler at runtime, or
+ensure that it runs continously. For the following commandline usage, replace
+``{daemon-type}`` with ``osd`` or ``mds``, and replace ``daemon-id`` with the
+OSD number or metadata server letter.
+
+
+Starting the Profiler
+---------------------
+
+To start the heap profiler, execute the following::
+
+ ceph {daemon-type} tell {daemon-id} heap start_profiler
+
+For example::
+
+ ceph osd tell 1 heap start_profiler
+
+
+Printing Stats
+--------------
+
+To print out statistics, execute the following::
+
+ ceph {daemon-type} tell {daemon-id} heap stats
+
+For example::
+
+ ceph osd tell 0 heap stats
+
+.. note:: Printing stats does not require the profiler to be running and does
+ not dump the heap allocation information to a file.
+
+
+Dumping Heap Information
+------------------------
+
+To dump heap information, execute the following::
+
+ ceph {daemon-type} tell {daemon-id} heap dump
+
+For example::
+
+ ceph mds tell a heap dump
+
+.. note:: Dumping heap information only works when the profiler is running.
+
+
+Releasing Memory
+----------------
+
+To release memory that ``tcmalloc`` has allocated but which is not being used by
+the Ceph daemon itself, execute the following::
+
+ ceph {daemon-type} tell {daemon-id} heap release
+
+For example::
+
+ ceph osd tell 2 heap release
+
+
+Stopping the Profiler
+---------------------
+
+To stop the heap profiler, execute the following::
+
+ ceph {daemon-type} tell {daemon-id} heap stop_profiler
+
+For example::
+
+ ceph {daemon-type} tell {daemon-id} heap stop_profiler
+
+.. _Logging and Debugging Config Reference: ../../configuration/log-and-debug-ref
+.. _Google Heap Profiler: http://google-perftools.googlecode.com/svn/trunk/doc/heapprofile.html
+
+
+