3 research outputs found
Neural Program Repair by Jointly Learning to Localize and Repair
Due to its potential to improve programmer productivity and software quality,
automated program repair has been an active topic of research. Newer techniques
harness neural networks to learn directly from examples of buggy programs and
their fixes. In this work, we consider a recently identified class of bugs
called variable-misuse bugs. The state-of-the-art solution for variable misuse
enumerates potential fixes for all possible bug locations in a program, before
selecting the best prediction. We show that it is beneficial to train a model
that jointly and directly localizes and repairs variable-misuse bugs. We
present multi-headed pointer networks for this purpose, with one head each for
localization and repair. The experimental results show that the joint model
significantly outperforms an enumerative solution that uses a pointer based
model for repair alone.Comment: ICLR 201
Path-Based Function Embedding and its Application to Specification Mining
Identifying the relationships among program elements is useful for program
understanding, debugging, and analysis. One such relationship is synonymy.
Function synonyms are functions that play a similar role in code, e.g.
functions that perform initialization for different device drivers, or
functions that implement different symmetric-key encryption schemes. Function
synonyms are not necessarily semantically equivalent and can be syntactically
dissimilar; consequently, approaches for identifying code clones or functional
equivalence cannot be used to identify them. This paper presents func2vec, an
algorithm that maps each function to a vector in a vector space such that
function synonyms are grouped together. We compute the function embedding by
training a neural network on sentences generated from random walks over an
encoding of the program as a labeled pushdown system (l-PDS). We demonstrate
that func2vec is effective at identifying function synonyms in the Linux
kernel. Furthermore, we show how function synonyms enable mining error-handling
specifications with high support in Linux file systems and drivers.Comment: 11 pages, 8 figure
QWin: Enforcing Tail Latency SLO at Shared Storage Backend
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.Comment: 14 pages, 11 figure