Dan*_*ich 12 performance filesystems build-server continuous-integration
我正在组装一个 Linux 机器,作为持续集成构建服务器;我们将主要构建 Java 的东西,但我认为这个问题适用于任何编译语言。
我应该使用什么文件系统和配置设置?(例如,我知道我不需要时间!)构建服务器将花费大量时间读取和写入小文件,并扫描目录以查看哪些文件已被修改。
更新:在这种情况下,数据完整性的优先级较低;它只是一台构建机器......最终的工件将被压缩并存档在其他地方。如果构建机器上的文件系统损坏并丢失所有数据,我们可以擦除并重新映像;构建将像以前一样继续运行。
最快的文件系统?tmpfs 安装在可用 RAM 之外,noatime设置为。
只有当您有一个程序来检查构建源代码树所需的所有内容(因为 tmpfs 文件系统的内容将在您重新启动时消失),并且源代码和对象适合您可用 RAM 的合理角落时,这才是可行的(有足够的剩余时间来运行编译器和链接器而无需交换)。也就是说,您无法通过 RAM 来提高速度。
使用 ext4fs 作为基本文件系统,并提供一些加速选项,例如
noatime,data=writeback,nobh,barrier=0,commit=300
然后联合挂载一个 tmpfs ramdisk,以便在构建期间写入的文件获得 ramdisk 的好处。更改构建过程以在构建结束时将生成的二进制文件从 tmpfs 中移出,或者在卸载之前将 tmpfs 合并回 ext4fs。
小智 5
对于 Michael Dillon 的回答,我可以补充一点,您可以使用几个选项创建 ext4 文件系统:
mkfs.ext4 -O dir_index,extent -i 8096 /dev/<disk>
dir_index
Use hashed b-trees to speed up lookups in large directories.
extent
Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead. This is a much more efficient encoding which speeds up filesystem access, especially for large files.
Run Code Online (Sandbox Code Playgroud)
-i 8096为您提供每个大小更多的 inode,这很有用,因为构建环境会创建大量文件。
| 归档时间: |
|
| 查看次数: |
5689 次 |
| 最近记录: |