Rodrigo Bruno

dblp:161/9002 · DBLP profile ↗
← Back
27ranked-venue papers
8as first author
18since 2021 · last 2026
0000-0003-1578-5149ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 15 · 6 first-author · 9 since 2021Systems, architecture and hardware · 8 · 2 first-author · 5 since 2021Databases, data management, data science and information retrieval · 2 · 2 since 2021Computer networks · 1 · 1 since 2021
YearPublicationVenuePosition
2026 Skyler: Static Analysis for Predicting API-Driven Costs in Serverless Applications
abstract
Unpredictable costs are a growing concern in serverless computing, where applications rely on cloud APIs with complex tiered pricing models. In many deployments, API calls dominate expenses, and a single overlooked design choice can escalate costs by thousands of dollars. Existing tools fall short: provider calculators need unrealistic manual estimates, and dynamic profilers only work post-deployment.
Bernardo Ribeiro, Mafalda Ferreira, José Fragoso Santos, Rodrigo Bruno, Nuno Santos 0001
ASPLOS (2)4
2025 Hydra: Virtualized Multi-Language Runtime for High-Density Serverless Platforms
abstract
Serverless is an attractive computing model that offers seamless scalability and elasticity; it takes the infrastructure management burden away from users and enables a pay-as-you-use billing model. As a result, serverless is becoming increasingly popular for highly elastic and bursty workloads. However, existing platforms are supported by bloated virtualization stacks, which, combined with bursty and irregular invocations, lead to high memory and latency overheads.
Serhii Ivanenko, Vasyl Lanko, Rudi Horn, Vojin Jovanovic, Rodrigo Bruno
SoCC5
2025 Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems
Viktória Spisaková, Radostin Stoyanov, Lukás Hejtmánek, Dalibor Klusácek, Adrian Reber, Rodrigo Bruno
JSSPP6
2025 GRANNY: Granular Management of Compute-Intensive Applications in the Cloud
Carlos Segarra, Simon Shillaker, Eleftheria Mappoura, Rodrigo Bruno, Lluís Vilanova, Peter R. Pietzuch
NSDI5
2024 Off-the-shelf Data Analytics on Serverless
Michal Wawrzoniak, Gianluca Moro, Rodrigo Bruno, Ana Klimovic, Gustavo Alonso
CIDR3
2024 Process-as-a-Service: Unifying Elastic and Stateful Clouds with Serverless Processes
abstract
Fine-grained serverless functions power many new applications that benefit from elastic scaling and pay-as-you-use billing model with minimal infrastructure management overhead. To achieve these properties, Function-as-a-Service (FaaS) platforms disaggregate compute and state and, consequently, introduce non-trivial costs due to the loss of data locality when accessing state, complex control plane interactions, and expensive inter-function communication. We revisit the foundations of FaaS and propose a new cloud abstraction, the cloud process, that retains all the benefits of FaaS while significantly reducing the overheads that result from disaggregation. We show how established operating system abstractions can be adapted to provide powerful granular computing on dynamically provisioned cloud resources while building our Process as a Service (PraaS) platform. PraaS improves current FaaS by offering data locality, fast invocations, and efficient communication. PraaS delivers remote invocations up to 17× faster and reduces communication overhead by up to 99%.
Marcin Copik, Alexandru Calotoiu, Gyorgy Réthy, Roman Böhringer, Rodrigo Bruno, Torsten Hoefler
SoCC5
2024 Pronghorn: Effective Checkpoint Orchestration for Serverless Hot-Starts
abstract
Serverless computing allows developers to deploy and scale stateless functions in ephemeral workers easily. As a result, serverless computing has been widely used for many applications, such as computer vision, video processing, and HTML generation. However, we find that the stateless nature of serverless computing wastes many of the important benefits modern language runtimes have to offer. A notable example is the extensive profiling and Just-in-Time (JIT) compilation effort that runtimes implement to achieve acceptable performance of popular high-level languages, such as Java, JavaScript, and Python. Unfortunately, when modern language runtimes are naively adopted in serverless computing, all of these efforts are lost upon worker eviction. Checkpoint-restore methods alleviate the problem by resuming workers from snapshots taken after initialization. However, production-grade language runtimes can take up to thousands of invocations to fully optimize a single function, thus rendering naive checkpoint-restore policies ineffective.
Sumer Kohli, Shreyas Kharbanda, Rodrigo Bruno, Pedro Fonseca 0001
EuroSys3
2023 EdgeEmu - Emulator for Android Edge Devices
Lyla Naghipour Vijouyeh, Rodrigo Bruno, Paulo Ferreira 0001
DAIS2
2023 Language Runtimes for the New Cloud Era (Invited Talk)
abstract
Programming languages offer a number of abstractions such as dynamic typing, sandboxing, and automatic garbage collection which, however, come at a performance cost. Looking back, the most influential programming languages were proposed at a time when Moore’s Law was still in place. Nowadays, post-Moore’s law, scalability, and elasticity become crucial requirements, leading to an increasing tension between programming language design and implementation, and performance. It is now time to discuss the impact of programming languages and language runtimes in the context of scalable and elastic cloud computing platforms with the goal of forecasting their role in the new cloud era.
Rodrigo Bruno
DLS1
2023 CloudJIT: A Just-in-Time FaaS Optimizer (Work in Progress)
abstract
Function-as-a-Service has emerged as a trending paradigm that provides attractive solutions to execute fine-grained and short-lived workloads referred to as functions. Functions are typically developed in a managed language such as Java and execute atop a language runtime. However, traditional language runtimes such as the HotSpot JVM are designed for peak performance as considerable time is spent profiling and Just-in-Time compiling code. As a consequence, warmup time and memory footprint are impacted. We observe that FaaS workloads, which are short-lived, do not fit this profile.
Serhii Ivanenko, Rodrigo Bruno, Jovan Stevanovic, Luís Veiga, Vojin Jovanovic
MPLR2
2023 CloudJIT: A Just-in-Time FaaS Optimizer (Poster Abstract)
abstract
Function-as-a-Service provides attractive solutions to execute fine-grained and short-lived functions. Functions are typically developed in a managed language and execute atop a language runtime. However, traditional runtimes are designed for peak performance as considerable time is spent profiling and Just-in-Time compiling code. We observe that short-lived FaaS workloads do not fit this profile.
Serhii Ivanenko, Rodrigo Bruno, Jovan Stevanovic, Luís Veiga, Vojin Jovanovic
MPLR2
2023 Heap Size Adjustment with CPU Control
abstract
This paper explores automatic heap sizing where developers let the frequency of GC expressed as a target overhead of the application's CPU utilisation, control the size of the heap, as opposed to the other way around. Given enough headroom and spare CPU, a concurrent garbage collector should be able to keep up with the application's allocation rate, and neither the frequency nor duration of GC should impact throughput and latency. Because of the inverse relationship between time spent performing garbage collection and the minimal size of the heap, this enables trading memory for computation and conversely, neutral to an application's performance.
Sanaz Tavakoli-Someh, Marina Shimchenko, Erik Österlund, Rodrigo Bruno, Paulo Ferreira 0001, Tobias Wrigstad
MPLR4
2022 BestGC: An Automatic GC Selector Software
abstract
Garbage collection (GC) solutions are widely used in programming languages like Java. Such GC solutions follow prioritized goals and behave differently regarding crucial performance metrics like pause time, throughput, and memory usage. Consequently, running an application using each GC would have an evident impact on the application’s performance, especially on those dealing with massive data and tons of transactions. Nevertheless, it is challenging for a user/developer to pick a GC solution that fits an application’s performance goals. However, surprisingly, there is no tool to help a user/developer on this matter. In this study, we follow an effective methodology to build a heuristic combining throughput and pause time, with diverse heap sizes available, to score four production GCs (G1, Parallel, Shenandoah, and ZGC). Then we propose a system, BestGC, which offers the most suitable GC solution for a user application taking into account the performance goals of the user application.
Sanaz Tavakoli-Someh, Rodrigo Bruno, Paulo Ferreira 0001
MPLR2
2021 Boxer: Data Analytics on Network-enabled Serverless Platforms
Michal Wawrzoniak, Ingo Müller 0002, Gustavo Alonso, Rodrigo Bruno
CIDR4
2021 From warm to hot starts: leveraging runtimes for the serverless era
abstract
The serverless computing model leverages high-level languages, such as JavaScript and Java, to raise the level of abstraction for cloud programming. However, today's design of serverless computing platforms based on stateless short-lived functions leads to missed opportunities for modern runtimes to optimize serverless functions through techniques such as JIT compilation and code profiling.
Sumer Kohli, Rodrigo Bruno, Pedro Fonseca 0001
HotOS3
2021 Compiler-assisted object inlining with value fields
abstract
Object Oriented Programming has flourished in many areas ranging from web-oriented microservices, data processing, to databases. However, while representing domain entities as objects is appealing to developers, it leads to data fragmentation, resulting in high memory footprint and poor locality.
Rodrigo Bruno, Vojin Jovanovic, Christian Wimmer, Gustavo Alonso
PLDI1
2021 Specializing generic Java data structures
abstract
The Collections framework is an essential utility in virtually every Java application. It offers a set of fundamental data structures that exploit Java Generics and the Object type in order to enable a high degree of reusability. Upon instantiation, Collections are parametrized by the type they are meant to store. However, at compile-time, due to type erasure, this type gets replaced by Object, forcing the data structures to manipulate references of type Object (the root of the Java type system). In the bytecode, the compiler transparently adds type checking instructions to ensure type safety, and generates bridge methods to enable the polymorphic behavior of parametrized classes. This approach can introduce non-trivial runtime overheads when applications extensively manipulate Collections.
Dan Graur, Rodrigo Bruno, Gustavo Alonso
MPLR2
2021 Naos: Serialization-free RDMA networking in Java
Konstantin Taranov, Rodrigo Bruno, Gustavo Alonso, Torsten Hoefler
USENIX ATC2
2020 Photons: lambdas on a diet
abstract
Serverless computing allows users to create short, stateless functions and invoke hundreds of them concurrently to tackle massively parallel workloads. We observe that even though most of the footprint of a serverless function is fixed across its invocations --- language runtime, libraries, and other application state --- today's serverless platforms do not exploit this redundancy. Such an inefficiency has cascading negative impacts: longer startup times, lower throughput, higher latency, and higher cost. To mitigate these problems, we have built Photons, a framework leveraging workload parallelism to co-locate multiple instances of the same function within the same runtime. Concurrent invocations can then share the runtime and application state transparently, without compromising execution safety. Photons reduce function's memory consumption by 25% to 98% per invocation, with no performance degradation compared to today's serverless platforms. We also show that our approach can reduce the overall memory utilization by 30%, and the total number of cold starts by 52%.
Vojislav Dukic, Rodrigo Bruno, Ankit Singla, Gustavo Alonso
SoCC2
2019 Runtime Object Lifetime Profiler for Latency Sensitive Big Data Applications
abstract
Latency sensitive services such as credit-card fraud detection and website targeted advertisement rely on Big Data platforms which run on top of memory managed runtimes, such as the Java Virtual Machine (JVM). These platforms, however, suffer from unpredictable and unacceptably high pause times due to inadequate memory management decisions (e.g., allocating objects with very different lifetimes next to each other, resulting in severe memory fragmentation). This leads to frequent and long application pause times, breaking Service Level Agreements (SLAs). This problem has been previously identified, and results show that current memory management techniques are ill-suited for applications that hold in memory massive amounts of long-lived objects (which is the case for a wide spectrum of Big Data applications).
Rodrigo Bruno, Duarte Patrício, José Simão, Luís Veiga, Paulo Ferreira 0001
EuroSys1
2018 Dynamic vertical memory scalability for OpenJDK cloud applications
abstract
The cloud is an increasingly popular platform to deploy applications as it lets cloud users to provide resources to their applications as needed. Furthermore, cloud providers are now starting to offer a "pay-as-you-use" model in which users are only charged for the resources that are really used instead of paying for a statically sized instance. This new model allows cloud users to save money, and cloud providers to better utilize their hardware.
Rodrigo Bruno, Paulo Ferreira 0001, Ruslan Synytsky, Tetiana Fydorenchyk, Jia Rao, Hang Huang, Song Wu 0001
ISMM1
2018 Graviton: Trusted Execution Environments on GPUs
Stavros Volos, Kapil Vaswani, Rodrigo Bruno
OSDI3
2017 NG2C: pretenuring garbage collection with dynamic generations for HotSpot big data applications
abstract
Big Data applications suffer from unpredictable and unacceptably high pause times due to Garbage Collection (GC). This is the case in latency-sensitive applications such as on-line credit-card fraud detection, graph-based computing for analysis on social networks, etc. Such pauses compromise latency requirements of the whole application stack and result from applications' aggressive buffering/caching of data, exposing an ill-suited GC design, which assumes that most objects will die young and does not consider that applications hold large amounts of middle-lived data in memory.
Rodrigo Bruno, Luís Picciochi Oliveira, Paulo Ferreira 0001
ISMM1
2017 POLM2: automatic profiling for object lifetime-aware memory management for hotspot big data applications
abstract
Big Data applications suffer from unpredictable and unacceptably high pause times due to bad memory management (Garbage Collection, GC) decisions. This is a problem for all applications but it is even more important for applications with low pause time requirements such as credit-card fraud detection or targeted website advertisement systems, which can easily fail to comply with Service Level Agreements due to long GC cycles (during which the application is stopped). This problem has been previously identified and is related to Big Data applications keeping in memory (for a long period of time, from the GC's perspective) massive amounts of data objects.
Rodrigo Bruno, Paulo Ferreira 0001
Middleware1
2017 freeCycles - Efficient Multi-Cloud Computing Platform
Rodrigo Bruno, Fernando Costa, Paulo Ferreira 0001
J. Grid Comput.1
2016 ALMA: GC-assisted JVM Live Migration for Java Server Applications
Rodrigo Bruno, Paulo Ferreira 0001
Middleware1
2015 Asynchronous Complete Garbage Collection for Graph Data Stores
abstract
Graph data stores are a popular choice for a number of applications: social networks, recommendation systems, authorization and control access, and more. Such data stores typically support both distribution and replication of vertexes across physical nodes.
Luís Veiga, Rodrigo Bruno, Paulo Ferreira 0001
Middleware2