<!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>Multi-Core Allocation Model for Database Systems</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Supervised by Eduardo Cunha de Almeida Federal University of Parana</institution>
          ,
          <country country="BR">Brazil</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <issue>15</issue>
      <abstract>
        <p>Non-Uniform Memory Access (NUMA) architecture provides a multi-task run in parallel with di erent access latency between the nodes. The emergence of multi-core hardware o ers high processing power for multi-threaded Database Management Systems (DBMS). However, database threads run across multiple NUMA cores without exploring the hardware to its full potential. The impact of data movement between NUMA nodes is a major challenge for multi-threaded DBMS. The goal of our thesis is to nd out the e cient distribution of CPU-cores among the NUMA nodes in order to mitigate the data movement. We propose an abstract core allocation mechanism for query processing based on performance metrics. In our preliminary results, our mechanism is able to improve data tra c ratio between nodes in up to 3.87x with increased memory throughput in up to 27%.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>0
250</p>
    </sec>
    <sec id="sec-2">
      <title>1. INTRODUCTION</title>
      <p>The burgeoning ingestion of data requires new hardware
to allow real-time data analysis. In our thesis we focus on
Non-Uniform Memory Access (NUMA) hardware to boost
throughput of multi-threaded Database Management
Systems (DBMS) in Online Analytical Processing (OLAP). The
NUMA architecture is formed by multi-core nodes with
processors (or CPUs) attached to a memory bank. The memory
access latency varies according to the distance between the
node and the memory being accessed.</p>
      <p>
        The varying memory access latency of NUMA impacts
the performance of multi-threaded query processing. We
observed the impact of NUMA in multi-threaded DBMS
executing the Volcano query parallelism model [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], like
Microsoft SQLServer, and the materialization model, like
MonetDB. For instance, in the Volcano model, the parallelism
is encapsulated in \exchange" operators in the query
execution: multiples threads execute the query plan and the
Operating System (OS) scheduler is in charge of
managing data and thread locality. In both models, however, the
conventional approach is letting the OS do the mapping of
      </p>
      <p>Threads
Core
5T 6T 7T 8T 9T 10T 11T 12T 13T 1T4 T15 T16 17T 1T8 T19 20T Number
15
14
13
12
11
10
9
8
7
6
5
4
OS/MonetDB 32
1
0
threads to as many nodes and cores as possible to keep load
balance, not considering the di erent access latencies in the
NUMA architecture. The result is the constant migration
of threads all over the nodes. Figure 1 shows the execution
of the TPC-H query 6 (Q6) in MonetDB: a multi-threaded
DBMS. Our NUMA architecture consists of 4-nodes with
a Quad-Core AMD Opteron 8387 each. The OS tries to
keep the load balancing between the cores causing many
migration of threads with more data movement between the
NUMA nodes. When running OLAP workloads, the current
load balancing approach can cause many problems: resource
contention, cache con icts, cache invalidation and ine cient
data movement.</p>
      <p>
        Many authors have investigated these problems by
trying to control the scheduling of threads and data movement
in NUMA nodes [
        <xref ref-type="bibr" rid="ref11 ref12 ref13 ref3 ref5 ref7 ref8">8, 3, 11, 5, 12, 7, 13</xref>
        ] from within the
DBMS kernel. Our thesis follows a di erent direction where
we manage the allocation of NUMA cores from an abstract
model-based mechanism, aiming to accommodate the
current workload and mitigate the data movement. Abstract
models allow supporting several underlying systems
without modi cations in the source-code. Besides, an abstract
model allows di erent resources to be monitored, for
example: memory throughput and CPU load. Our mechanism in
a nutshell: a dynamic mechanism computes the local
optimum number of cores with a rule-condition-action pipeline
integrated with performance monitoring. This pipeline
denes the performance-invariant through performance
thresholds. If this performance-invariant holds, the local optimum
number of cores is set. The main challenges to present our
mechanism are, as follows:
1. Provide an elastic multi-core allocation mechanism for
the NUMA architecture.
2. De ne an optimum number of cores based on the use
of computational resources to meet a workload.
3. Manage the allocation of cores for the execution of
mixed workloads.
      </p>
      <p>In this paper, we discuss our approach to tackle these
three challenges, the contribution already published and
current work in progress.</p>
    </sec>
    <sec id="sec-3">
      <title>RELATED WORK</title>
      <p>
        Over the last years, many di erent approaches were
presented to improve the performance of DBMS multi-core
parallelism in NUMA architecture. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] presents a study of the
NUMA e ect when assigning threads to NUMA nodes in
OLTP. The authors present an approach of \hardware
islands" to execute di erent OLTP deployments. They
implement a prototype within the Shore-MT storage
manager that achieved robust OLTP throughput. However, the
\hardware islands" do not scale-out and the optimum size
of the island is yet undetermined.
      </p>
      <p>
        [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] presents a NUMA-aware ring-based algorithm to
