Używam cat
do łączenia różnych plików w jeden duży plik. Liczba różnych plików jest różna, od dwóch do dziesięciu, ale całkowity rozmiar wszystkich plików jest zawsze taki sam (kilka GB).
Mój problem: Ilekroć dochodzę do sprawy, w której mam w sumie sześć plików, czas potrzebny na połączenie ich szczytów (tj. Znacznie więcej niż z pięcioma lub siedmioma) i nie mam pojęcia, dlaczego.
Czy ktoś ma pomysł?
Pliki (wszystkie tego samego rozmiaru)
output
outputTEMP1
outputTEMP2
outputTEMP3
outputTEMP4
outputTEMP5
Komenda
cat outputTEMP* >> output && rm -f outputTEMP*
Obecnie maszyna musi wykonać pewne obliczenia, ale zaktualizuję ją później, gdy będą dostępne nowe pomiary.
linux
performance
brandstaetter
źródło
źródło
Odpowiedzi:
Jednym ze sposobów debugowania tego problemu jest użycie strace.
Opcja -tt rejestruje znacznik czasu wywołania systemowego do rozdzielczości milisekund. -e trace = otwórz, zamknij dziennik tylko otwórz, zamknij API. Spróbuj je usunąć, a zobaczysz bardzo głośny plik dziennika.
źródło
Więc komentarz Davidesa jest na miejscu. Potrzebujemy tutaj dwóch rzeczy, aby dokonać dokładnej oceny:
Zakładając, że masz miejsce na dysku, opiszę scenariusz testowy, który pozwoli dokładniej określić, czy jest to prawdziwy problem. Jeśli tak, dowody potwierdzające to podejście pomogą programiście wiedzieć, że jest ono prawdziwe i będzie w stanie je odtworzyć.
Aby pomóc w izolacji problemu, nie róbmy tutaj wcale części rm. pozwól plikom TEMP później usiąść. Możesz następnie powtórzyć testy wykonując część „rm”, jeśli chcesz.
Oto scenariusz testowy:
użyj komendy time w następujący sposób:
czas (wyjście kota TEMP * >> wyjście)
Przechwytywanie liczb rzeczywistych, użytkowników i sys zgłoszonych dla każdego uruchomionego testu.
Zgadzam się z Reynoldsem; jeśli to prawda, zdecydowanie powinieneś wysłać szczegóły e-maila na [email protected].
źródło