<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>PERFORMANCE TESTING FRAMEWORK FOR THE ATLAS EVENTINDEX</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>E. Cherepanova</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>F. Prokoshin</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Elizaveta Cherepanova</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fedor Prokoshin</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Joint Institute for Nuclear Research</institution>
          ,
          <addr-line>Joliot-Curie 6, RU-141980 Dubna</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <fpage>5</fpage>
      <lpage>9</lpage>
      <abstract>
        <p>The ATLAS EventIndex is going to be upgraded in advance of LHC Run 3. A framework for testing the performance of both the existing system and the new system has been developed. It generates various queries (event lookup, trigger searches, etc.) on sets of the EventIndex data and measures the response times. Studies of the response time dependence on the amount of requested data, and data sample type and size, can be performed. Performance tests run regularly on the existing EventIndex and will run on the new system when ready. The results of the regular tests are displayed on the monitoring dashboards, and they can raise alarms in case (part of) the system misbehaves or becomes unresponsive.</p>
      </abstract>
      <kwd-group>
        <kwd>Scientific computing</kwd>
        <kwd>BigData</kwd>
        <kwd>Hadoop</kwd>
        <kwd>EventIndex</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        The ATLAS EventIndex [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is the tool that collects, checks and stores information about the
main properties of all real or simulated events that were collected, processed or generated by the
ATLAS experiment [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and points to the files that contain them. The current storage implementation
is based on having full data on the Hadoop [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] system and reduced information in Oracle [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] tables.
The Hadoop system runs a variety of tasks, such us importing and cataloguing data, running
consistency checks, establishing links between related datasets and responding to users' queries.
Interactions with users are high-priority tasks. The system should be available and accessible under
various conditions and give a response in the appropriate time, depending on the request. The daily
access statistics are represented in Figure 1. To track the current system state and evaluate its
performance, a variety of tests were developed.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Data for tests</title>
      <sec id="sec-2-1">
        <title>The tests are carried out using two types of input data:</title>
        <p>

a key, defined as a runNumber-eventNumber pair, e.g., “278880-251772208”.
a full dataset name, e.g.,
“data16_13TeV.00299584.physics_Main.deriv.DAOD_HIGG1D1.r9264_p3083_p4096”
The list of about 50 000 keys prepared for a physics analysis was used for the tests. This
includes real data recorded in 2015-2018. For the tests several samples were made with keys from all
years and for several selected datasets with a total size of 1 million events.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Types of queries</title>
      <p>The EventIndex allows searching data using different types of input information and different
commands for the search. Two of them are used:



</p>
      <p>EventLookup (el) for fast search of the physical datasets corresponding to an event (specified
as a pair of run number and event number or a key).</p>
      <p>EventIndex (ei) to search all datasets using either direct searches or complex Map/Reduce
jobs. This can take both a key and a dataset name as input data.</p>
      <sec id="sec-3-1">
        <title>All performed queries can be split into two groups:</title>
        <p>Event picking (performed using “el” and “ei” commands)
- Fast search of events using key pairs.
- Return GUIDs (Global Unique Identifier) of events, full dataset names and data types
(RAW, AOD, DAOD).</p>
        <p>Search for events in a specified dataset (performed using “ei” command)
- Return full information about an event (GUID, data type, production step, luminosity
block, time, trigger chains, etc.)
- Different filters can be applied.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Performance tests</title>
      <sec id="sec-4-1">
        <title>4.1 EventLookup</title>
        <p>The event lookup is performed through the “el” client command. The search is running every
hour in a cron scheduler. Eight lists of keys are retrieved randomly each time to avoid using cached
results. The summary information about data used and the performance tests results is listed in Table1.</p>
        <p>Data
data 2015
data 2015
data 2017
data 2018
data 2018
data 2018
data 2018
data 2018</p>
        <p>Source of keys
1 million events dataset
several datasets
several datasets
1 million events dataset
1 million events dataset
1 million events dataset
1 million events dataset
1 million events dataset</p>
        <p>
          The results of the tests are displayed in the Grafana Monitor [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. Figure 2 shows the response
times of the Hadoop server to event lookup queries selecting 1000 events out of a dataset with one
million records or a mixture of several datasets as a function of time. The occasional glitches are due
to other activities on the servers at the time of the queries. The response times are dominated by the
query time for low numbers of events, and by the transmission time of the output for large numbers of
events.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2 EventIndex queries. No selection</title>
        <p>The event picking and full dataset information retrieval are running once a day in a cron.
These queries are performed through the “ei” client command. The key search is performed using one
list with 10 keys for each year. The full dataset information retrieval is using datasets with sizes 10k
(50k), 100k, 1M, 10M events for 2015-2018 data.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3 EventIndex queries. Trigger selection</title>
        <p>The search of full dataset information for events that passed trigger selection is running in a
cron. These queries are performed through the “ei” client command. The summary information about
data used is listed in Table 2.
“Data 2018 fast” is the data used to check the system availability. A dataset of 2018 with 500k
events with &lt;1% fraction of events passing a specified trigger was chosen because of the short
execution time – about 2 minutes (see Figure 4).</p>
        <p>“Data 2018 long” is the data used to check how the system can handle heavy task. A dataset of
2018 with 50M of events with &lt;40% fraction of events passed a specified trigger was chosen because
of long execution time – about 4 hours (see Figure 4).</p>
        <p>The response times of the Hadoop server to queries searching events that passed specified
triggers from datasets containing 500k and 50M events are shown in Figure 4 as a function of time.</p>
      </sec>
      <sec id="sec-4-4">
        <title>4.4 Performance time dependence on the way of running queries</title>
        <p>
          There are two ways of running queries: locally on the Hadoop cluster or remotely through the
Internet via a Tomcat server [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. The test described above are running locally, however a regular user
usually runs queries remotely.
        </p>
        <p>For comparison some of the tests were launched remotely. The response times for event
lookup queries with search for data 2015 and for EventIndex queries with trigger selection for data
2018 are shown in Figure 5.</p>
        <p>Remote queries run faster for almost all event lookup queries. The larger number of keys for
search, the closer are performance times of queries launched locally and remotely. The EventIndex
queries with trigger selection show similar performance time.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusions</title>
      <p>Performance tests for the existing ATLAS EventIndex system has been developed. Three
types of jobs are running in a cron:


</p>
      <sec id="sec-5-1">
        <title>Event lookup key search (once per hour)</title>
        <p>EventIndex key search and EventIndex full dataset information retrieval (once per day)
EventIndex dataset search with trigger selection</p>
        <p>The first and third are displayed using Grafana dashboards, where it is easy to track the current
state of the system. Most of the locally running tests are also run remotely. Performance times show
that for event picking tasks the local launch can be slower. The results of the tests are stored in
Hadoop and can be used for comparison with performance of the newly-developed system
implementation.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Barberis</surname>
            <given-names>D</given-names>
          </string-name>
          et al
          <year>2015</year>
          <article-title>The ATLAS EventIndex: architecture, design choices, deployment and first operation experience</article-title>
          ,
          <source>J. Phys.: Conf. Ser. 664 042003</source>
          , doi:10.1088/
          <fpage>1742</fpage>
          -6596/664/4/042003
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>ATLAS</given-names>
            <surname>Collaboration 2008 The ATLAS</surname>
          </string-name>
          <article-title>Experiment at the CERN Large Hadron Collider, JINST 3 S08003 doi</article-title>
          :10.1088/
          <fpage>1748</fpage>
          -0221/3/08/S08003
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>[3] Hadoop and associated tools: http://hadoop.apache.org</mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>[4] Oracle: https://www.oracle.com</mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>[5] Grafana: https://grafana.com</mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>[6] Tomcat: https://tomcat.apache.org</mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>