I haven’t made many announcements here in a while, but I’ve published a few new Peep versions. Thank you to @aloukissas and @mjm for your contributions!
Peep v3.2.0
@aloukissas added Peep.Plug, an easy way to expose Peep metrics.
Peep v3.2.1
While encountering an issue with Peep receiving unexpected messages when sending StatsD data via Unix Domain Sockets, @mjm changed Peep processes to ignore unxpected messages, and ignore the shutdown reason when terminating.
Peep v3.3.0
Upon request by my employer, I introduced a new storage engine for Peep metrics that trades reduced lock contention for increased memory usage; :striped
. Rather than storing all metrics in a single ETS table, :striped
uses one ETS table for each scheduler thread.
I don’t exactly recommend that users switch to this storage method unless they are noticing lock contention, which may happen when handling thousands and thousands of metrics of telemetry executions.
Here’s some :lcnt output from a bidder service for RTB ads:
Before:
lock id #tries #collisions collisions [%] time [us] duration [%]
----- --- ------- ------------ --------------- ---------- -------------
db_hash_slot 1856 26338259 668728 2.5390 5685223 55.1090 <- this is Peep!
run_queue 46 25883442 343027 1.3253 1515654 14.6918
db_tab 130 47329791 79 0.0002 1306148 12.6610
process_table 1 1209254 50187 4.1502 1174152 11.3815
drv_ev_state 128 3566618 20546 0.5761 266746 2.5857
proc_msgq 44073 13122428 28383 0.2163 99761 0.9670
alcu_allocator 10 277563 1998 0.7198 46190 0.4477
proc_main 44073 12147699 81435 0.6704 21809 0.2114
pix_lock 1024 669 13 1.9432 7731 0.0749
port_lock 43275 4875630 255 0.0052 3719 0.0360
proc_sig_queue_buffer 128 905902 1603 0.1770 3332 0.0323
erl_db_catree_base_node 122 532594 269 0.0505 2369 0.0230
port_sched_lock 43277 2569013 364 0.0142 469 0.0045
proc_status 44073 8947147 52 0.0006 148 0.0014
proc_btm 44073 1327151 10 0.0008 3 0.0000
After:
lock id #tries #collisions collisions [%] time [us] duration [%]
----- --- ------- ------------ --------------- ---------- -------------
run_queue 46 24209562 727003 3.0030 1555422 15.3873
db_tab 170 39615183 98 0.0002 1052218 10.4093
drv_ev_state 128 2919400 13453 0.4608 115025 1.1379
proc_main 15318 9953578 78592 0.7896 36449 0.3606
port_lock 14753 4085350 592 0.0145 8268 0.0818
alcu_allocator 10 87449 253 0.2893 4058 0.0401
proc_msgq 15318 10917596 6365 0.0583 2867 0.0284
db_hash_slot 4608 22033063 2525 0.0115 2476 0.0245 <- this is Peep!
erl_db_catree_base_node 219 454524 296 0.0651 1239 0.0123
port_sched_lock 14755 2166480 472 0.0218 767 0.0076
proc_status 15318 6785744 133 0.0020 415 0.0041