user avatar
FPResolver: Store previously read mount infos for efficiency
Omid Azizi authored
Summary:
The ElfSymbolizer calls SetMountNamespace(pid) to switch between stack traces a lot.
In such cases, we don't want to keep re-reading the mount infos for a PID.

This new version optimizes by keeping previously read results and retrieving them on a future access.

Test Plan: This is a performance optimization with no functional changes, so rely on existing tests

Reviewers: #stirling, yzhao

Reviewed By: #stirling, yzhao

Subscribers: yzhao

Differential Revision: https://phab.corp.pixielabs.ai/D9270

GitOrigin-RevId: fab61cf95e7cf13e0c2f1312eae475bd86f90ed7
4026f06f
Name Last commit Last update
.github Add github issue templates
.idea Don't typecheck `.pnp.js`; allow typecheck watch to keep going
.readme_assets PP-2627 - Update front page readme
.vscode Add redirect routes from clusterID to clusterName
bazel Add nats testing client, image, and dummy test source
ci set x in bazel_build_deps to debug
demos Fix demo apps prod upload bucket
k8s Add SSL policy to restrict to TLS >= 1.2
scripts Update load_dev_db to include operator tags
skaffold [PP-2838] Introducing Config Manager Service.
src FPResolver: Store previously read mount infos for efficiency
styleguide Update styleguide to add code specific information
third_party Restore cpplint to updated version
tools Add fossa upload to main run
.arcconfig Move linters into tools
.arclint Speed up arcanist eslint invocation
.arcunit Rewrite generated file checker tests
.bazel_fix_commands.json Adding ibazel fix commands
.bazelignore Move chef under tools
.bazelproject Clion with bazel setup
.bazelrc Add extension to get_workspace_status.
.clang-format Clang-format: Make pointer bind to type
.clang-tidy Silence some more clang-tidy rules that we never seem to follow
.flake8rc Allow 120 chars line length
.fossa.yml Delete unused protos
.gitattributes
.gitignore
.gitmodules
.golangci.yaml
.graphqlconfig
.pxl.flake8rc
.snyk
.yamllint
AUTHORS
BUILD.bazel
CLA.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
DEVELOPMENT.md
Doxyfile
GOVERNANCE.md
Jenkinsfile
LICENSE
Makefile
OWNERS
README.md
WORKSPACE
codecov.yml
docker.properties
go.mod
go.sum
go_deps.bzl
pixielabs.sublime-project
prototool.yaml
workspace.bzl

Pixie!


Docs Slack Mentioned in Awesome Kubernetes Mentioned in Awesome Go Build Status codecov


What is Pixie?

Pixie

Pixie gives you instant visibility by giving access to metrics, events, traces and logs without changing code.

Try out Pixie and join our community on slack.


Table of contents

Quick Start

Check out Pixie's Quick Start install guide.

Get Instant Auto-Telemetry

Run scripts with px CLI

CLI Demo


Service SLA:

px run px/service_stats


Node health:

px run px/node_stats


MySQL metrics:

px run px/mysql_stats


Explore more scripts by running:

px scripts list


Check out our pxl_scripts folder for more examples.


View machine generated dashboards with Live views

CLI Demo

The Pixie Platform auto-generates "Live View" dashboards to visualize script results.


Pipe Pixie dust into any tool

CLI Demo

You can transform and pipe your script results into any other system or workflow by consuming px results with tools like jq.

Example with http_data:

px run px/http_data -o json| jq -r .

More examples here


To see more script examples and learn how to write your own, check out our docs for more guides.


Contributing

We are excited to have you contribute to Pixie! Before contributing, please read our contribution guide.

Under the Hood

Three fundamental innovations enable Pixie's magical developer experience:

Progressive Instrumentation: Pixie Edge Modules (“PEMs”) collect full body request traces (via eBPF), system metrics & K8s events without the need for code-changes and at less than 5% overhead. Custom metrics, traces & logs can be integrated into the Pixie Command Module.

In-Cluster Edge Compute: The Pixie Command Module is deployed in your K8s cluster to isolate data storage and computation within your environment for drastically better intelligence, performance & security.

Command Driven Interfaces: Programmatically access data via the Pixie CLI and Pixie UI which are designed ground-up to allow you to run analysis & debug scenarios faster than any other developer tool.

For more information on Pixie Platform's architecture, check out our docs.

Resources

About Us

Pixie was built by a San Francisco based startup, Pixie Labs, Inc. New Relic, Inc. acquired Pixie Labs in December 2020. New Relic, Inc. is in the process of contributing Pixie to the Cloud Native Compute Foundation.

License

Pixie is licensed under Apache License, Version 2.0.