I/O Behavior of Modern Applications

As technology changes, file systems are constantly evolving. Benchmarking tools are typically used to evaluate new file systems and their features. Unfortunately, most file system benchmarking tools are based on the workloads of ancient UNIX applications. There is a need for file system benchmarks based on the I/O behavior of modern applications. Before we can create better benchmarks, however, we need to gain a better understanding of the behavior of modern applications. Another student and I are currently working as an undergrad research assistants for Professor Remzi Arpaci-Dusseau to address this problem. Our approach is to automate common user actions for applications in Apple's iLife and iWork suites, trace the file system behavior, and then do analysis on the collected data. Our goal is to use this information to create better file systems benchmarks that can accurately predict how new file systems will perform with modern applications.

Android Cloud Computing

Use of mobile devices, such as Android phones, is becoming increasingly common. Unfortunately, these devices have resource constraints that are much more restrictive than those on typical workstations or servers. Finding ways to get more mileage out of limited memory, processor, storage, wireless, and power resources could significantly impact a large population of Android users.

One approach to circumventing local resource constraints that has been considered is to run some Android processes remotely in the cloud. Not only would the processes be able to run on machines with hardware that is much more powerful than than that of an Android phone, but remote resources could be shared among users. Although this approach seems promising, there are still many questions that need to be answered. For instance, which resources would the cloud best supplement? Are these resources that are consumed by the system itself, or are they resources consumed by processes that could potentially be run remotely? Which processes would an ideal scheduler run locally, and which ones would it run in the cloud?

To answer these questions, one must understand the characteristics and behavior of common Android applications. Several other students and I have decided to tackle this problem for our CS707 - Mobile and Wireless Devices course project. We have two goals: create an experimentation framework that allows other researchers to automate application runs, and create a tracing framework that allows us to gather detailed traces of program runs as well as snapshots of resource usage.

Design Pattern Checking

This was my CS 706 - Software Artifacts class project.

Continue