What is Performance Tracing?
Golang involves runtime execution tracer to capture a wide range of run-time events. Scheduling, syscall, garbage collections, heap size, and events collected by the runtime available for visualization by the Go tool trace. Execution tracer detects latency and utilization problems. CPU utilization and networking or syscalls are a cause of preemption for the goroutines.
The primary goal of performance tuning is to find bad parts /bottlenecks of code and to improve a bad parts/bottlenecks of codes. Click to explore about, Performance Tuning Tools and Architecture
Performance Monitoring performed in two ways -
- Using trace parameter
- Open tracing
Why Performance Tracing is important?
- Check how all cores of the processor are used to execute a function.
- Identifies how all cores are being used either in case of going concurrent programming or go sequential way of programming.
How Performance Tracing works?Components available on visualization dashboard, trace code through this dashboard and understand the result. Result accessible from the main dashboard. The need for these components explained below and for what purpose each component used is -
- It is the most powerful and interactive visualization tool which represents the execution time for an entire program.
- It represents information like what processes are running at each virtual processor, what methods are in a blocked state and waiting to execute.
- This visualization only works at chrome browser.
Go Routine Analysis
- It represents information like what are new goroutines created during execution of one goroutine.
- This analysis helps us to represent information like how much time routine blocked while trying to acquire new resources and how much it was blocking when it was waiting to acquire a lock on a mutex (resources).
- Network/Sync/Syscall blocking profile. It reveals for how long goroutines blocked on each of the resources. It acts as a memory/CPU profiling.
Scheduler Latency Profiler
- Scheduling is a way to allocate resources (e.g., CPU) to a process, which helps in the execution of processes.
- It process in such a way that a higher priority process is selected first.
A distributed SQL database built on a transactional and strongly-consistent key-value store. Click to explore about, CockroachDB Architecture and Performance
How to adopt Performance Tracing?Firstly, generate a trace. out the file of code. To create a trace file code, the following command can be followed -
Wherever a trace.out is generated, then visualization on this file can be done by this command -
go test -run=. -bench=. -cpuprofile=cpu.pprof -benchmem -memprofile=mem.out -trace.trace.out
go tool trace trace.out
- View trace
- Go routine analysis
- Network blocking profile
- Synchronization blocking profile
- Syscall blocking profile
- Scheduler latency profile
Visualization for view TraceClick on a Go routine analysis. After clicking on a Go routine analysis following components will be visible .These components are listed below -
- testing.(*B).launch N=1
- runtime.gcBgMarkWorker N=4
- runtime.main N=1
- runtime.bgsweep N=1
- Projects/Doc_demo/main.init.0.func1 N=1
- testing.(*B).run1.func1 N=1
- runtime.timerproc N=1
- runtime/trace.Start.func1 N=1
- testing.runTests.func1.1 N=1
- testing.(*B).launch N=1
Go routine analysisClick on a Go routine number. In the same way visualization for other components is possible.
- Visualization for Network blocking profile
- Visualization for Synchronization Blocking Profile
- Visualization for Syscall blocking profile
- Visualization for Scheduler latency profile
A non-functional type of testing that measures the performance of an application or software under a certain workload based on various factors like responsive rates, CPU and resource utilization, and stability. Click to explore about, Performance Testing Tools and Its Best Practices
What are the benefits of Performance Tracing?
- Understand goroutines execution.
- Understand core runtime events like GC runs.
- Identify poorly parallelized execution.
For tracing, there is no specific tool. Usually, Testing package code written in such a way that helps in a tracing. Executing a tracing regrading command will directly open a dashboard at the web. Hence, not any special tool is required.
- Explore about Performance Automation Testing Frameworks and Tools
- Click to know about System Testing Types, Best Practices and Tools