Live Nov 18 · Cohort 3Nov 18, 19:00 MSK — free hands-on AI agents live workshop · Live Cohort 3 starts Nov 23Join Nov 18 Live →Cohort 3 (Nov 23)
ReleaseCode / SDK · ActionableSelectel→ original

Pinterest replaces its profiler patchwork with Intel’s open-source gProfiler

Pinterest serves 640 million monthly active users on hundreds of thousands of instances, with services written in Java, Python, C++, Go and Node.js. Teams previously relied on a mix of perf, async-profiler and py-spy: the data was fragmented, and comparing profiles across languages and machines was difficult. Now the company has worked with Intel to improve the open-source gProfiler and contributed the changes upstream.

AI-processed from Selectel; edited by Hamidun News
Pinterest replaces its profiler patchwork with Intel’s open-source gProfiler
Source: Selectel. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceSelectel ↗
Editor-in-Chief
Key metric #1One profiler replaces a patchwork of perf, async-profiler and py-spy
Key metric #2Dynamic and wall-time profiling added
Key metric #3Flame graphs built from hardware performance counters

When you have five services written in one language, profiling takes a single command. When you have hundreds of thousands of instances and five languages, profiling becomes an engineering challenge in its own right. That is the problem Pinterest faced, and its solution is an interesting one: instead of building a proprietary internal system, the company adopted Intel’s open-source gProfiler and began extending it.

The problem: many languages, many tools

The scale looks like this: 640 million monthly active users and hundreds of thousands of compute instances. Services are written in Java, Python, C++, Go and Node.js. Engineers had a familiar tool for each language: perf for native code, async-profiler for the JVM and py-spy for Python.

Each is good on its own. Together, they create a mess. Data formats differ, launch procedures differ, and piecing together a view across a chain such as “Node.js gateway, Java backend, C++ library” requires manual work. Comparing a service’s profile across machines or across days is also difficult when the snapshots come from different tools.

For the infrastructure team, this is no academic concern. Profiles help explain where hardware spending goes and catch regressions after a release. Fragmented data makes those questions slower to answer, with less confidence.

What changed in gProfiler

gProfiler is an open-source continuous profiler. It runs as an agent on a machine, collects profiles across multiple languages and presents the results as flame graphs. Pinterest worked with Intel to extend its capabilities and contributed the changes back to the open-source project. The improvements include:

  • Dynamic profiling. Profiling can be enabled and configured while systems are running, rather than kept on continuously across every machine.
  • Hardware-level telemetry collection. The profiler captures not just where code spends time, but also data from processor counters.
  • Wall-time profiling. Shows where a thread spends time waiting, rather than only where it uses the processor.
  • Flame graphs based on performance counters. Graphs can be built around hardware events instead of the usual “CPU time” axis.

An example makes the difference between CPU time and wall time easier to understand. Suppose an endpoint responds in 300 ms, but the CPU profile shows just 40 ms of processor activity. Where did the other 260 ms go? Most likely, the thread was waiting for a database response, the network or a lock. A CPU profile will not show that portion at all, while a wall-time profile will reveal it immediately.

Performance counters let you look deeper. Two functions might take the same amount of time, but one might constantly miss the processor cache. A conventional profile will not distinguish between them; a hardware-event profile will.

What matters here, and what we do not know

The original announcement provides no figures for compute resources saved, how much faster regressions are identified or how many instances have already migrated. It is therefore too early to claim a measurable impact. This is more a statement of architectural direction than a results report.

Still, the choice itself is telling. A company of this size could have built its own platform, but chose an open-source project and contributed its improvements back. That benefits everyone else: improvements to dynamic and wall-time profiling will become available to anyone using gProfiler.

What to do in practice

  1. Take stock of your tool sprawl. If you have more than two languages in production and more than two different profilers, you have the same problem, just on a smaller scale.
  2. Try gProfiler in a test environment. It is an open-source project designed specifically for continuous profiling without changes to service code.
  3. Make wall-time profiling a habit. If a service is “slow, but the CPU is idle,” this is what you need.
  4. Watch upstream developments. Pinterest and Intel’s improvements are expected to reach the main repository, and it is worth checking which are already available in releases.

The main takeaway is simple: at scale, a unified profiler matters more than the perfect tool for each language. Comparable data across the entire fleet delivers more value than the best possible precision in a single service.

Story

Key Questions Answered

What are the key details on The problem: many languages, many tools?

The scale looks like this: 640 million monthly active users and hundreds of thousands of compute instances. Services are written in Java, Python, C++, Go and Node.js. Engineers had a familiar tool for each language: perf for native code, async-profiler for the JVM and py-spy for Python. Each is good on its own. Together, they create a mess. Data formats differ, launch procedures differ, and piecing together a view across a chain such as “Node.js gateway, Java backend, C++ library” requires manual work.

What changed in gProfiler?

gProfiler is an open-source continuous profiler. It runs as an agent on a machine, collects profiles across multiple languages and presents the results as flame graphs. Pinterest worked with Intel to extend its capabilities and contributed the changes back to the open-source project. The improvements include: Dynamic profiling. Profiling can be enabled and configured while systems are running, rather than kept on continuously across every machine. Hardware-level telemetry collection.

What matters here, and what we do not know?

The original announcement provides no figures for compute resources saved, how much faster regressions are identified or how many instances have already migrated. It is therefore too early to claim a measurable impact. This is more a statement of architectural direction than a results report. Still, the choice itself is telling. A company of this size could have built its own platform, but chose an open-source project and contributed its improvements back.

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
What do you think?
Loading comments…