Skip to content

Resolve "Client: Support MessagePack for process bandwidth monitoring"

GekkoFS clients support capturing the I/O traces of each individual process and periodically exporting them to a given file or ZeroMQ sink via the TCP protocol. To use this feature, the corresponding ZeroMQ (libzmq and cppzmq) dependencies are required which can be found in the default_zmq dependency profile. In addition, GekkoFS must be compiled with client metrics enabled (disabled by default) via the CMake argument -DGKFS_ENABLE_CLIENT_METRICS=ON.

Client metrics are individually enabled per GekkoFS client process via the following environment variables:

  • LIBGKFS_ENABLE_METRICS=ON enables capturing client-side metrics.
  • LIBGKFS_METRICS_FLUSH_INTERVAL=10 sets the flush interval to 10 seconds (defaults to 5). All outstanding client metrics are flushed when the process ends.
  • LIBGKFS_METRICS_PATH=<path> sets the path to flush client-metrics (defaults to /tmp/gkfs_client_metrics).
  • LIBGKFS_METRICS_IP_PORT=127.0.0.1:5555 enables flushing to a set ZeroMQ server. This option disables flushing to a file.

The ZeroMQ export can be tested via the gkfs_clientmetrics2json application which is built when enabling the CMake option -DGKFS_BUILD_TOOLS=ON:

  • Starting the ZeroMQ server: gkfs_clientmetrics2json tcp://127.0.0.1:5555
  • gkfs_clientmetrics2json <path> can also be used to unpack the Messagepack export from a file. Examplarily output with the ZeroMQ sink enabled when running: LD_PRELOAD=libgkfs_intercept.so LIBGKFS_ENABLE_METRICS=ON LIBGKFS_METRICS_IP_PORT=127.0.0.1:5555 gkfs cp testfile /tmp/gkfs_mountdir/testfile:
~ $ gkfs_clientmetrics2json tcp://127.0.0.1:5555
Binding to: tcp://127.0.0.1:5555
Waiting for message...

Received message with size 68
Generated JSON:
[extra]avg_thruput_mib: [221.93,175.87,266.81,135.69]
end_t_micro: [8008,12396,16006,18454]
flush_t: 18564
hostname: "evie"
io_type: "w"
pid: 1259304
req_size: [524288,524288,524288,229502]
start_t_micro: [5755,9553,14132,16841]
total_bytes: 1802366
total_iops: 4

Closes #271 (closed)

Edited by Marc Vef

Merge request reports