Overview
In this demonstration, we use our framework to optimize a video streaming application running on a Compaq iPAQ. The system architecture assumed is similar to the one shown in the picture below. To simplify matters, we assume that the proxy is also the server streaming the video. The Dynamo middleware framework executes on both the proxy and the mobile device(iPAQ). The iPAQ runs power-aware operating system and which is capable of performing voltage/frequency scaling operations. The proxy (Linux desktop) has a streaming server that also doubles as a transcoder that can dynamically change the quality of the video stream. The transcoder also interfaces with the Dynamo middleware, through which the video quality can be changed on the fly.
As soon as the client requests the server for the video stream, the Dynamo middleware gathers system state information (residual battery, system load etc.) from the iPAQ and communicates it to the middleware on the proxy. Using this information, the proxy middleware dynamically determines at what quality video should be streamed to the device. This is calculated based on the instantaneous residual energy of the device, the profiled energy usage for the video for the iPAQ, the current load etc. The middleware on the proxy simultaneously sends stream related control information (e.g. new video quality, WCET, period etc. which have been profiled for the video) back to the iPAQ. The Dynamo middleware on the iPAQ now relays this information to the Power Aware OS, which dynamically adjusts the voltage/frequency parameters to work with the new video quality. For the demo, we use our own H.263 video player and transcoder (developed in house).
Whats Needed
- Arm tool chain arm-linux/2.95.3
- Dynamo Middleware Package
- ARM X11 libraries
Configuration
Step 0: Download the Demo
Download the demo program. Then extract the files
type "tar -zxvf demo.tgz". You will obtain a file structure similar to:
File Structure:
- Dynamo
- middleware
- lib
- paapi
- user-level [user level dvs]
- kernel-level [kernel level dvs]
- linux-ipaq-v0.6.1 [kernel with dvs]
- middleware
Step 1: Configuring the Make Process
Open Dynamo\config.mk
find and modify
find and modify
find and modify if necessary
Step 2: Updating Header Files
There are 3 files that need to be modified to use the FORGE/Dynamo Middleware Framework. These are device.c [middleware on your client device] proxy.c [middleware on the proxy device] dyncommunication.c [shared information between proxy and device].
dyncommunication.h
[all define's and structures can be modified in this header file]
Step 3: Compiling the Kernel [or download the zImage]
Compile Boot Image: in dynamo
run: make kernel
Step 4: Updating the Kernel
cd paapi/linux-ipaq-v0.6.1/arch/arm/boot/ Copy the zImage to the mobile device's boot sector and link the new zImage to the current zImage with ln -s /boot/zImage-paapi /boot/zImage
Step 5: Making The Middleware Demo
in dynamo
run: make
Step 6: Uploading Files
[located in dynamo/middleware]
upload the device file to your iPAQ
upload the proxy file & FOREMAN.H263 to the proxy machine
Step 7: Running the Demo
run ./proxy [on the proxy]
run ./device [on the device]