Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Timeline Tracing Roadmap #710

Open
11 of 30 tasks
zhongzc opened this issue Jul 30, 2020 · 0 comments
Open
11 of 30 tasks

Timeline Tracing Roadmap #710

zhongzc opened this issue Jul 30, 2020 · 0 comments

Comments

@zhongzc
Copy link
Contributor

zhongzc commented Jul 30, 2020

Related Feature Request

#552, pingcap/tidb#17693

Library Development

Many existing tracing libraries are powerful, easy-to-use, and convenient to integrate with other existing components. Unfortunately, almost none of them perform well in terms of performance. For that, lightweight, efficient, and performant tracing libraries for both TiKV and TiDB need to be developed to meet performance requirements. Hopefully, runtime information will be collected constantly so that details of uncommon problems can be caught.

Apply to Codebase

After finishing library development, applying the library to the codebase is the next work to do.

  • Apply to TiKV
    • collect tracing demands from TiKV: docs (in Chinese)
    • put tracing points to procedures wanted to trace (WIP)
      • handle old async codes of producer/consumer model (WIP)
  • Apply to TiDB

Full Integration

Without intervention, all tracing results only reside in memory. However, tracing results of requests associated with a SQL statement or a transaction always need some ways to collect when we intend to show them. These following questions may be of interest to us:

  1. How, when, and where to store them?
  2. How to fetch them?

Due to the size of tracing results is not small commonly, I/O is always a difficult problem we have to face. It will have a cost that cannot be ignored whether results are persisted to disks or transmitted through the network. Therefore, careful design and meticulous tests are most needed here.

  • Handle tracing results from TiKV
    • trade-off docs (in Chinese)
    • gather and send back to TiDB
      • embed the serialized results into grpc responses (WIP)
      • post processing
        • drop some spans if the amount of spans is too big
        • reply or not according to threshold of execution time
      • serialize results to flatbuffers: minitrace-fbs
  • Handle all tracing results at TiDB
    • research and benchmark

User Interface

In order to maximize the usability of tracing, a user-friendly UI is essential. People can visually see what's happening during the execution of a SQL statement / a transaction intuitively.

  • UX/UI design
  • Frontend implementation
  • Data fetching and integration
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants