  Consolidating latency-critical (LC) and best-effort (BE) tenants at storage
backend helps to increase resources utilization. Even if tenants use dedicated
queues and threads to achieve performance isolation, threads are still contend
for CPU cores. Therefore, we argue that it is necessary to partition cores
between LC and BE tenants, and meanwhile each core is dedicated to run a
thread. Expect for frequently changing bursty load, fluctuated service time at
storage backend also drastically changes the need of cores. In order to
guarantee tail latency service level objectives (SLOs), the abrupt changing
need of cores must be satisfied immediately. Otherwise, tail latency SLO
violation happens. Unfortunately, partitioning-based approaches lack the
ability to react the changing need of cores, resulting in extreme spikes in
latency and SLO violation happens. In this paper, we present QWin, a tail
latency SLO aware core allocation to enforce tail latency SLO at shared storage
backend. QWin consists of an SLO-to-core calculation model that accurately
calculates the number of cores combining with definitive runtime load
determined by a flexible request-based window, and an autonomous core
allocation that adjusts cores at adaptive frequency by dynamically changing
core policies. When consolidating multiple LC and BE tenants, QWin outperforms
the-state-of-the-art approaches in guaranteeing tail latency SLO for LC tenants
and meanwhile increasing bandwidth of BE tenants by up to 31x.
