Use case or problem
When using Obsidian for creative research, I often work with multiple open windows and large canvases filled with interconnected notes. This setup allows me to visualize and manage my thoughts efficiently.
However, Obsidian’s current architecture relies primarily on a single CPU core (or, at most, a single core with two threads).
Despite my efforts to resolve this, performance issues persist. I have invested significant time and money testing and upgrading my CPU. I am currently using the latest Zen5 processor, which boasts a single-core CPU-Z benchmark score of 900. Unfortunately, even with this high-performance hardware, Obsidian still struggles to support my workflow.
This issue has been identified as a characteristic of reading mode processing.
By observing Obsidian’s CPU usage using tools like Task Manager and HWiNFO, it is clear that only one CPU core is utilized for most tasks. This limits overall performance, especially when working with multiple open windows or displaying multiple notes within a canvas. The impact is most noticeable when dealing with large lists, complex canvases with many cards, or when scrolling through content.
This issue is particularly frustrating for users with modern multi-core CPUs, as the majority of their processing power remains unused. For power users who rely on large displays, multiple Obsidian windows, and intensive visualizations, the single-core bottleneck becomes a major hindrance to productivity.
Proposed solution
To address these issues, I propose that Obsidian adopt multi-core processing strategies. This could significantly improve performance for multi-window workflows, canvas rendering, and large note lists. Below are specific recommendations for how this could be achieved:
- Enable Multi-Core Support for Multi-Window Usage
- Allow each Obsidian window to run on a separate CPU core or assign different files to different CPUs.
- Instead of sharing a single thread, multiple open windows should operate as independent threads or processes, each assigned to its own core.
- This change would enable smoother multitasking and better responsiveness when multiple windows are open.
- Enable Multi-Core Rendering for Canvases
- When displaying multiple notes within a canvas, assign each canvas card (or group of notes) to a separate core for rendering.
- If the canvas contains multiple large cards, each card should be processed by its own thread, improving responsiveness for actions like panning, zooming, and card updates.
- This would significantly reduce the lag users experience when working with large canvases.
- Task-Based Multi-Core Processing
- Break down specific tasks, such as list rendering, file indexing, and canvas animations, into independent “jobs” that can be processed in parallel on different CPU cores.
- This approach would reduce stuttering and improve responsiveness, especially when using performance-heavy plugins like Better Search Views, which require the rendering of large amounts of markdown content.
- Similar task-based multi-threading is used in modern browsers and text editors, and it could be adapted to fit Obsidian’s architecture.
By enabling multi-core support, Obsidian could fully utilize the capabilities of modern CPUs, providing a smoother experience for users with large canvases, multiple windows, and extensive note collections. This would significantly reduce stuttering, speed up canvas operations, and enhance overall responsiveness.
Current workaround (optional)
- Use fewer Obsidian windows at the same time.
- Reduce the complexity of canvas content by using smaller, simpler notes.
- Avoid large lists and rely on smaller notes with headers instead.
- Manually split large notes into multiple smaller notes to reduce rendering load.
While these workarounds help to some extent, they compromise the user experience and disrupt natural workflows. For users working with large canvases or using multiple windows, these limitations are difficult to overcome.
Related Feature Requests (Optional)
The implementation of multi-core processing would mark a significant upgrade in Obsidian’s performance, allowing users to fully utilize the power of modern CPUs. This change would eliminate stuttering, enhance canvas performance, and enable a more fluid experience for users with large, interconnected note collections.