Continuous profiling applications help engineering teams spot performance bottlenecks and troubleshoot issues faster. And for companies running applications in Kubernetes, profiling is a modern and essential practice for catching and improving upon resource-consuming application code.
At ContainIQ, we provide several tools for Kubernetes monitoring and troubleshooting. Included, ContainIQ offers an eBPF-based profiler for continuous profiling with minimal overheard. With ContainIQ’s profiler, engineers can improve the mean time to resolution, quickly spot performance issues, and identify ways to reduce unnecessary cloud spending. And it works out of the box without additional instrumentation.
In this article, we highlight ContainIQ’s profiling feature set with a quick explanation of functionality, implementation, and benefits.
How Does ContainIQ’s Profiler Work?
With ContainIQ, users can profile continuously and have visibility into every workload running in a Kubernetes cluster. Users can capture stack traces from individual applications all the way down to the kernel system calls and the functions that they rely on.
And because ContainIQ is eBPF-based, there isn’t any additional code instrumentation to get up and running.
As seen above, with ContainIQ, users can view all stack traces from individual applications. This helps identify the functions which are being called most frequently and identify performance bottlenecks. Users are able to search by pod name, and search by process name using the search tools at the top of the profiler. Users can also filter by cluster, namespace, and date range, including time. For example, users could drill into a narrow one-hour range or view performance over time, as far back as the past 14-days.
By clicking on an individual stack frame, users can see all of the children of the stack. Or in other words, users can identify slow functions. ContainIQ offers support for C/C++, Go, Rust, Python, and Ruby.
Using ContainIQ’s role-based access control, users can designate permissions for other users on a cluster-by-cluster basis, allowing them to profile only specific applications. Across the entire ContainIQ platform, users can set alerts and trigger notifications to Slack or various destinations using a webhook.
Pricing is straightforward in that the profiler is included for no additional charge as part of our standard pricing.
How to Implement ContainIQ’s Profiler
Getting started with ContainIQ is simple. Users are able to create an account using the self-service sign-up experience.
After creating an account at ContainIQ, the installation process is easy and should only take a few minutes. As described in our documentation, users can install ContainIQ using the deployment file or, more commonly, with Helm.
And that’s it! ContainIQ’s profiler was designed to work out of the box without any additional instrumentation. We can deliver this experience by using eBPF to access the kernel directly instead of collecting data at the application layer directly.
Overheard is often a concern for companies who want the functionality of a profiler but who are concerned about performance. Fortunately, ContainIQ’s profiler is low overhead and can be run continuously without worry.
The table below shows the results of OpenSSL speed <terminal inline>aes-256-cbc<terminal inline> with and without the profiler running:
As shown above, the additional overhead of using ContainIQ’s profiler is minimal. This is important because using a toolset with lower overhead means lower latency and less computing resources consumed.
In this article, we highlighted ContainIQ’s profiler. With ContainIQ, engineering teams running workloads on Kubernetes can access critical information regarding application performance and resolve issues with slow or inefficient code.
ContainIQ’s eBPF-based approach means that users can continuously profile without being concerned about overhead.
To get started, users can sign-up for an account [here](https://app.containiq.com/register). You can also book a demo with a team member if you’d like a more formal demo or to onboard to the platform together.