当思源笔记(SiYuan)出现卡顿怎么办

当思源笔记(SiYuan)出现卡顿、响应慢或 CPU/内存占用过高时,火焰图(Flame Graph)是一种强大的可视化工具,可以帮助快速定位性能瓶颈。本指南介绍如何生成和分析火焰图,优化思源性能。


1. 火焰图简介

火焰图是一种直观的性能分析图表,用于展示程序在运行时的函数调用栈及其耗时情况:

  • X 轴 表示时间(采样次数),Y 轴 表示调用栈深度。
  • 每一层 代表一个函数调用,宽度 表示该函数占用的 CPU 时间。
  • 最宽的部分 通常是性能瓶颈所在。

示例火焰图(来自 perfpy-spy):

text

复制

下载

_______________ | main() | |______|_______| | funcA() | <-- 耗时较长 |______|_______| | funcB() | |______|_______|

2. 生成火焰图(以 Linux 为例)

方法 1:使用 perf(适用于 C/C++/Rust 程序)

  1. 安装 perf 和依赖
    bash

    复制

    下载

    sudo apt install linux-tools-common linux-tools-generic # Ubuntu/Debian sudo yum install perf # CentOS/RHEL
  2. 采集性能数据
    bash

    复制

    下载

    # 获取思源笔记的PID(假设进程名为 siyuan) pidof siyuan # 采样CPU调用栈(30秒) sudo perf record -F 99 -p <PID> -g -- sleep 30
  3. 生成火焰图
    bash

    复制

    下载

    # 转换数据为可读格式 sudo perf script > out.perf # 使用 FlameGraph 工具生成SVG git clone https://github.com/brendangregg/FlameGraph.git cd FlameGraph ./stackcollapse-perf.pl < ../out.perf | ./flamegraph.pl > ../flame.svg

方法 2:使用 py-spy(适用于 Python 程序)

如果思源部分模块是 Python 实现(如插件),可用 py-spy 采样:

bash

复制

下载

pip install py-spy py-spy record -p <PID> -o flame.svg --duration 30

3. 分析火焰图

  1. 打开生成的 flame.svg(浏览器可直接查看)。
  2. 查找最宽的“塔”
    • 较宽的块代表耗时较长的函数。
    • 检查是否涉及:
      • 频繁的 I/O 操作(如文件读写、网络请求)。
      • 高 CPU 计算(如正则匹配、复杂渲染)。
      • 锁竞争(如多线程阻塞)。
  3. 常见优化点
    • 数据库查询慢:优化 SQL 或减少频繁查询。
    • 渲染卡顿:检查前端代码(如 DOM 操作过多)。
    • 插件性能问题:禁用可疑插件测试。

4. 针对性优化示例

案例 1:思源启动慢

  • 火焰图显示:大量时间花在加载笔记文件上。
  • 优化方案
    • 启用延迟加载(分块加载笔记)。
    • 减少启动时自动打开的文档数量。

案例 2:输入卡顿

  • 火焰图显示:频繁触发语法高亮或实时渲染。
  • 优化方案
    • 调高渲染延迟(如从 200ms 改为 500ms)。
    • 关闭不必要的实时预览功能。

案例 3:内存泄漏

  • 结合 valgrindheaptrack 分析内存增长点。

5. 其他工具补充

工具 适用场景 命令示例
htop 实时监控 CPU/内存 htop
strace 跟踪系统调用 strace -p <PID> -T -e open,read
valgrind 内存泄漏检测 valgrind --leak-check=full ./siyuan

6. 提交问题报告

如果问题无法定位,可附上火焰图提交到思源 GitHub 仓库:

  • 信息包括
    • 思源版本、操作系统。
    • 火焰图文件(.svg)。
    • 复现步骤(如“打开大型文档时卡顿”)。

总结:火焰图能快速定位性能瓶颈,结合代码逻辑分析可针对性优化。建议定期采样关键操作(如启动、搜索、渲染),保持思源流畅运行。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26301 引用 • 109350 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...