Research
Teaching (French)
Projects
Other
|
|
Main Publications - Abstracts
|
[1]
|
Suman Saha, Jean-Pierre Lozi, Gaël Thomas, Julia Lawall, and Gilles Muller.
EHCtor: Detecting Resource-Release Omission Faults in Error-Handling
Code for Systems Software.
In Proceedings of the international conference on Dependable
Systems and Networks, DSN '13, page 12, Budapest, Hungary, 2013. IEEE
Computer Society.
To appear.
[ bib ]
|
|
[2]
|
Lokesh Gidra, Gaël Thomas, Julien Sopena, and Marc Shapiro.
A study of the scalability of stop-the-world garbage collectors on
multicores.
In Proceedings of the conference on Architectural Support for
Programming Languages and Operating Systems, ASPLOS '13, pages 229-240,
Houston, Texas, USA, 2013. ACM.
[ bib |
.pdf ]
Large-scale multicore architectures are problematic for garbage
collection (GC). In particular, throughput-oriented stop-the-world
algorithms demonstrate excellent performance with a small number of
cores, but have been shown to degrade badly beyond approximately 20 cores on
OpenJDK 7. This negative result raises the question whether the
stop-the-world design has intrinsic limitations that would require a
radically different approach. Our study suggests that the answer is
no, and that there is no compelling scalability reason to discard the
existing highly-optimised throughput-oriented GC code on
contemporary hardware. This paper studies the default
throughput-oriented garbage collector of OpenJDK 7, called Parallel
Scavenge. We identify its bottlenecks, and show how to eliminate them
using well-established parallel programming techniques. On the
SPECjbb2005, SPECjvm2008 and DaCapo 9.12 benchmarks, the
improved GC matches the performance of Parallel Scavenge at low core
count, but scales well, up to 48 cores.
|
|
[3]
|
Jean-Pierre Lozi, Florian David, Gaël Thomas, Julia Lawall, and Gilles
Muller.
Remote Core Locking: migrating critical-section execution to improve
the performance of multithreaded applications.
In Proceedings of the Usenix Annual Technical Conference, USENIX
ATC '12, pages 65-76, Boston, MA, USA, 2012. USENIX Association.
[ bib |
.pdf ]
The scalability of multithreaded applications on current
multicore systems is hampered by the performance of
lock algorithms, due to the costs of access contention and
cache misses. In this paper, we propose a new lock algorithm, Remote
Core Locking (RCL), that aims to improve
the performance of critical sections in legacy applications
on multicore architectures. The idea of RCL is to replace
lock acquisitions by optimized remote procedure calls
to a dedicated server core. RCL limits the performance
collapse observed with other lock algorithms when many
threads try to acquire a lock concurrently and removes
the need to transfer lock-protected shared data to the core
acquiring the lock because such data can typically remain
in the server core's cache.
We have developed a profiler that identifies the locks
that are the bottlenecks in multithreaded applications and
that can thus benefit from RCL, and a reengineering tool
that transforms POSIX locks into RCL locks. We have
evaluated our approach on 18 applications: Memcached,
Berkeley DB, the 9 applications of the SPLASH-2 benchmark suite and
the 7 applications of the Phoenix2 benchmark
suite. 10 of these applications, including Memcached
and Berkeley DB, are unable to scale because of
locks, and benefit from RCL. Using RCL locks, we get
performance improvements of up to 2.6 times with respect
to POSIX locks on Memcached, and up to 14 times with
respect to Berkeley DB.
|
|
[4]
|
Nicolas Palix, Gaël Thomas, Suman Saha, Christophe Calvès, Julia Lawall,
and Gilles Muller.
Faults in Linux: ten years later.
In Proceedings of the conference on Architectural Support for
Programming Languages and Operating Systems, ASPLOS '11, pages 305-318,
Newport Beach, CA, USA, 2011. ACM.
[ bib |
.pdf ]
In 2001, Chou et al. published a study of faults found by applying a
static analyzer to Linux versions 1.0 through 2.4.1. A major result of
their work was that the drivers directory contained up to 7 times
more of certain kinds of faults than other directories. This result
inspired a number of development and research efforts on improving
the reliability of driver code. Today Linux is used in a much wider
range of environments, provides a much wider range of services,
and has adopted a new development and release model. What has
been the impact of these changes on code quality? Are drivers still a
major problem?
To answer these questions, we have transported the experiments
of Chou et al. to Linux versions 2.6.0 to 2.6.33, released between
late 2003 and early 2010. We find that Linux has more than doubled
in size during this period, but that the number of faults per line of
code has been decreasing. And, even though drivers still accounts
for a large part of the kernel code and contains the most faults, its
fault rate is now below that of other directories, such as arch (HAL)
and fs (file systems). These results can guide further development
and research efforts. To enable others to continually update these
results as Linux evolves, we define our experimental protocol and
make our checkers and results available in a public archive.
|
|
[5]
|
Sergey Legtchenko, Sébastien Monnet, and Gaël Thomas.
Blue banana: resilience to avatar mobility in distributed MMOGs.
In Proceedings of the international conference on Dependable
Systems and Networks, DSN '10, pages 171-180, Chicago, IL, USA, 2010. IEEE
Computer Society.
[ bib |
.pdf ]
Massively Multiplayer Online Games (MMOGs) recently emerged as a
popular class of applications with millions of users. To offer
acceptable gaming experience, such applications need to render the
virtual world surrounding the player with a very low latency. However,
current state of-the-art MMOGs based on peer-to-peer overlays fail to
satisfy these requirements. This happens because avatar mobility
implies many data exchanges through the overlay. As state-of-the-art
overlays do not anticipate this mobility, the needed data is not
delivered on time, which leads to transient failures at the
application level. To solve this problem, we propose Blue Banana, a
mechanism that models and predicts avatar movement, allowing the
overlay to adapt itself by anticipation to the MMOG needs. Our
evaluation is based on large-scale traces derived from Second life. It
shows that our anticipation mechanism decreases by 20% the number of
transient failures with only a network overhead of 2%.
|
|
[6]
|
Nicolas Geoffray, Gaël Thomas, Julia Lawall, Gilles Muller, and Bertil
Folliot.
VMKit: a substrate for managed runtime environments.
In Proceedings of the international conference on Virtual
Execution Environments, VEE '10, pages 51-62, Pittsburgh, PA, USA, 2010.
ACM.
[ bib |
.pdf ]
Managed Runtime Environments (MREs), such as the JVM and the CLI, form
an attractive environment for program execution, by providing
portability and safety, via the use of a bytecode language and
automatic memory management, as well as good performance, via
just-in-time (JIT) compilation. Nevertheless, developing a fully
featured MRE, including e.g. a garbage collector and JIT compiler, is
a herculean task. As a result, new languages cannot easily take
advantage of the benefits of MREs, and it is difficult to experiment
with extensions of existing MRE based languages.
This paper describes and evaluates VMKit, a first attempt to build a
common substrate that eases the development of high-level MREs. We
have successfully used VMKit to build two MREs: a Java Virtual Machine
and a Common Language Runtime. We provide an extensive study of the
lessons learned in developing this infrastructure, and assess the ease
of implementing new MREs or MRE extensions and the resulting
performance. In particular, it took one of the authors only one month
to develop a Common Language Runtime using VMKit. VMKit furthermore
has performance comparable to the well established open source MREs
Cacao, Apache Harmony and Mono, and is 1.2 to 3 times slower than
JikesRVM on most of the DaCapo benchmarks.
|
|
[7]
|
Nicolas Geoffray, Gaël Thomas, Gilles Muller, Pierre Parrend, Stéphane
Frénot, and Bertil Folliot.
I-JVM: a Java virtual machine for component isolation in OSGi.
In Proceedings of the international conference on Dependable
Systems and Networks, DSN '09, pages 544-553, Estoril, Portugal, 2009. IEEE
Computer Society.
[ bib |
.pdf ]
The OSGi framework is a Java-based, centralized, component oriented
platform. It is being widely adopted as an execution environment for
the development of extensible applications. However, current Java
Virtual Machines are unable to isolate components from each other. For
instance, a malicious component can freeze the complete platform by
allocating too much memory or alter the behavior of other components
by modifying shared variables. This paper presents I-JVM, a Java
Virtual Machine that provides a lightweight approach to isolation
while preserving compatibility with legacy OSGi applications. Our
evaluation of I-JVM shows that it solves the 8 known OSGi
vulnerabilities that are due to the Java Virtual Machine and that the
overhead of I-JVM compared to the JVM on which it is based is below
20%.
|
|
[8]
|
Gaël Thomas, Nicolas Geoffray, Charles Clément, and Bertil Folliot.
Designing highly flexible virtual machines: the JnJVM experience.
Software - Practice & Experience (SP&E), 38(15):1643-1675,
2008.
[ bib |
.pdf ]
Dynamic flexibility is a major challenge in modern system design to react to context or
applicative requirements evolutions. Adapting behaviors may impose substantial code
modification across the whole system, in the field, without service interruption, and
without state loss. This paper presents the JnJVM, a full Java virtual machine (JVM)
that satisfies these needs by using dynamic aspect weaving techniques and a component
architecture. It supports adding or replacing its own code, while it is running, with no
overhead on unmodified code execution. Our measurements reveal similar performance
when compared to the monolithic JVM Kaffe. Three illustrative examples show different
extension scenarios: (i) modifying the JVMs behavior; (ii) adding capabilities to the
JVM; and (iii) modifying applications behavior.
|
All Publications
|