ANNOUNCE: Linux Distributed Lock Manager Viewer
From: Alexander Aring
Date: Tue Jun 07 2022 - 13:52:13 EST
Hi,
I've built with existing open source software a Linux DLM (Distributed
Lock Manager) viewer [0]. The Linux DLM subsystem can be found in
"fs/dlm" and its main users are gfs2, ocfs2 and cluster-md. It is like
the name already propagates a distributed lock manager for Linux
clusters. A cluster can have shared resources among several nodes. DLM
offers to protect shared resources against mutual access e.g. cluster
file system gfs2 which operates on shared block devices among several
nodes. The viewer offers a graphical view about the used lock states
over time in a cluster.
Therefore we need to capture Linux DLM traces on all cluster nodes.
This is done by using the trace-cmd record command with the time
synchronization feature between multiple Linux machines which are part
of the DLM cluster. Another tool is dlm2slog2 [1] reads the recorded
Linux trace files, merges and converts them into a "drawable" open
format known as "slog2" [2] by using the open slog2 sdk. The slog2sdk
contains a viewer named "jumpshot" [3] which can be used to visualize
the slog2 file. Originally this drawable format was invented to trace
MPI (Message Passing Interface) applications, however it does not
depend on MPI and offers a graphical tracing for distributed
applications which I adapted for DLM lock states.
The only "missing" piece here was the convert and merge of the
recorded Linux traces to the slog2 fileformat. Hereby I would like to
thank all trace-cmd developers (especially those who made the time
synchronization feature) and slog2sdk developers which offered they
work as open source so it was easy for me to make a small piece of
software "dlm2slog2" that works as a bridge between trace-cmd/linux
tracing and slog2sdk.
As the slog2sdk is written in Java I did Java bindings similar to the
existing python bindings for libtracecmd, similar classes, etc.
underneath it uses swig. I would like to try to bring those bindings
upstream to trace-cmd. It's _not_ necessary to have a Java dependency
on trace-cmd, there should be some trace-cmd-java package available
which installs the necessary swig library libctracecmdjava that offers
jni access to libtracecmd. As well a jar file which can be seen as a
library/python module and follows the same license as libtracecmd. The
alternative here would be to maintain an out-of-tree trace-cmd-java
package. I would like to hear some feedback for it, the current code
can be found at [4].
If you want to get started or simply see what this is all about
inclusive screenshots, see [0].
- Alex
[0] https://gitlab.com/netcoder/dlm2slog2/-/wikis/home
[1] https://gitlab.com/netcoder/dlm2slog2
[2] https://www.mcs.anl.gov/research/projects/perfvis/software/log_format/index.htm#SLOG-2
[3] https://www.mcs.anl.gov/research/projects/perfvis/software/viewers/index.htm#Jumpshot-4
[4] https://gitlab.com/netcoder/trace-cmd/-/commits/java_bindings