19. Linked-in Driver
in-process erlang-port,
% acts like an Erlang process
% Message can be sent/recv’d,
less failure-separeted.
Erlang
process
output(..){
?DEMO. ... }
20. message passing
to port
Process
Process
Process
! or
port_command/3 ! or
return
port
socket
22. everything wrapped
OS
driver_alloc, driver_free
driver_enq, driver_deq
driver_monitor_process
erl_driver_select
erl_drv_thread_create, erl_drv_thread_join, erl_drv_mutex_lock, ...
s/erl_drv_/p/g
driver_set_timer, driver_cancel_timer, driver_read_timer
R13B04 API
23. Toke
Most famous in TC-Erlang,
Linked-in driver,
Simple: just what matthew/LShift wants,
to be used in RabbitMQ?.
24. Yatce
Made in Japan by me,
Linked-in driver (0.10)
port_control instead of port_command
interface based on tokyocabinet.idl,
http://bitbucket.org/kuenishi/yatce
25. Yatce 0.10
R13B02
response time vs thruput for each key-value store (with my Dual-core SSD’d MacBook)
3000
2250
average response time (us)
1500
750
0
0 1750 3500 5250 7000
Thruput (qps)
ets dets yatce tcerl
37. Yatce 0.20
R13B03
response time vs thruput for each key-value store (with my Dual-core SSD’d MacBook)
700
525
Response time (us)
350
175
0
0 5000 10000 15000 20000
Throughput (qps)
ets dets yatce