Data Production BARS tag v0.1 on Desktops

Processed data are producing now for seasons 2016, 2017 by BARS tag v0.1 (raw, eventindex, impulse, joint, trigger steps). Three desktops are busy in processing: baikalsnr.jinr.ru (6 cores), angara (159.93.76.242: 3 of 4 cores), baikalcom.jinr.ru (6 cores).

Processed data location: Season 2016: baikal-fs.jinr.ru:/data3/baikal/processed_data/exp16_r01_i01_j01_t01/cluster0 Season 2017, Cluster 1: * Runs 1 - 240 at baikal-fs.jinr.ru:/data2/baikal/processed_data_2016/exp17_r01_i01_j01_t01/cluster0 * Runs 241 - 509 at baikalvm (local JINR address 10.93.221.196):/mnt/cephfs/exp17_r01_i01_j01_t01/cluster0 * Season 2017, Cluster 2: baikal-fs.jinr.ru:/data2/baikal/processed_data_2016/exp17_r01_i01_j01_t01/cluster1

Data production status (11.12.2017): Season 2016: runs 1-133 have been processed by raw, eventindex, joint steps and are being processed by trigger step (baikalsnr). Season 2017, Cluster 1: runs 1-3 have been processed by all steps. Runs 4-21 are being processed now (angara) * Season 2017, Cluster 2: (baikalcom)

Data production status: For Cluster 1 2016: http://baikalsnr.jinr.ru/viewdb/runprocessstatusCluster12016.php For Cluster 1 2017: http://baikalsnr.jinr.ru/viewdb/runprocessstatusCluster1.php * For Cluster 2 2017: http://baikalsnr.jinr.ru/viewdb/runprocessstatusCluster2.php

Benchmarks

Test sample was 5 first files of run 20 cluster 2 2017.

Laptop

  • Laptop Core i7 4700HQ (3.4GHz), 12 Gb RAM, SSD, LAN speed to baikal-fs was 2.85 Mb/s, BARS commit 728572bc84c7b364c65dc1a1353ca74f7fd8f352

Two approaches were tested where raw and processed data are located: on baikal-fs:/data3 directory, that was mounted by sshfs, locally on SSD.

ROOT macros Time remote, sec Time local, sec remote/local Time local / Total , %
readbzip_set.C 812 656 1.24 9.8
treeindex_set.C 78 103 0.75 1.5
writesorted.C 1059 273 3.88 4.1
extractedimpulse_set.C 1209 660 1.83 9.8
getjointtable.C 506 65 7.78 1.0
eventbuilder.C 864 108 8.00 1.6
localtrigger.C 5091 4760 1.07 71.0
globaltrigger.C 183 62 2.95 0.9
histtrigger.C 87 20 4.35 0.3
Total 9889 6707 1.47

Run 20 cluster 2 2017 (23 hours, rate 43 Hz) has 44 files. Therefore it was processed in 6707 * 44/5 = 59021 sec = 16.4 hours if data are local.

Baikal Virtual Machine

Check different VM hardware:

VM # cores Frequency, GHz HT
1 14 2.2 NO
2 14 2.0 NO
3 14 2.2 YES

Input data: - 15 runs (from 19 to 32), - first 5 files of each run

ROOT macros VM1, sec VM2, sec (VM1/VM2) VM3, sec (VM1/VM3, (VM2/VM3))
readbzip_set.C 1380 1007 (1.37) 1054 (1.31, 0.96)
treeindex_set.C 133 159 (0.83) 133 (1.00, 1.20)
writesorted.C 547 532 (1.03) 503 (1.09, 1.06)
extractedimpulse_set.C 919 906 (1.01) 879 (1.05, 1.03)
getjointtable.C 127 102 (1.25) 92 (1.38, 1.11)
eventbuilder.C 273 243 (1.12) 223 (1.22, 1.09)
localtrigger.C 5768 5696 (1.01) 5631 (1.02, 1.01)
globaltrigger.C 130 121 (1.07) 111 (1.17, 1.09)
histtrigger.C 42 37 (1.14) 34 (1.24, 1.09)
Total 9319 8803 (1.06) 8660 (1.08, 1.02)

Old Approach for Data Production

Now bash scripts + MySQL database manages data production.
Картинка обработки полная Пример таблицы

Advanced Approach for Data Production

General requirements: В общем случае, на входе имеем список ранов для обработки. Закачиваем входные данные на локальный диск, храним обработанные данные на локальном диске, и, как только вся совокупность обработанных данных получена, переносим ее на удаленный файл-сервер. Локальный диск небольшого размера (150 Гб), поэтому требуется следить за тем, чтобы он не переполнился. * Выбрать последовательность ранов по приоритету (последний ран, калибровочные раны). * Стараться обработать наиболее приоритетные раны как можно раньше.

Старый подход:
Система Bash скриптов работает очень примитивно. Она обрабатывает всю совокупность ранов без приоритетов, выполняет первый шаг обработки для всех ранов и только после выполнения этого шага переходит к следующему. Поэтому, хотя бы один полностью обработанный ран появится в самом конце обработки. Это значит, что не удастся хранить данные локально.

Ввиду того, что расширять функционал bash скриптов непросто, строим новую систему на python скриптах.

Новый подход: Для того чтобы обработать ран как можно быстрее, требуется распараллелить его обработку.

Граф обработки