Resource Reservation in containers of Java applications
Modern middlewares are typically implemented using Java, for example with OSGi or Android, because of its safety, flexibility, and mature development environment. In fact, Java is the most used programming language today. However, the Java virtual machine specification has not been revised since 1999, at the time when the idea of pervasive computing was first introduced. It was designed to execute only a single application at a time, and thus it does not provide resource accounting or per-application resource reservations. Current middlewares in cloud computing are thus unable to reserve resources for critical applications, which may cause these applications to crash or hang when insufficient resources are available, and are unable to provide resource accounting, making it impossible to balance the load on the devices and to optimize resource use.
This project will investigate how to enhance the design of Java virtual machines with new functionalities to better manage resources. We have identified a key functionality for which the Java virtual machine does not provide an adequate interface:
- Resource reservation: the Java virtual machine was not targeted to support more than one application. It does not provide a per-application resource accounting and reservation for memory, bandwidth, disk, etc. We propose to define the notion of resource container inside the Java virtual machine able to account and reserve resources on a per-application basis.
Our vision is that the project will implement resource management mechanisms in a way that existing java-based middlewares and applications can use them with little or no modification. We will provide a notion of resource container to account and reserve resource, independently of the pervasive middleware. At deployment time, the pervasive middleware will configure the resource containers by loading a XML file describing the requirements in term of criticality, amount of memory, amount of bandwidth and amount of disk. Before loading a critical application, the pervasive middleware will verify that requested resources are available. For other applications, the middleware will just provide a best-effort policy.
Gonzalez-Herrera I., Bourcier J., Daubert E., Rudametkin W., Barais O., Fouquet F., Jézéquel J.-M.: Scapegoat: an Adaptive monitoring framework for Component-based systems. In Proc. of the 11th Working IEEE/IFIP Conference on Software Architecture (WICSA 2014), April 7-11, Sydney, Australia. (To appear)
Al Ali R., Gerostathopoulos I., Gonzalez-Herrera I., Juan-Verdejo A., Kit M., Surajbali B.: An Architecture-Based Approach for Compute-Intensive Pervasive Systems in Dynamic Environments. In Proceedings of International Workshop on Hot Topics in Cloud service Scalability (ICPE ’14), March 20, Dublin, Ireland, 2014, PDF