Project

General

Profile

A standard framework for Ceph performance profiling with latency breakdown

Summary

When we working on Ceph performance evaluation and optimization, we found how to trouble shoot the bottlenecks, identify the best tuning knobs from many parameters and handle the unexpected performance regression between different releases is pretty difficult. So we'd like to propose a general framework based on CBT and existing LTTng and other components we need to add to build a user friendly framework to profile and tune Ceph performance.

Owners

  • Chendi Xue (Intel)
  • Jian Zhang (Intel)
  • Mark Nelson (Red Hat)

Interested Parties

  • Andrew Shewmaker (Red Hat, UCSC)
  • Danny Al-Gaaf (Deutsche Telekom)
  • Name

Current Status

From our point of view, the framework should comprises three parts of work:
(1) Deployment
  1. CBT to deploy the Ceph cluster
  2. script to deploy lttng and zipkin.
(2) Workload generator,
  1. Enable COSBench as a CBT Object storage plugin, Integrate COSBench into CBT as the object(rgw) workload generator.
  2. Current proposed approach is:
  3. Let the end user to deploy COSBench
  4. Add a plugin model in CBT to extract the COSBench related parameters and translate it to COSBench XML files
  5. Use the plugin to kick off COSBench to generate the load and get the data
(3) Analyzer
  1. Adding more trace points
  2. Leverage blkin (LTTng + Zipkin) patch to do the Ceph latency breakdown.

Detailed Description

(1)Workload generator
Cosbench is an open source Benchmarking tool developed by intel to measure Cloud Object Storage Service performance.
What we want to do is to extend CBT benchmark part, to support calling cosbench do the object(rgw) test.

(2)Analyzer
After investigating all current latency breakdown method in ceph, we think the BLKIN (LTTNG+ZIPKIN) patch seems to be the most promised approach.

Patch is first posted by Marios Kogias in August. http://www.spinics.net/lists/ceph-devel/msg19890.html
Currently owned by Andrew Shewmaker. https://github.com/agshew/ceph/tree/wip-blkin-v4

What we want to do is to
1. help to make the BLKIN patch bug less, stable and small overhead.
2. Add support in CBT to run a performance test with BLKIN.
3. Add more tracepoints followed BLKIN method to do "Latency Breakdown".
Exists problem
4. BLKIN patch is not merged to ceph master yet, so we need to rebase BLKIN patch to each new release.
5. Current BLKIN codes only cover the MOSDOP, MOSDSubop and MOSDRepop, may extents to other msg in the future.
6. Zipkin can only show the latency breakdown for one specific request. So the webpage will show thousands of requests, we need to summarize all request, add a page to show average relative latency and a timeline.
7. Can't link/merge client, primary and replica tracepoints in the same view. Because of multi OSD server system time delta problem, we aren't able to find a best solution yet to get the time delta by microseconds.

Work items

Coding tasks

Task 1: make CBT support running cosbench test
Task 2: BLKIN patch bug fixing.
Task 3: script to deploy lttng and zipkin.

Build / release tasks

  1. Task 1
  2. Task 2
  3. Task 3

Documentation tasks

  1. Task 1
  2. Task 2
  3. Task 3

Deprecation tasks

  1. Task 1
  2. Task 2
  3. Task 3