pigz

速度与压缩比如何兼得?压缩算法在构建部署中的优化

天大地大妈咪最大 提交于 2021-01-11 15:57:07
背景 通常而言,服务发布平台的构建部署的流程(镜像部署除外)会经过 构建 (同步代码 -> 编译 -> 打包 -> 上传)、 部署 (下载包 -> 解压到目标机器 -> 重启服务)等步骤。以美团内部的发布平台 Plus 为例,最近我们发现一些发布项在构建产物打包压缩的过程中耗时比较久。如下图所示的 pack 步骤,一共消耗了1分23秒。 而在平常为用户解答运维问题的时候我们也发现,很多用户会习惯将一些较大的机器学习或者 NLP 相关的数据放入到仓库中,这部分数据往往占据几百兆,甚至占据几个GB的磁盘空间,十分影响打包的速度。 Java 项目也是如此,由于 Java 服务框架繁多,依赖也多,通常这些服务打包后也要占据百兆级别的空间,耗时也会达到十多秒。下图是我们的 pack 步骤的中位数,基本上大部分的 Java 服务和 Node.js 服务都至少要消耗 13s 左右的时间来做压缩打包 。 pack 作为几乎所有需要部署的服务必需步骤,它目前的耗时基本上仅低于编译和构建镜像,因此,为了提高整体构建的效率,我们准备对 pack 打包压缩的步骤进行一轮优化工作。 方案对比 准备场景数据 发布项的包大小分析 为了尽可能地模拟构建部署中的应用场景,我们将 2020 年的部分 构建包数据 进行了整理分析,其中压缩后的包大小如下图所示,钟形曲线说明了整体的包体积呈正态分布

Arch Linux 系统迁移

梦想与她 提交于 2020-12-22 22:26:31
文章目录 备份 Arch Linux 系统 安装 `pigz` 打包 Arch Linux 给新盘分区或挂载 使用 `fdisk` 等磁盘工具分区 挂载新硬盘分区到 `/mnt/arch` 恢复 ArchLinux 系统 创建刚才排除的文件夹 获取 UUID 修改 `/etc/fstab` 挂载文件 更新 Grub 引导 更新 `mkinitcpio` 退出 `arch-chroot` 提权模式 卸载分区 迁移完成 备份 Arch Linux 系统 安装 pigz 使用 pigz 多线程压缩比使用 tar 单线程压缩速度明显提升多倍 sudo pacman -S pigz 打包 Arch Linux --exclude 排除的路径/文件,根据自己系统挂载情况选择需要排除的路径或文件。 注:当前是在 / 目录下执行 sudo tar --use-compress-program = pigz -cvpf arch-backup.tgz --exclude = /proc --exclude = /lost+found --exclude = /arch-backup.tgz --exclude = /mnt --exclude = /sys --exclude = /run/media --exclude = /media / 给新盘分区或挂载 使用 fdisk 等磁盘工具分区