From 6a9d12c856768635df999b059666bcb92982a213 Mon Sep 17 00:00:00 2001 From: Simon MacMullen Date: Wed, 7 Jan 2015 15:03:04 +0000 Subject: More stats (and rename the existing ones). --- src/file_handle_cache.erl | 10 +++++----- src/file_handle_cache_stats.erl | 13 ++++++++++--- src/rabbit_misc.erl | 8 ++++++-- src/rabbit_msg_store.erl | 2 ++ src/rabbit_queue_index.erl | 5 +++++ 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl index 2922e146..6b1502d3 100644 --- a/src/file_handle_cache.erl +++ b/src/file_handle_cache.erl @@ -573,18 +573,18 @@ info(Items) -> gen_server2:call(?SERVER, {info, Items}, infinity). prim_file_read(Hdl, Size) -> file_handle_cache_stats:update( - read, Size, fun() -> prim_file:read(Hdl, Size) end). + io_read, Size, fun() -> prim_file:read(Hdl, Size) end). prim_file_write(Hdl, Bytes) -> file_handle_cache_stats:update( - write, iolist_size(Bytes), fun() -> prim_file:write(Hdl, Bytes) end). + io_write, iolist_size(Bytes), fun() -> prim_file:write(Hdl, Bytes) end). prim_file_sync(Hdl) -> - file_handle_cache_stats:update(sync, fun() -> prim_file:sync(Hdl) end). + file_handle_cache_stats:update(io_sync, fun() -> prim_file:sync(Hdl) end). prim_file_position(Hdl, NewOffset) -> file_handle_cache_stats:update( - seek, fun() -> prim_file:position(Hdl, NewOffset) end). + io_seek, fun() -> prim_file:position(Hdl, NewOffset) end). is_reader(Mode) -> lists:member(read, Mode). @@ -674,7 +674,7 @@ reopen([{Ref, NewOrReopen, Handle = #handle { hdl = closed, RefNewOrReopenHdls] = ToOpen, Tree, RefHdls) -> Mode = case NewOrReopen of new -> Mode0; - reopen -> file_handle_cache_stats:update(reopen), + reopen -> file_handle_cache_stats:update(io_reopen), [read | Mode0] end, case prim_file:open(Path, Mode) of diff --git a/src/file_handle_cache_stats.erl b/src/file_handle_cache_stats.erl index 832f0b3d..de2f90c6 100644 --- a/src/file_handle_cache_stats.erl +++ b/src/file_handle_cache_stats.erl @@ -22,13 +22,20 @@ -define(TABLE, ?MODULE). +-define(COUNT, + [io_reopen, mnesia_ram_tx, mnesia_disk_tx, + msg_store_read, msg_store_write, + queue_index_journal_write, queue_index_write, queue_index_read]). +-define(COUNT_TIME, [io_sync, io_seek]). +-define(COUNT_TIME_BYTES, [io_read, io_write]). + init() -> ets:new(?TABLE, [public, named_table]), - [ets:insert(?TABLE, {{Op, Counter}, 0}) || Op <- [read, write], + [ets:insert(?TABLE, {{Op, Counter}, 0}) || Op <- ?COUNT_TIME_BYTES, Counter <- [count, bytes, time]], - [ets:insert(?TABLE, {{Op, Counter}, 0}) || Op <- [sync, seek], + [ets:insert(?TABLE, {{Op, Counter}, 0}) || Op <- ?COUNT_TIME, Counter <- [count, time]], - [ets:insert(?TABLE, {{Op, Counter}, 0}) || Op <- [reopen], + [ets:insert(?TABLE, {{Op, Counter}, 0}) || Op <- ?COUNT, Counter <- [count]]. update(Op, Bytes, Thunk) -> diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 20d7051c..626341b5 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -522,8 +522,12 @@ execute_mnesia_transaction(TxFun) -> Res = mnesia:sync_transaction(TxFun), DiskLogAfter = mnesia_dumper:get_log_writes(), case DiskLogAfter == DiskLogBefore of - true -> Res; - false -> {sync, Res} + true -> file_handle_cache_stats:update( + mnesia_ram_tx), + Res; + false -> file_handle_cache_stats:update( + mnesia_disk_tx), + {sync, Res} end; true -> mnesia:sync_transaction(TxFun) end diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl index 6c80ddcd..9e3dd1e7 100644 --- a/src/rabbit_msg_store.erl +++ b/src/rabbit_msg_store.erl @@ -473,6 +473,7 @@ write(MsgId, Msg, CState) -> client_write(MsgId, Msg, noflow, CState). read(MsgId, CState = #client_msstate { cur_file_cache_ets = CurFileCacheEts }) -> + file_handle_cache_stats:update(msg_store_read), %% Check the cur file cache case ets:lookup(CurFileCacheEts, MsgId) of [] -> @@ -507,6 +508,7 @@ server_cast(#client_msstate { server = Server }, Msg) -> client_write(MsgId, Msg, Flow, CState = #client_msstate { cur_file_cache_ets = CurFileCacheEts, client_ref = CRef }) -> + file_handle_cache_stats:update(msg_store_write), ok = client_update_flying(+1, MsgId, CState), ok = update_msg_cache(CurFileCacheEts, MsgId, Msg), ok = server_cast(CState, {write, CRef, MsgId, Flow}). diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl index 65118c1a..70121154 100644 --- a/src/rabbit_queue_index.erl +++ b/src/rabbit_queue_index.erl @@ -305,6 +305,7 @@ publish(MsgOrId, SeqId, MsgProps, IsPersistent, State#qistate{unconfirmed_msg = UCM1}; {false, _} -> State end), + file_handle_cache_stats:update(queue_index_journal_write), ok = file_handle_cache:append( JournalHdl, [<<(case IsPersistent of true -> ?PUB_PERSIST_JPREFIX; @@ -795,6 +796,7 @@ deliver_or_ack(_Kind, [], State) -> deliver_or_ack(Kind, SeqIds, State) -> JPrefix = case Kind of ack -> ?ACK_JPREFIX; del -> ?DEL_JPREFIX end, {JournalHdl, State1} = get_journal_handle(State), + file_handle_cache_stats:update(queue_index_journal_write), ok = file_handle_cache:append( JournalHdl, [<> || SeqId <- SeqIds]), @@ -894,6 +896,7 @@ write_entry_to_segment(RelSeq, {Pub, Del, Ack}, Hdl) -> no_pub -> ok; {MsgOrId, MsgProps, IsPersistent} -> + file_handle_cache_stats:update(queue_index_write), file_handle_cache:append( Hdl, [< _ -> Binary = <>, + file_handle_cache_stats:update(queue_index_write), file_handle_cache:append( Hdl, case {Del, Ack} of {del, ack} -> [Binary, Binary]; @@ -952,6 +956,7 @@ load_segment(KeepAcked, #segment { path = Path }) -> end. load_segment_entries(Hdl, KeepAcked, Acc) -> + file_handle_cache_stats:update(queue_index_read), case file_handle_cache:read(Hdl, ?PUB_RECORD_PREFIX_BYTES) of {ok, <>} -> -- cgit v1.2.1