Многие программы учитывают переменные окружения TMPDIR
(а иногда и TMP
).Может, Дженкинс использует API, которые их уважают?Попробуйте:
TMPDIR=/path/to/bigger/filesystem jenkins
при запуске Jenkins.(Или как бы вы его ни запустили - он запускается как демон и имеет сценарий оболочки для его запуска?)
Там может принести некоторую выгоду производительности при использовании файловой системы на основе ОЗУ- ext3, ext4 и подобные журнализированные файловые системы будут упорядочивать записи на диск, и даже быстрая последовательность fd=open(O_CREAT); unlink(fd);
, вероятно, потребует как обновлений журнала на диске, так и обновлений каталогов.(Домашнее задание: проверьте это.) Файловая система на основе ОЗУ не будет вести журналирование и может записывать или не записывать что-либо на диск (в зависимости от того, какой файл вы выбрали).
Существует два основных варианта: ramfs
- очень простое окно в механизм кэширования ядра.Отсутствует резервное копирование ваших файлов на диск и ограничения памяти.Вы можете очень быстро заполнить всю свою память одним из них и понести очень ужасные последствия.(Практически ни одна программа не справляется с работой вне диска, и OOM-killer не может освободить эту память.) См. Файл ядра 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
(по умолчанию разрешено до половины вашей оперативной памятидля использования в файловой системе. Измените defaults
, если вам нужно.)
Если вы хотите смонтировать tmpfs
где-то еще, вы можете;возможно, объедините это с переменной среды TMPDIR
, описанной выше, или узнайте о новых функциях разделяемого поддерева в Documentation/filesystems/sharedsubtree.txt
или упростите через pam_namespace
, чтобы сделать его видимым только для ваших Jenkins и дочерних процессов.