coordinate the movement of threads to catch up with data. The
algorithm uses two rings: an inner ring to represent the data
partitions and an outer ring to represent the threads. The
outer ring rotates clockwise for all threads to access speci c
data partitions. The goal is to improve data placement and
thread placement. In [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], NUMA cores are allocated one by
one to mitigate access to remote memory when the OS tries
to keep data locality of MonetDB. Other storage and worker
placement approaches are presented to mitigate the NUMA
e ect in SAP Hana [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] or to build the ERIS storage engine
from scratch [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        All of these contributions show important e orts into
making the DBMSs explore multi-core CPUs to their full
potential, but they di er from our goal as they allocate NUMA
cores statically to perform data and worker placement
strategies. Recently, [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] presented an adaptive NUMA-aware
data placement mechanism. The mechanism decides
between data placement and thread stealing when load
imbalance is detected. The number of working threads changes
based on the core utilization, which di ers from MonetDB [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]
and SQLServer [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] that statically de ne the number of threads
based on the number of available cores.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] is presented a database scheduler to control the
dispatching of query fragments, called \morsels". The \morsels"
are statically pinned in speci c cores to take advantage of
the data location and avoid data movement between the
nodes. However, this scheduler does not take into account
the optimum number of cores to tackle the current workload.
      </p>
      <p>In contrast to the related work, we propose a dynamic
multi-core allocation mechanism to mitigate the data
movement providing to the OS the e cient sub-set of NUMA
cores to perform database thread mapping.</p>
    </sec>
    <sec id="sec-4">
      <title>PROPOSED APPROACH</title>
      <p>Our proposal involves an elastic multi-core allocation
mechanism to de ne the optimum number of cores to treat the
time
(a) Sparse Mode
current workload. We de ne that the allocation of
CPUcores should be performed dynamically to satisfy the
demands of the workload and facilitate the OS thread
scheduling with the least possible negative impact on performance.
Our key idea is to consider data placement statistics from
the OS side to de ne on which node the cores will be
allocated.
3.1</p>
    </sec>
    <sec id="sec-5">
      <title>Elastic Multi-core Allocation Mechanism</title>
      <p>
        The full description of our multi-core allocation
mechanism is presented in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Our mechanism is based on
Predicate/Transition PetriNets (PrT). Petri Nets are powerful
abstract models to design concurrent and distributed systems.
Our mechanism leverages Petri Nets to model general
properties of DBMSs up against concurrent OLAP workloads.
Using the abstract model we have the exibility to check
any resource usage by the database threads. The
mechanism monitors the resource usage of the worker threads on
top of OS kernel facilities to decide for the allocation of CPU
cores (e.g., cgroups, mpstat, numactl, likwid).
3.2
      </p>
    </sec>
    <sec id="sec-6">
      <title>The Allocation of Cores</title>
      <p>The challenge of the mechanism is to prevent both
underutilization or overutilization of the system by nding out the
local optimum number of cores (LONC) to accommodate a
given workload. In this section, we de ne the LONC and
also the allocation modes explored by the mechanism.
3.2.1</p>
      <sec id="sec-6-1">
        <title>The multi-core allocation modes</title>
        <p>In the mechanism, we de ne resource usage thresholds
(e.g., CPU or data tra c in the memory controller) that
are used to decide when it is necessary to allocate or release
cores. An adaptive algorithm decides on which node to
allocate/release cores taking into account the accessed memory
addresses kept in a priority queue data structure.</p>
        <p>Figure 2 shows the allocation of closed (Dense) and far
apart cores (Sparse). The adaptive allocation is a
combination of both w.r.t. the e cient subset of cores. To nd
the a nity between threads and data, our approach checks
misses in the Translation Lookaside Bu er (TLB). When
a TLB miss occurs, the OS maps the thread accessing the
missed address to a node keeping this information in a data
structure. Over time, new threads requesting the same
address range are mapped to the same node where data is
allocated. Therefore, we refer to as \the e cient subset of
cores" the processing cores in the nodes with the requested
address range.
i
m
(
a
)sm50
pm100
tse150
T200</p>
        <p>0
250</p>
        <p>In our adaptive mode, each entry of the priority queue
keeps the PIDs of the active threads with their address
spaces and the number of pages per NUMA node. The cores
are allocated on nodes with more accessed pages and cores
with the least number of accessed pages are released. In the
implementation of the a nity between threads and data,
the data structure stores the node IDs used to pin threads
and allocate their address space.
3.2.2</p>
      </sec>
      <sec id="sec-6-2">
        <title>The local optimum number of cores</title>
        <p>The number of allocated cores takes into account the
