У меня есть инструмент linux, который (значительно упрощает) обрезает мне последовательности, указанные в файле illumnaSeq. У меня есть 32 файла для измельчения. Один файл обрабатывается примерно за 5 часов. У меня есть сервер на Centos, он имеет 128 ядер.
Я нашел несколько решений, но каждое из них работает таким образом, что использует только одно ядро. Последний, похоже, запускает 32 nohups, но он все равно будет оказывать давление на все это одним ядром.
Мой вопрос: кто-нибудь знает, как использовать потенциал сервера? Поскольку в основном каждый файл может обрабатываться независимо, между ними нет никаких отношений.
Это текущая версия скрипта, и я не знаю, почему он использует только одно ядро. Я написал это с помощью совета здесь по стеку и нашел в Inte rnet:
#!/bin/bash
FILES=/home/daw/raw/*
count=0
for f in $FILES
to
base=${f##*/}
echo "process $f file..."
nohup /home/daw/scythe/scythe -a /home/daw/scythe/illumina_adapters.fa -o "OUT$base" $f &
(( count ++ ))
if (( count = 31 )); then
wait
count=0
fi
done
Я объясняю: FILES - это список файлов из необработанной папки.
Строка «core» для выполнения nohup: первый путь - это путь к инструменту, -a путь - это путь к файлу с патерной обрезкой, из которого сохраняется то же имя файла, что и обработанный + OUT в начале. Последний параметр - это входной файл, который нужно обработать.
Вот инструменты readme: https://github.com/vsbuffalo/scythe
Кто-нибудь знает, как с этим справиться?
PS Я также пробовал передвигать nohup перед подсчетом, но он все еще использует одно ядро. У меня нет ограничений на сервере.