-
Notifications
You must be signed in to change notification settings - Fork 2k
[DOC] Update single node performance benchmarks #4695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Reviewer ChecklistPlease leverage this checklist to ensure your code review is thorough before approving Testing, Bugs, Errors, Logs, Documentation
System Compatibility
Quality
|
|
Update Single-Node Performance Benchmarks and Add Theme-Aware Images to Docs This PR updates the single-node Chroma performance benchmark documentation with new empirical data and significantly expands the discussion of system behavior, latency, and scaling. It introduces a reusable, theme-aware MarkdocImage React component to support light and dark mode documentation imagery, adjusts Markdoc configuration to integrate this component, and replaces static inline images with the new multi-theme approach and updated graphics. The benchmarks table and descriptive sections have been refactored for improved accuracy and clarity, and corresponding image assets have been added. Key Changes: Affected Areas: Potential Impact: Functionality: No effect on core library functionality, but documentation experience is improved, especially for users in different display modes. Benchmarks reflect more recent real-world hardware/software performance. Performance: No runtime system impact; documentation site performance may slightly increase due to additional conditional rendering logic in MarkdocImage but not significant. Security: No material impact on security. Scalability: No direct application impact; documentation now provides clearer guidance on scaling limits and system behaviors under load. Review Focus: Testing Needed• Manually inspect documentation pages in both light and dark themes to verify correct image rendering and overall presentation. Code Quality Assessmentdocs/docs.trychroma.com/components/markdoc/markdoc-image.tsx: Good: Well-structured, leverages React state and next-themes for dynamic theme detection, uses prop typing, sets sensible defaults. No obvious performance or code-style issues. docs/docs.trychroma.com/markdoc/content/production/administration/performance.md: Well-organized, factually dense, uses Markdoc tags for modularity. Some long sentences, but style matches technical documentation norms. docs/docs.trychroma.com/markdoc/config.ts: Clean integration of new tag, maintains strong typing, logical grouping of component registrations. Best PracticesDocumentation: React: Potential Issues• Theme detection is client-only; images may briefly flash with incorrect theme on SSR/hydration edge cases. This summary was automatically generated by @propel-code-bot |
274bf3e to
53726c3
Compare
53726c3 to
a4045e9
Compare
a4045e9 to
8280e1c
Compare
| ## Concurrency | ||
|
|
||
| Although aspects of HNSW’s algorithm are multithreaded internally, only one thread can read or write to a given index at a time. For the most part, single-node Chroma is fundamentally single threaded. If an operation is executed while another is still in progress, it blocks until the first one is complete. | ||
| The Rust rewrite fundamentally changed Chroma's concurrency model. The system now handles concurrent operations in parallel, so latency remains consistently low and flat across all batch sizes for writes, and scales linearly for queries. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could be odd if you don't have context
| | **t3.xlarge** | 16 | 3,600,000 | 30ms | 100ms | 13ms | 30ms | $121.888 | | ||
| | **t3.2xlarge** | 32 | 7,500,000 | 30ms | 100ms | 13ms | 30ms | $242.976 | | ||
| | **r7i.2xlarge** | 64 | 15,000,000 | 13ms | 50ms | 7ms | 13ms | $386.944 | | ||
| | **t3.small** | 2 | 250,000 | 231ms | 2335ms | 8ms | 29ms | $15.936 | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Were these in the same region?feels a bit high
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah these are in the same region. i think the reason p999 for t3.small is this high is bc this was measured it's near max collection size (these p999's are for collection size of 200k). got that number based on the last run of tests. I'll drop the ones way out of st dev, because theyre not representative, and have what we can consider outside factors (OOM)
|
Btw I think these will look odd in light mode, they are optimized for dark mode |
8280e1c to
be507c2
Compare
be507c2 to
c7e0863
Compare
c7e0863 to
17b7d0a
Compare
17b7d0a to
a0ec855
Compare
|
Discussed a few changes offline |
a0ec855 to
a8925ad
Compare
a8925ad to
2b207d7
Compare
2b207d7 to
25a6b63
Compare
25a6b63 to
ea456ee
Compare
## Description of changes Updated perf benchmarks for single node chroma on docs, also adds theme-image, which can be reused in the future to have different images for light vs dark theme ## Test plan _How are these changes tested?_ - [ ] Tests pass locally with `pytest` for python, `yarn test` for js, `cargo test` for rust ## Documentation Changes _Are all docstrings for user-facing APIs updated if required? Do we need to make documentation changes in the [docs section](https://github.com/chroma-core/chroma/tree/main/docs/docs.trychroma.com)?_





Description of changes
Updated perf benchmarks for single node chroma on docs, also adds theme-image, which can be reused in the future to have different images for light vs dark theme
Test plan
How are these changes tested?
pytestfor python,yarn testfor js,cargo testfor rustDocumentation Changes
Are all docstrings for user-facing APIs updated if required? Do we need to make documentation changes in the docs section?