27.03.2014 Views

Programming Model and Protocols for Reconfigurable Distributed ...

Programming Model and Protocols for Reconfigurable Distributed ...

Programming Model and Protocols for Reconfigurable Distributed ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

68 CHAPTER 4. IMPLEMENTATION ASPECTS AND DEVELOPMENT CYCLE SUPPORT<br />

During development it is recommended to incrementally make small<br />

changes <strong>and</strong> quickly test their effects. The interactive execution mode helps<br />

with this routine since it enables the programmer to quickly run a small<br />

or medium-scale distributed system – without the need <strong>for</strong> deployment or<br />

manual launching of multiple processes – <strong>and</strong> to interact with it, <strong>and</strong> also<br />

to conveniently monitor its state using a web browser.<br />

In interactive stress test execution mode, experiments are run in real<br />

physical time, i.e., in the special case where simulation time is equivalent<br />

to physical system execution time. This allows us to use multiple worker<br />

threads <strong>for</strong> executing experiments, without needing to synchronize the<br />

workers on the passage of simulation time [50]. The use of real time means<br />

that events may not execute at the expected time due to queuing delays.<br />

However, most distributed systems, <strong>and</strong> all P2P systems, are tolerant to<br />

messaging delays within some application-specific bounds.<br />

Lin et al. showed [140] that this approach is valid to the extent that the<br />

delay of events in queues does not affect application invariants. Application<br />

invariants are properties of the application that must be maintained over<br />

all execution runs. For P2P systems, application invariants can be specified<br />

as conditions on the logic of timers [140]. For example, an RPC response<br />

event cannot be delayed <strong>for</strong> an amount of time exceeding its expiration<br />

time, otherwise it would time out be<strong>for</strong>e it could be h<strong>and</strong>led, potentially<br />

breaking some application invariant. In Kompics experiments running on a<br />

single multi-core machine, events will encounter increasing queuing delays<br />

with increasing system load. Event queuing delays occur if the system<br />

generates more events than it can process over a period of time. Using an<br />

implementation of the Cyclon overlay [227], in the next two sections we<br />

investigate how large the system can grow – <strong>for</strong> different numbers of cores<br />

<strong>and</strong> machines – while conservatively maintaining timing invariants. That<br />

is, we have to keep the highest event queuing delays considerably below<br />

the minimum configured timeout period in the Cyclon protocol.<br />

4.5.1 Scalability of Local Stress Testing<br />

We evaluated the scalability of our stress test execution mode <strong>for</strong> multicore<br />

hardware by running a P2P experiment scenario on an increasing<br />

number of processing cores. Our hardware setup comprised of a Mac Pro

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!