This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
Direct linking in Clojure 1.8 allows functions to make direct static method calls to other functions for improved performance, bypassing lookups through vars. It does this by compiling functions with direct calls instead of going through the var and Fn object. However, direct linking cannot see redefinitions and doesn't work with libraries like with-redefs that rely on redefining functions. Functions can be marked with ^:redef to prevent direct linking.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
This document summarizes an agenda for a 2015 AV technology sharing session. It discusses Instaparse, a Clojure parser generator, EBNF grammar notation, defining functions with pattern matching using defun, and Cloud Query Language (CQL) for translating SQL-like queries to MongoDB queries. Examples are provided for parsing arithmetic expressions, defining recursive functions, pattern matching on collections, visualizing parses trees, and transforming parses queries to MongoDB queries. Performance of the CQL parser is discussed, noting it can achieve over 400 queries per second per node through caching.
This document provides recommendations for commonly used development tools on Mac, including recommendations for the terminal, command line tools, version control with Git, Java tools, Clojure tools, Mac apps, and Emacs configurations. It also asks the audience to provide additional tool recommendations.
Hystrix is a latency and fault tolerance library designed by Netflix to isolate points of access to remote systems and services. It stops failures from cascading and improves resilience. Hystrix uses concepts like thread pooling, timeouts, circuit breakers, and fallbacks to achieve reliability. It provides commands for synchronous and asynchronous access to remote resources, and can be configured using properties or code. Hystrix also includes a dashboard for monitoring metrics and failures.
This document provides recommendations for commonly used development tools on Mac, including recommendations for the terminal, command line tools, version control with Git, Java tools, Clojure tools, Mac apps, and Emacs configurations. It also asks the audience to provide additional tool recommendations.
Hystrix is a latency and fault tolerance library designed by Netflix to isolate points of access to remote systems and services. It stops failures from cascading and improves resilience. Hystrix uses concepts like thread pooling, timeouts, circuit breakers, and fallbacks to achieve reliability. It provides commands for synchronous and asynchronous access to remote resources, and can be configured using properties or code. Hystrix also includes a dashboard for monitoring metrics and failures.