Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Медленная конвертация файлов #16

Open
himyss opened this issue Sep 11, 2018 · 13 comments
Open

Медленная конвертация файлов #16

himyss opened this issue Sep 11, 2018 · 13 comments

Comments

@himyss
Copy link

himyss commented Sep 11, 2018

Существует факт того, что с новой Егоровской библиотекой go4 конвертация из lmd в root осуществляется медленннее чем ранее используемой библиотекой.
На моём, не самом слабом ноуте, 1 файл конвертируется больше 10-15 минут. Даже в одному суточном ране у нас 100 файлов.

На данный момент (11 сентября 2018 года, 11 утра) ещё не до конца разобрались с xml файлами, поэтому даже если я сейчас буду ждать переконвертирования, то в скором будущем мне придётся повторить процедуру, что меня не радует.

Возможно ли как то оптимизировать конверташку?

@evovch
Copy link
Owner

evovch commented Sep 11, 2018

У меня примерно на таком же ноуте конвертация h5_14_0001.lmd занимает 6.5 мин
Analysis started.
Вт сен 11 11:28:37 MSK 2018
Вт сен 11 11:35:09 MSK 2018
Analysis finished.

У меня есть пару мыслей, что можно отключить, но это будет в ущерб надёжности работы. Сейчас в коде есть разнообразные проверки, который позволяют отловить ошибки во входном файле. Если их отключить, а входные файлы будут корректными, то пользователь не заметит разницы.
В общем, посмотрю, что можно сделать.

@SchetininVitaliy
Copy link
Contributor

Очень мало вероятно, что дело в проверках. Скорее всего это или IO или memory allocation. Но нужно профилировать, конечно.

@evovch
Copy link
Owner

evovch commented Sep 11, 2018

Full - unpacking + repacking + learn ~6.5min
unpacking + repacking ~6min
Unpacking only ~ 0.5min
profiling.txt

@evovch
Copy link
Owner

evovch commented Sep 11, 2018

Мои потуги с запуском go4analysis с применением gprof провалились. Глазом, без специальных инструментов, я не могу найти где затык производительности. Вопрос использования gprof с go4analysis буду обсуждать в четверг/пятницу, когду буду в ГСИ.

@evovch
Copy link
Owner

evovch commented Sep 23, 2018

К сведению.
Параллельный запуск 99 файлов h5_14 на exolina3 в 20 потоков выполнился за 1 час 7 минут.

Вс сен 23 15:56:00 MSK 2018 Analysis started.
Waiting
Вс сен 23 17:02:57 MSK 2018 Analysis finished.

@evovch
Copy link
Owner

evovch commented Sep 23, 2018

Параллельный анализ можно выполнять с помощью скрипта run_parallel.sh.
Скрипту нужно указать папку с входными файлами, причём у скрипта должна быть возможность писать в эту папку. Там не должно содержаться ничего кроме входных lmd файлов. На exolina3 входные файлы доступны с сетевого хранилища по nfs и доступ открыт только на чтение. Чтобы преодолеть эту сложность следует создать папку в своём пространстве (где-нибудь в домашней директории, например) и пробросить soft link'и на файлы данных. Соответственно скрипту нужно подать именно эту папку со ссылками.
Например:
[evovch@exolina3 ~]$ mkdir input
[evovch@exolina3 ~]$ cd input/
[evovch@exolina3 input]$ ln -s /media/data_nas/exp201804/data/h5_14_00*.lmd .

@evovch evovch closed this as completed Sep 23, 2018
@evovch evovch reopened this Sep 23, 2018
@evovch
Copy link
Owner

evovch commented Sep 23, 2018

Чтобы понизить время конвертации следует выключить все ненужные этапы. К сожалению, на данный момент нет красивого способа это сделать и пользователю придётся менять код и перекомпилировать.
Если нужно просто перевести большое количество lmd в root, не выполняя лишних действии, то можно выключить генерирование гистограмм в этапах raw monitoring, advanced monitoring, а также проверки, реализованные в этапе learn.

See commit 807a452

@evovch
Copy link
Owner

evovch commented Sep 23, 2018

Выключил все лишние эпаты, оставил только распаковку и перепаковку. Те же 99 файлов в 20 потоках на exolina3 : 54,5 мин.

Вс сен 23 17:33:03 MSK 2018 Analysis started.
Waiting for all threads to finish
Вс сен 23 18:27:20 MSK 2018 Analysis finished.

@himyss
Copy link
Author

himyss commented Sep 24, 2018

К сожалению у меня не получилось конвертировать данные на exolina3.
Сделал всё по твоему алгоритму. Создал ссылки на lmd файлы.
Вот вывод скрипта run_parralel:
outrun_parallel.txt

@himyss
Copy link
Author

himyss commented Sep 24, 2018

Пытался конвертировать на 12 потоках в root файлах вместо исходных 73 млн событий обнаружил только 120 тысяч.

@himyss
Copy link
Author

himyss commented Sep 28, 2018

Использую Go4 GUI. Сравниваю скорость считывания lmd с помощью старой и новой библиотеки.
В новой версии отключили следующие шаги:
// STEP2.2 - provider - learn
// STEP2.2 - processor - learn
// STEP2.3 - provider - raw monitoring
// STEP2.3 - processor - raw monitoring

После отключения обнаружили, что считывание происходило в 1.5 раза быстрее чем раньше, но тем не менее. Один lmd файл с 700 тыс событиями прочитался за 225 секунд, со старой же библиотекой это произошло за 12 секунд.

@evovch
Copy link
Owner

evovch commented Sep 28, 2018

Попробуй выключить запись данных в выходной Root файл. Для этого нужно сделать kFALSE вот тут:
https://github.com/evovch/ACCULINNA_go4_user_library/blob/master/useranalysis/UserAnalysis.cxx#L132

@vratislav3
Copy link

Выключил с помощью галочки в GUI. Время сократилось до 174 секунд. Но все равно все заканчивается печальным крэшом.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants