当Jenkins调用maven build时,/ tmp会填充100个surefire839014140451157473tmp,如何在构建期间显式重定向到另一个目录。对于三叶草构建,它填充了100s的grover53460334580.jar?有没有想过来这个?
任何人都知道一步一步创建ramdisk所以我可以将surefire的东西重定向到那个ramdisk?它会节省硬盘的写入时间吗?
由于
答案 0 :(得分:0)
许多程序都尊重TMPDIR
(有时是TMP
)环境变量。也许Jenkins使用尊重它们的API?尝试:
TMPDIR=/path/to/bigger/filesystem jenkins
启动Jenkins时。 (或者你启动它 - 它是作为一个守护进程运行并有一个shell脚本来启动它吗?)
使用基于RAM的文件系统可能有一些性能优势 - ext3,ext4和类似的日志文件系统将命令写入磁盘,甚至快速fd=open(O_CREAT); unlink(fd);
序列将可能需要磁盘日志更新和目录更新。 (作业:测试一下。)基于RAM的文件系统不会执行日志记录,可能会也可能不会写入任何内容(取决于你选择的那个)。
有两个主要选择:ramfs
是进入内核缓存机制的一个非常简单的窗口。根本没有基于磁盘的文件支持,也没有内存限制。你可以很快地填补你的所有记忆,并承受非常可怕的后果。 (几乎没有程序可以很好地处理磁盘外,并且OOM杀手无法释放任何内存。)请参阅Linux内核文件Documentation/filesystems/ramfs-rootfs-initramfs.txt
。
tmpfs
是ramfs
的略微修改 - 您可以指定它可以分配的空间的上限(-o size
)和页面缓存可以将数据交换到交换分区或交换文件 - 这是一个很好的奖励,因为您的内存在其他地方可能会明显更好地使用,例如将编译器,链接器,源文件和目标文件保留在核心中。请参阅Linux内核文件Documentation/filesystems/tmpfs.txt
。
将此行添加到/etc/fstab
将全局更改/tmp
:
tmpfs /tmp tmpfs defaults 0 0
(默认情况下,允许在文件系统上使用最多一半的RAM。如果需要,请更改defaults
。)
如果你想在其他地方安装tmpfs
,你可以;也许可以将其与上面的TMPDIR
环境变量结合起来,或者在Documentation/filesystems/sharedsubtree.txt
中了解新的共享子树功能,或者通过pam_namespace
轻松实现,以使其仅对您的Jenkins和子进程可见。