Я использую snakemake для отправки заданий из файловой системы AFS в очередь HTCondor. Подача начинается нормально. Задания отправлены и успешно завершены. Но после определенного момента отправка вылетает со следующей ошибкой:
OSError: [Errno 27] File too large: '/afs/cern.ch/work/a/avenkate/private/MyKstTauTau/.snakemake/metadata/cm9vdDovL2Vvc2xoY2IuY2Vybi5jaC8vZW9zL2xoY2IvdXNlci9hL2F2ZW5rYXRlL0tzdFRhdVRhdS9Cc0JrZ01DL1ByZXNlbC8yMDE2X01VLzIwMjBfMDQvMzY1OTMyLzM2NTkzMjE4Ny9udHVwbGVfVE0ucm9vdA=='
Когда я смотрю на эту ошибку, я понимаю из https://sites.google.com/a/stanford.edu/rcpedia/how-do-i/why-do-i-keep-getting-errno-27-file-too-large, что это связано с AFS, а не snakemake. Кажется, это ограничение на количество файлов в каталоге в AFS (само сообщение об ошибке вводит в заблуждение. Размер файла метаданных указан в байтах. Но имена файлов длинные).
Поэтому я хотел бы знать, есть ли способ обойти эту проблему с накоплением файлов метаданных. У меня есть 10268 файлов в моем каталоге метаданных, когда происходит сбой, и все они из одного запуска snakemake.
Возможно ли, чтобы snakemake не хранил файлы метаданных локально, а скорее во временном каталоге любого узла, на котором выполняется задание? Я вижу в параметрах командной строки, что мы можем указать --shadow-prefix
, чтобы указать snakemake, где хранить теневой каталог. Есть ли аналогичная функциональность для метаданных?
Буду признателен за любой вклад по этому поводу. Моя команда отправки
snakemake --cluster 'condor_qsub -V -l procs={threads}' --forceall --latency-wait 30 --rerun-incomplete --max-jobs-per-second 100 --printshellcmds --restart-times 0 --local-cores 8 --keep-going -j 100 -s Snakefile_Data --shadow-prefix $TMPDIR/MyKstTauTau.snakemake```