是否可以通过禁用 fsync() 来加速 debootstrap?
Is it possible to speed up debootstrap by disabling fsync()?
我想我可以使用 LD_PRELOAD=/usr/lib64/nosync/nosync.so
加快创建 Fedora chroot (dnf --installroot=...
) 的速度。但这似乎对 debootstrap
没有帮助。我认为它仍然使用 fsync()
,只是查看性能/磁盘 activity(特别是 "Unpacking" 行)。还有别的办法吗?
LD_PRELOAD 对 debootstrap 不起作用的原因可能是由于使用了 chroot
。
据官方说法,目前似乎不支持此功能:#700633 - Debootstrap is very slow. Please use eatmydata to fix this。请注意,只有当您被迫在老式旋转磁盘上工作时,时间差异才会显着。可能还有其他可能的解决方法。 LXC 缓存最小的 debian 安装。完成最小安装后,您可以使用 Debian eatmydata
软件包绕过 fsync 以进行后续软件包安装。
但是,如果您确实需要它, 可以将 LD_PRELOAD 库放入 chroot。我很惊讶地看到 Fedora nosync.so
在 Debian chroot 中工作(即使用外国的、较旧的 libc)——我不认为这是一个可靠的组合。
debootstrap 会像您预期的那样挂载 /proc
,这使得逃脱 chroot 变得容易。
使用 Fedora nosync
sudo sh -c '
exec 3< /usr/lib64/nosync/nosync.so
LD_PRELOAD=/proc/$$/fd/3 time debootstrap --arch=amd64 --variant=minbase jessie jessie-tree http://ftp.debian.org/debian
'
使用 Debian eatmydata
sudo sh -c '
exec 3< /usr/lib/x86_64-linux-gnu/libeatmydata.so
LD_PRELOAD=/proc/$$/fd/3 time debootstrap --arch=amd64 --variant=minbase jessie jessie-tree http://ftp.debian.org/debian
'
结果
它在 SATA SSD 上节省了不到 20 秒,否则需要 100 秒)。这种情况下的主要限制因素似乎是 CPU(2010 年的移动 i5)。
在带硬盘驱动器的笔记本电脑(以及 2015 年的 i5 CPU)上,它从 135 秒的起点节省了 80 秒。同样的技术是 needed/applicable 用于 mkosi
。构建 systemd 测试图像,似乎节省了 8 分钟,共 14 分钟。
我想我可以使用 LD_PRELOAD=/usr/lib64/nosync/nosync.so
加快创建 Fedora chroot (dnf --installroot=...
) 的速度。但这似乎对 debootstrap
没有帮助。我认为它仍然使用 fsync()
,只是查看性能/磁盘 activity(特别是 "Unpacking" 行)。还有别的办法吗?
LD_PRELOAD 对 debootstrap 不起作用的原因可能是由于使用了 chroot
。
据官方说法,目前似乎不支持此功能:#700633 - Debootstrap is very slow. Please use eatmydata to fix this。请注意,只有当您被迫在老式旋转磁盘上工作时,时间差异才会显着。可能还有其他可能的解决方法。 LXC 缓存最小的 debian 安装。完成最小安装后,您可以使用 Debian eatmydata
软件包绕过 fsync 以进行后续软件包安装。
但是,如果您确实需要它, 可以将 LD_PRELOAD 库放入 chroot。我很惊讶地看到 Fedora nosync.so
在 Debian chroot 中工作(即使用外国的、较旧的 libc)——我不认为这是一个可靠的组合。
debootstrap 会像您预期的那样挂载 /proc
,这使得逃脱 chroot 变得容易。
使用 Fedora nosync
sudo sh -c '
exec 3< /usr/lib64/nosync/nosync.so
LD_PRELOAD=/proc/$$/fd/3 time debootstrap --arch=amd64 --variant=minbase jessie jessie-tree http://ftp.debian.org/debian
'
使用 Debian eatmydata
sudo sh -c '
exec 3< /usr/lib/x86_64-linux-gnu/libeatmydata.so
LD_PRELOAD=/proc/$$/fd/3 time debootstrap --arch=amd64 --variant=minbase jessie jessie-tree http://ftp.debian.org/debian
'
结果
它在 SATA SSD 上节省了不到 20 秒,否则需要 100 秒)。这种情况下的主要限制因素似乎是 CPU(2010 年的移动 i5)。
在带硬盘驱动器的笔记本电脑(以及 2015 年的 i5 CPU)上,它从 135 秒的起点节省了 80 秒。同样的技术是 needed/applicable 用于 mkosi
。构建 systemd 测试图像,似乎节省了 8 分钟,共 14 分钟。