Profiles and recommendations
Every profile in the Workspace, what they say to fix, and AI summaries.
Profiles and recommendations
Observe › Profiles gathers every profile in the Workspace, of every Service and server, and starts with what they say to fix.
Recommendations
When a profile finishes, SlideOps reads it for kinds of work that commonly cost more than they should. Each finding has a share, a severity and what to do about it, written for the language the hot code is in. The same findings appear in three places:
- What to look at, near the top of each profile.
- The top of a Service's Performance tab, from its newest profile.
- Recommendations on the Profiles page: the findings of each Service's newest profile of each type, ranked across the Workspace.
Each is marked Fix first or Worth a look. On a profile, show … in the graph finds the function it is about.
What is looked for
| Finding | Fires when | What it suggests |
|---|---|---|
| Serializing data takes a large share | JSON, YAML, pickle and similar take 15% or more | Serialize less and cache responses; a faster encoder for the language, such as orjson for Python |
| Regular expressions take a large share | 10% or more | Compile patterns once, anchor them, or use plain string operations |
| Garbage collection takes a large share | 10% or more | Capture Where memory is allocated, then reuse buffers and objects there |
| Logging takes a large share | 10% or more | Log less on the hot path, raise the level, or log asynchronously |
| Compression takes a large share | 10% or more | A lower level, compress once and cache, or let the proxy compress |
| Hashing or encryption takes a large share | 15% or more | Check a password hash is not verified on every request; keep TLS connections alive |
| Database client code takes a large share | 20% or more | Fewer, larger queries rather than one per row; select only the columns needed |
| Rendering templates takes a large share | 15% or more | Cache rendered pages or fragments |
| Most of the CPU time is in the kernel | 40% or more of a CPU profile | Batch I/O, reuse connections, buffer writes |
| Most of the time is spent waiting | 60% or more of a wall-clock profile | The CPU is not the problem; see where it waits |
| Much of the profile has no function names | 20% or more in stripped binaries you ship | Upload debug symbols |
| Start with a function | One of your functions is answerable for 40% or more | Making it do less is the biggest single win |
| A function holds most of the memory | 50% or more of a memory profile | Compare two captures an hour apart to see whether it grows |
A box is counted once, at the outermost function that matches, so json.dumps calling the JSON encoder is not counted twice. A finding becomes Fix first at a higher share, typically twice its threshold.
These are worked out by SlideOps itself from the profile, with no AI involved.
AI summaries
When your SlideOps deployment has an AI model configured, each profile offers Explain this profile. It writes a short explanation in plain English and up to three actions, most valuable first.
- Nothing is sent until you press the button, and the page names the model first, for example "claude-sonnet-5 at api.anthropic.com".
- What is sent is the profile's figures: its answer, its hot spots, its top functions with their files and shares, its languages and its findings. Never your code, and never data your Service handled.
- The summary is kept on the profile, and Write it again asks for a fresh one.
- Every request is recorded in the audit trail.
When no model is configured, the profile says "AI summaries are off on this deployment" and everything else works as before.
Turning AI summaries on
Whoever runs the SlideOps deployment sets these on its API:
| Variable | Meaning |
|---|---|
SLIDEOPS_AI_PROVIDER | anthropic, or openai for any OpenAI-compatible server, including Ollama and vLLM |
SLIDEOPS_AI_API_KEY | The provider's key. Not needed for a local server without one. |
SLIDEOPS_AI_MODEL | The model. Defaults to claude-sonnet-5 for Anthropic; required for openai. |
SLIDEOPS_AI_BASE_URL | Optional. The provider's address, such as http://localhost:11434/v1 for Ollama. |
Every profile
Below the recommendations, every profile in the Workspace, newest first. Each row shows its question, the Service or server it belongs to, how it was captured (Spike and Continuous are marked), its one-sentence answer, and its length and age.
Filter by:
- Service or server
- Profile type
- How it was captured: by hand, continuously, or on a CPU spike
Tick any two of the same type and press Compare these two, across Services too. See Comparing profiles.