1 / 18

Distributed Shared Memory Using The .NET Framework

Distributed Shared Memory Using The .NET Framework. Thomas Seidmann Department of Computer Science and Engineering Faculty of Electrical Engineering and Information Technology Slovak University of Technology seidmann@dcs.elf.stuba.sk http://www.cdot.ch/thomas/.

elliot
Download Presentation

Distributed Shared Memory Using The .NET Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Distributed Shared Memory Using The .NET Framework Thomas Seidmann Department of Computer Science and Engineering Faculty of Electrical Engineering and Information Technology Slovak University of Technology seidmann@dcs.elf.stuba.sk http://www.cdot.ch/thomas/

  2. Building distributed applications with .NET (1) • (lower-level) socket programming • .NET Remoting • Web Services • Concentration on RPC-style client/server relationship • Remote access to shared objects (methods, properties) provided by a server (UDDI, manual discovery) Middleware for distributed objects

  3. Node 1 Server Node 2

  4. Building distributed applications with .NET (2) • Desired scenario: peer .NET applications collaborate on a set of shared objects • Replication of objects • Local access to methods (and properties) • Provide the notion of objects shared among peer .NET applications • Semantics of an object based DSM (Distributed Shared Memory) – coherence!

  5. Node 1 Node 3 coherence protocol Node 2 Node 4

  6. Consistency model and coherence protocol • Causal consistency model • Multiple Reader Multiple Writer (MRMW) • Write-update protocol • Multicast transfer of diffs between nodes • Causality relationship achieved by vector logical clocks - Associative array of pairs (PID, value) • Shared object identification with a GUID

  7. DSM Implementation Outline • Mechanism for obtaining the state of a shared object • Registration of every change of a shared object in a local storage • Listening to changes made by remote nodes and to object state queries

  8. DSM Implementation Outline • Mechanism for obtaining the state of a shared object serialization • Registration of every change of a shared object in a local storage interception • Listening to changes made by remote nodes and to object state queries coherence thread

  9. Serialization, Interception • [serializable] • Binary serialization formatter • TransparentProxy • RealProxy DSMProxy • Method Entry: object diff storage cheched • Method Exit: diff calculated; if nonzero, then added with the vector logical clock value to the storage

  10. Coherence Thread • Accesses object diff storage and the shared object via its DSMProxy • Performs state changes according to remote write update messages • Sends write update messages • Requests other nodes to send write update messages (new shared object, timeout)

  11. DSM Implementation Overview

  12. Multicast Channel Service • Object diffs transported with .NET Remoting • Built-in channels are TCP-based • IP-Multicast uses UDP as transport protocol • UdpChannel, Implements IChannel

  13. Programming Model for Shared Objects (1) • Descendant of ContextBoundObject • Must be serializable • Annotated with ProxyAttribute specifying McastDSM.DSMProxy • (State-Modifying public methods annoted with McastDSM.ModifiesStateAttribute)

  14. Programming Model for Shared Objects (2) using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Proxies; using McastDSM; [Proxy(DSMProxy)] [serializable] public class MySharedObject : ContextBoundObject, ISharedObject { private Guid myGuid = null; public Guid GuidProp { get {return myGuid;} set {myGuid = value;} } public int myMethod(string) { //... do something with string return 0; } }

  15. Programming Model for Shared Objects (3) using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using McastDSM; using McastDSM.Channels; public class App { public static int Main(string[] args) { ChannelServices.RegisterChannel ( new UdpChannel()); // Create an instance of a // MySharedObject class MySharedObject myObj = new MySharedObject; myObj.GuidProp = "478280B9-874E-4795-B3C7-05CFDD96CD2C"; myObj.myMethod("Hello World"); return 0; } }

  16. Conclusions • 100% managed code, compatible with Rotor • Tested with well-known scientific applications (FFT-3D, Barnes Hut) • LAN environment, simulated loss of messages (trafic shaping with FreeBSD) • First focus on TRANSPARENCY • Comfortable programming model

  17. Future Work • Second focus is on PERFORMANCE (diff calculation, message throughput) • Trade-off between transparency and performance • Other serialization formatters are being considered (SOAP) – might provide better diffs • SOAP together with XML aware compression (XMill)?

  18. Thank you very much for your attention http://www.cdot.ch/thomas/

More Related