
verschiedene Modelle von Nebenläufigkeit am Beispiel Ruby (wicmp11)
Chaos Computer Club - recent events feed · duckling
February 27, 202651m 14s
Audio is streamed directly from the publisher (cdn.media.ccc.de) as published in their RSS feed. Play Podcasts does not host this file. Rights-holders can request removal through the copyright & takedown page.
Show Notes
In den Nebenläufigkeitsmodellen gibt es Threads, Prozesse, Actors (Golang-Goroutines, Ruby-Ractors), Coroutinen (Ruby Fibers, Haskell Lazy Evaluation). Außerdem gibt es Abstraktions-Libraries wie concurrent-ruby.
Das kann man dann noch mit verschieden Interpretern kreuzen und erhält einen bunten Blumenstrauß von Knieschüssen.
Wir wollen uns die Modelle anschauen und dann mal ganz konkret auf ein Stück Software anwenden:
OpenVox Server ist in einer Mischung aus Clojure und Ruby geschrieben. Beide Sprachen laufen auf der Java-Virtual-Machine (JVM) und bringen einen Moloch von Software zum laufen. Die Frage ist, ob man eine der Sprachen sinnvoll abschütteln kann und ob man es schafft den Interpreter zu wechseln.
Schwerpunkt wechselt von OpenVox auf Nebenläufigkeitskonzepte. Die Beschreibung wurde für einen anderen Talk erarbeitet:
Zwischenspiel: Java-Limits "jvm pain points"
- https://dev.to/betadots/scaling-puppet-infrastructure-3p2o#scaling-beyond-jruby-limits
- max 32 jrubies
- max 2GByte reserved code cache
- memory alloc
Ruby Performance
- JRuby
- MRI
- `rvm list known`
- maglev - discontinued
- ree - discontinued looong ago
- mruby - C integration
- truffleruby - experimental Java standard foreign function interface - performance bad
- rbx - dead
- jruby - jruby-10 ruby3.1
- mri-3.3, mri-3.4, mri-4.0
- Gem::concurrent
https://github.com/ruby-concurrency/concurrent-ruby/blob/master/lib/concurrent-ruby/concurrent/hash.rb#L17-L23
- Ractors
- Gobal Interpreter Lock
- no shared state
- Threads
- just in time compiler
- jruby
OpenVox Server current architectur
- Clojure - jar, DSL
- Clojars.org library, vgl rubygems.org
- Compiler
- Compile - Templates
- CA-Prozess
- CA-API
- PuppetDB - Exported Resources
- PuppetDB - API
- ENC
OpenVox MRI Architecture
- Multi Process
Bonus:
- Metrics von Server
- Metrics von Agent
Backup:
- Fibers - Enumerator.produce(0).map { _1 + 1} .filter { _1.odd? }.first(10)
Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://cfp.w.icmp.camp/wicmp11/talk/UVPTN9/
Topics
402026wicmp11Raum Meltdownwicmp11-deuwicmp11Day 2