I don't believe that you'll be able to store these NIF instances in mochiglobal. You can only store things that can be represented as BEAM code.
On Wed, Feb 29, 2012 at 2:46 PM, Joel Meyer <[email protected]> wrote: > Hello, > > I'd like to capture statistics on all calls to my riak_core service and > the execution time of vnode commands. I looked at folsom_metrics, but for a > service that does 10-30k QPS I'm concerned about the overhead introduced of > doing ets calls. Given that, my current plan was to create several > basho_metrics on startup and store the opaque refs using mochiglobal. Then > my service will make module calls to update the metrics. Will using > basho_metrics in that matter cause problems? > > Here's what I'm thinking: > > -module(freqserver_stats). > > -export([ init/0, > vnode_count/1, > ... ]). > > -define( VNODE_COUNT, freqserver_stats_vnode_count ). > > > ... > > -define( METRICS, > [ { ?VNODE_COUNT, histogram }, > ... ] ). > > -define( STAT(Name), mochiglobal:get(Name) ). > > init() -> > > > F = fun( { S, Type } , _ ) -> > Ref = case Type of > histogram -> basho_metrics_nifs:histogram_new(); > meter -> basho_metrics_nifs:meter_new() > end, > ok = mochiglobal:put( S, Ref ) > end, > lists:foldl( F, [], ?METRICS ). > > vnode_count( Micros ) -> > basho_metrics_nifs:histogram_update( ?STAT( ?VNODE_COUNT ), Micros ). > > I'm also open to better ideas, if people have them. I'm concerned about > back pressure and/or overflowing the message queue if I dedicate a process > to handling these statistics. Let me know if I'm needlessly concerned about > that. > > Thanks, > Joel > > _______________________________________________ > riak-users mailing list > [email protected] > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > >
_______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