arithmetic CPU-load average of the active database threads.
Formally, we de ne how to compute the number of cores, as
follows:
8 w 9 nallocj(thmin &lt; u &lt; thmax)^p(nalloc)
p(ntotal) (1)</p>
        <p>To any OLAP workload w, there is a certain number of
CPU cores nalloc such that the load of each core are
between the minimum and maximum thresholds, in which the
database performance p(nalloc) is equal or better than the
performance p(ntotal) with all the CPU cores available in the
hardware. The performance function p(x) relies on system
counters provided by the OS and the database.
3.3</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Mixed Workload</title>
      <p>
        In our initial e orts in this thesis, we focused on OLAP
due to the pressure to transfer and compute large volumes
of data scattered across multiple NUMA nodes [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ].
However, the elastic multi-core mechanism can designate
underused cores or NUMA nodes to serve di erent types of
workloads. Our next direction is to investigate how to designate
underused cores to perform di erent workloads on di erent
NUMA nodes. We expect the abstract nature of our
mechanism and the information of memory usage to facilitate the
choice of the optimal node to a di erent workload.
      </p>
    </sec>
    <sec id="sec-8">
      <title>4. EXPERIMENTS</title>
      <p>In a preliminary study, we ran the experiments with OLAP
workload on a NUMA machine formed by 4-node with a
QuadCore AMD Opteron 8387 each. Nodes are
interconnected by Hyper-Transport (HT) link 3.x achieving 41.6
GB/s maximum aggregate bandwidth. We implemented our
prototype in C language and we compare our mechanism to
the Linux Debian 8 \Jessie" OS scheduling of threads spawn
by the MonetDB (v11.25.5) DBMS. We let all the 16 cores
available to the DBMS when running without the support of
4
3/)s
B
G
2(
P
T
m
e
1
M
0 OS/Mon Dense
eD
t B</p>
      <p>S
p
as
re</p>
      <p>A
d
a
ptive
S0</p>
      <p>S1</p>
      <p>S2</p>
      <p>S3
50
0.8
o
i
tra0.6
C
I/M0.4
T
H
0.2</p>
      <sec id="sec-8-1">
        <title>Execution Speedup (Adaptive Mode)</title>
      </sec>
      <sec id="sec-8-2">
        <title>OS/MonetDB</title>
      </sec>
      <sec id="sec-8-3">
        <title>Dense</title>
      </sec>
      <sec id="sec-8-4">
        <title>Sparse</title>
      </sec>
      <sec id="sec-8-5">
        <title>Adaptive</title>
        <p>used only the nodes S0 and S2.</p>
        <p>
          Figure 6 shows the results of interconnection tra c in
relation with tra c HT/IMC ratio. In this experiment the
256 concurrent clients execute the 22 queries in random
order. The results show the reduction in the local/remote
per-query data tra c ratio of up 3:87x (2:47x on average).
Overall, the adaptive mode presented the best results. For
instance, we observed 2x smaller HT/IMC ratio than the
OS/MonetDB for queries such as Q9 that have the largest
number of joins operations. With less cores available, threads
locate data in the local node more often than the current
approach of letting all the cores available to the OS scheduler
(i.e., OS/MonetDB).
This paper describes the motivation and challenges to our
approach in the allocation of NUMA CPU-cores for
parallel execution of OLAP. In our rst evaluations, we discuss
the impact of data movement between NUMA nodes for
multi-threaded DBMS that hand over the mapping of query
threads to the OS. We show the di culty faced by the OS
scheduler to keep load balance, generating a vast amount of
data movement, interconnection tra c and cache
invalidation. In the initial contribution of this thesis [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], we present
an abstract model-based mechanism to support the thread
scheduling and data allocation across NUMA sockets. The
mechanism is the rst part of our approach to mitigate the
data movement in NUMA nodes. The preliminary results
showed performance improvements when our mechanism
offered to the OS only the local optimum CPU-cores, instead
of the traditional approach of making all the cores visible to
the OS all the time, like in current multi-threaded DBMSs:
MonetDB, SQL Server, SAP Hana and Hyper.
        </p>
        <p>As future directions, we plan to explore mixed workloads
as we observed that OLAP not always need the entire setup
of CPU-cores. Therefore, our agenda includes redesigning
our abstract model to accommodate concurrent OLTP and
OLAP. In particular, we plan to study the multi-core
allocation in cloud computing environments that can particularly
bene t from our model.</p>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>ACKNOWLEDGMENTS</title>
      <p>This work was partly funded by CAPES and CNPQ.
7.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Dominico</surname>
          </string-name>
          , E. C. de Almeida, and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Meira</surname>
          </string-name>
          .
          <article-title>A petrinet mechanism for OLAP in NUMA</article-title>
          . In DaMoN,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Dominico</surname>
          </string-name>
          , E. C. de Almeida,
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Meira</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. A. Z.</given-names>
            <surname>Alves</surname>
          </string-name>
          .
          <article-title>An elastic multi-core allocation mechanism for database systems</article-title>
          .
          <source>In ICDE</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gawade</surname>
          </string-name>
          and
          <string-name>
            <given-names>M. L.</given-names>
            <surname>Kersten</surname>
          </string-name>
          .
          <article-title>NUMA obliviousness through memory mapping</article-title>
          .
          <source>In DaMoN</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>G.</given-names>
            <surname>Graefe</surname>
          </string-name>
          .
          <article-title>Encapsulation of parallelism in the volcano query processing system</article-title>
          .
          <source>In SIGMOD.</source>
          , pages
          <volume>102</volume>
          {
          <fpage>111</fpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Kissinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kiefer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Schlegel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Habich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Molka</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Lehner</surname>
          </string-name>
          .
          <article-title>ERIS: A NUMA-aware in-memory storage engine for analytical workload</article-title>
          .
          <source>In ADMS</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>P.</given-names>
            <surname>Larson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Clinciu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Fraser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. N.</given-names>
            <surname>Hanson</surname>
          </string-name>
          , M. Mokhtar,
          <string-name>
            <given-names>M.</given-names>
            <surname>Nowakiewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Papadimos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. L.</given-names>
            <surname>Price</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Rangarajan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rusanu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Saubhasik</surname>
          </string-name>
          .
          <article-title>Enhancements to SQL server column stores</article-title>
          .
          <source>In SIGMOD</source>
          , pages
          <volume>1159</volume>
          {
          <fpage>1168</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.</given-names>
            <surname>Leis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. A.</given-names>
            <surname>Boncz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kemper</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Neumann</surname>
          </string-name>
          .
          <article-title>Morsel-driven parallelism: a NUMA-aware query evaluation framework for the many-core age</article-title>
          .
          <source>In SIGMOD</source>
          , pages
          <volume>743</volume>
          {
          <fpage>754</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Pandis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Mueller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Raman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Lohman</surname>
          </string-name>
          .
          <article-title>NUMA-aware algorithms: the case of data shu ing</article-title>
          .
          <source>In CIDR</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>U. F.</given-names>
            <surname>Minhas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Aboulnaga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Salem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ng</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Robertson</surname>
          </string-name>
          .
          <article-title>Elastic scale-out for partition-based database systems</article-title>
          .
          <source>ICDEW12.</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Porobic</surname>
          </string-name>
          , I. Pandis,
          <string-name>
            <given-names>M.</given-names>
            <surname>Branco</surname>
          </string-name>
          , P. To
          <article-title>zun, and</article-title>
          <string-name>
            <surname>A. Ailamaki.</surname>
          </string-name>
          <article-title>OLTP on hardware islands</article-title>
          .
          <source>PVLDB</source>
          , (
          <volume>11</volume>
          ),
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>I.</given-names>
            <surname>Psaroudakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Scheuer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>May</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sellami</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ailamaki</surname>
          </string-name>
          .
          <article-title>Scaling up concurrent main-memory column-store scans: Towards adaptive NUMA-aware data and task placement</article-title>
          .
          <source>PVLDB</source>
          , (
          <volume>12</volume>
          ),
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>I.</given-names>
            <surname>Psaroudakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Scheuer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>May</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sellami</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ailamaki</surname>
          </string-name>
          .
          <article-title>Adaptive NUMA-aware data placement and task scheduling for analytical workloads in main-memory column-stores</article-title>
          .
          <source>PVLDB, (2)</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>V.</given-names>
            <surname>Raman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. K.</given-names>
            <surname>Attaluri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Barber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Chainani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kalmuk</surname>
          </string-name>
          , V. KulandaiSamy, J. Leenstra,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lightstone</surname>
          </string-name>
          , S. Liu,
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Lohman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Malkemus</surname>
          </string-name>
          , R. Muller, I. Pandis,
          <string-name>
            <given-names>B.</given-names>
            <surname>Schiefer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Sharpe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Sidle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Storm</surname>
          </string-name>
          , and
          <string-name>
            <surname>L. Zhang.</surname>
          </string-name>
          <article-title>DB2 with BLU acceleration: So much more than just a column store</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>6</volume>
          (
          <issue>11</issue>
          ):
          <volume>1080</volume>
          {
          <fpage>1091</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>