Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Semi-explicit placement

This presentation was given at Erlang Workshop 2015 on 4 Sept 2015 in Vancouver, BC, Canada
by

Natalia Chechina

on 19 September 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Semi-explicit placement

Attribute Propagation Strategy
On request
Broadcasting
Node Attributes
Scaling
Performance Portability through
Semi-explicit Placement in Distributed Erlang

Attributes
Semi-explicit placement
Communication Distances
VM
Language
Tools
Kenneth MacKenzie
Natalia Chechina
Phil Trinder

How to utilize resources?
A programmer provides some critetia, and the rest is decided during the runtime
Structured network -- Great!
But what if we have just a huge network?
Semi-explicit Placement
Node attributes
Communication distances
OS type and version
Available RAM
Number of cores per VM
Hardware features
Software features
Access to shared file systems
...
Static
Dynamic
Load on the machine
Number of processes in the VM
Available memory
Types of running processes
...
Experimental Validation
ACO
Related Problems:
Traveling Salesman Problem
Vehicle Routing
{attr_server,Node} ! {self(), {report,Key,AttrNames}}.
attr:request_attrs (Nodes, AttrNames)
[{num_cpus, 4},
{hyperthreading, 2},
{cpu_speed, 2994.655},
{mem_total, 3203368},
{os, "Linux"},
{kernel_version, {3,11,0,12}},
{num_erlang_processes, {dynamic, {erlang, system_info, [process_count]}}].
attr: choose_nodes(Nodes, [{cpu_speed, ge, 2000},
{loadavg5, le, 0.6},
{vm_num_processors, ge, 4}])
%% usual six comparison operators: eq, ne, lt, le, gt, and ge.
Ant Colony Optimization
Combining with SD Erlang s_groups
s_group:own_nodes/0
s_group:own_s_groups/0
global:own_nodes/0
Types
Built-in
Customized
Measurements
Small network -- Fine!
Request info
from VM and OS
Conclusion
Node attributes

Communication distance
attr:choose_nodes(Nodes, Pars)
Concrete and abstract bounds
Conflicting constraints
Avoiding clashes when spawning processes
Fault tolerance
Dynamic changes to network structure
Future Work
Portability Libraries
https://github.com/release-project/portability-libs

ACO
https://github.com/release-project/benchmarks/tree/master/ACO

RELEASE
http://www.release-project.eu/

SD Erlang
http://www.dcs.gla.ac.uk/research/sd-erlang/
Sources
Heriot-Watt cluster
Athos cluster
Full transcript