How the Figma design team level set on career leveling | Figma Blog (opens in new tab)
From Figma's design team: How to run a design critique Working Well Operations Design Meetings Collaboration Behind the scenes
From Figma's design team: How to run a design critique Working Well Operations Design Meetings Collaboration Behind the scenes
Can design make work, work? Working Well Leadership Operations Meetings
Raising the (table) stakes on tables in FigJam Inside Figma Product updates Design Product management Behind the scenes FigJam News We’re introducing tables in FigJam to help you roadmap, plan, and organize information more effectively. Here, the product team shares how they arr…
Creators need creators Inside Figma Product updates Design Plugins & tooling Thought leadership News New selling tools and the Figma Creator Fund will help fuel the love of craft that fuels Figma Community. Today we are introducing new selling tools and the Figma Creator Fund fo…
Meet the maker: Marcin Wichary Inside Figma Profiles & interviews Writing Typography Thought leadership Culture We talk with people about what makes them a maker. Here, a design manager tells us about his latest project, a book covering 150 years of keyboard design. We have a ri…
Design system 104: Making metrics matter Insights Design systems Career & education Design UI/UX Productivity
Little Big Updates: More improvements for design and collaboration Inside Figma Product updates News
How to build ground-breaking products: A manager’s guide Working Well Leadership Design Thought leadership
Monitor Lustre with Datadog
Daniel Intskirveli Cecilia Watt We introduced Husky in a previous blog post (Introducing Husky, Datadog's Third-Generation Event Store) as Datadog's third-generation event store. To recap, Husky is a distributed, time-series oriented, columnar store optimized for streaming inges…
Design system 102: How to build a design system Insights Design systems Career & education Design UI/UX Productivity
Datadog engineers recently optimized the Datadog Agent's metric processing pipeline to achieve higher throughput and lower CPU overhead. By identifying that metric context generation—the process of creating unique keys for metrics—was a primary bottleneck, they implemented a series of algorithmic changes and Go runtime optimizations. These improvements allow the Agent to process significantly more metrics using the same computational resources. ### Identifying Bottlenecks via CPU Profiling * Developers utilized Go’s native profiling tools to capture CPU usage during high-volume metric ingestion via DogStatsD. * Flamegraph analysis revealed that the `addSample` and `trackContext` functions were the most CPU-intensive components of the pipeline. * The profiling data specifically pointed to tag sorting and deduplication as the underlying operations consuming the most processing time. ### The Challenges of Metric Context Generation * The Agent must generate a unique hash (context) for every metric received to address it within a hash table in RAM. * To ensure the same metric always generates the same key, the original algorithm required sorting all tags and ensuring their uniqueness. * The computational cost of sorting lists repeatedly for every incoming message created a performance ceiling for the entire metrics pipeline. ### Specialization and Runtime Optimization * **Algorithmic Specialization:** The team implemented specialized sorting logic that adjusts based on the number of tags, optimizing the "hot path" for the most common metric structures. * **Hashing Efficiency:** Micro-benchmarks identified Murmur3 as the most efficient hash implementation for balancing speed and collision resistance in this use case. * **Leveraging Go Runtime:** The team transitioned from 128-bit hashes to 64-bit metric contexts. This change allowed the Agent to utilize Go's internal `mapassign_fast64` and `mapaccess2_fast64` functions, which provide optimized map operations for 64-bit keys. ### Redesigning for Performance * The original design followed a rigid "hash metric name -> sort tags -> deduplicate tags -> iterative hash" workflow. * Recognizing that sorting was the primary architectural bottleneck, the team moved toward a new design intended to minimize or eliminate the overhead of traditional list sorting during context generation. To achieve similar performance gains in high-throughput Go applications, developers should profile their applications under realistic load and look for opportunities to leverage runtime-specific optimizations, such as using 64-bit map keys to trigger specialized compiler paths.
Remy Mathieu Our aspiration for the Datadog Agent is for it to process the maximum amount of data, very quickly, with as low of a CPU as possible. Striking this balance between performance and efficiency is an ongoing challenge for us. We are constantly searching for ways to opt…
Taking cues from code Insights Design systems Design Thought leadership
Q&A with Dantley Davis Insights Config Design Profiles & interviews Thought leadership