Cześć, szukam rozwiązania od wczoraj i nie mogę znaleźć nic co by mi pomogło.
Mam narzędzie linuxowe, które (mocno upraszczając) wycina mi sekwencje określone w pliku illumnaSeq. Mam 33 pliki, które mam przemielić. Jeden plik się procesuje koło 5h. Mam do dyspozycji serwer na centosie, ma 128 rdzeni.
Znalazłem kilka rozwiązań, ale każde działa tak, że używa tylko jednego rdzenia. Ostatnie niby odpala 33 nohupy, ale dalej ciśnie całość po jednym rdzeniu.
Moje pytanie brzmi, czy ma ktoś jakiś pomysł jak wykorzystać potencjał maszynki? Bo w zasadzie każdy plik może się niezależnie przetwarzać, nie ma między nimi żadnych relacji.
Tak wygląda aktualna wersja skryptu:
#!/bin/bash
PLIKI=/home/daw/raw/*
count=0
for f in $PLIKI
do
base=${f##*/}
echo "Przetwarzanie $f pliku..."
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
Tłumaczę jeszcze: PLIKI to lista plików z folderu raw.
Właściwa linijka wykonująca nohup: pierwsza ścieżka, to ścieżka do narzędzia, -a ścieżka to ścieżka do pliku z paternami do cięcia, out to out, ma się zapisywać jako taka sama nazwa pliku jak przetwarzany + OUT na początku. Ostatni parametr to plik wejściowy który ma być przetworzony.
Tutaj readme narzędzia:
https://github.com/vsbuffalo/scythe
Czy wie ktoś może jak można to ogarnąć?