为什么lstat在APFS(OSX)上的性能不如Ext4(Linux)

问题描述 投票:2回答:1

虽然在大型存储库上对Git进行性能分析,但我发现与Linux相比,mac上的git状态明显慢(10倍)。 git status在存储库中的每个文件上运行lstat,这是缓慢的原因。

是否有特定原因导致与Linux相比,Mac上的此系统调用慢得多?

git stat apfs
1个回答
1
投票

首先检查您的Git版本,因为最近的Git版本已有改进(例如git add in 2.20git add甚至git stash in 2.22)。

甚至upcoming 2.27 with submodules

git status improved with Git 2.24设置适用于工作目录中包含许多文件的存储库。通过设置git statusfeature.manyFiles,诸如“ index.version=4”之类的命令将得到改进。


[core.untrackedCache=true]中对APFS中的lstats与Ext4的差异进行了分析:]

[显然,macOS 10.14 Mojave已经获得了相对于macOS 10.13的性能工作!尽管有这些改进,APFS仍在内核中花费大量CPU时间。与Linux / EXT4相比,即使对于单进程操作,内核CPU时间仍然相对较高。

虽然我无法确认APFS的源代码,但分析结果显示花在git status上的时间过多,再加上并行处理计数减少时执行时间减少这一事实,使我得出以下结论:APFS获得了只读操作(例如readdir())期间的全局内核锁定。

换句话说,当尝试执行并行只读I / O时,APFS的速度变慢。

© www.soinside.com 2019 - 2024. All rights reserved.