Skip to content

[libra] libra clone时,如果clone的仓库目录结构复杂层次较深,那么解析pack文件restore的过程会变得很慢 #1425

Description

@lifan-ake

当使用libra克隆mega仓库时,仓库元数据传输结束后,libra会长时间卡顿在restore阶段,需要2-3min时间才能restore完成。

检查发现restore步骤有两处影响执行效率的地方:

  1. read_pack_obj做为一个递归执行的函数,每次递归都要从pack文件中读取对应offset的内容,磁盘IO过多,导致解析效率降低。
  2. read_pack_obj中使用了Pack中的函数,当前每次使用这些函数时,需要先new 一个Pack对象,而new这个Pack对象的时候会初始化一个线程池,生成很多线程。这就导致递归解析pack文件时创建了非常多的线程。然而这些函数本身并没有使用Pack中的任何成员,应该定义成关联函数而非成员函数,调用这些函数不需要new Pack对象,也就不会创建非常多线程。

Metadata

Metadata

Assignees

Labels

Fields

No fields configured for Feature.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions