summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2015-01-07 15:03:04 +0000
committerSimon MacMullen <simon@rabbitmq.com>2015-01-07 15:03:04 +0000
commit6a9d12c856768635df999b059666bcb92982a213 (patch)
tree686ee9b5ad81eb0ebcef8b691e8d350242a89fbd
parentf869f99612facf92219be406ef62ec7c836644ae (diff)
downloadrabbitmq-server-bug26522.tar.gz
More stats (and rename the existing ones).bug26522
-rw-r--r--src/file_handle_cache.erl10
-rw-r--r--src/file_handle_cache_stats.erl13
-rw-r--r--src/rabbit_misc.erl8
-rw-r--r--src/rabbit_msg_store.erl2
-rw-r--r--src/rabbit_queue_index.erl5
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,
[<<JPrefix:?JPREFIX_BITS, SeqId:?SEQ_BITS>> || 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, [<<?PUB_PREFIX:?PUB_PREFIX_BITS,
(bool_to_int(IsPersistent)):1,
@@ -906,6 +909,7 @@ write_entry_to_segment(RelSeq, {Pub, Del, Ack}, Hdl) ->
_ ->
Binary = <<?REL_SEQ_ONLY_PREFIX:?REL_SEQ_ONLY_PREFIX_BITS,
RelSeq:?REL_SEQ_BITS>>,
+ 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, <<?PUB_PREFIX:?PUB_PREFIX_BITS,
IsPersistNum:1, RelSeq:?REL_SEQ_BITS>>} ->