Don't time fetches due to SQN checks

SQN checks are all background processes
This commit is contained in:
Martin Sumner 2022-03-10 11:42:33 +00:00
parent 656900e9ec
commit fb490b9af7

View file

@ -1450,7 +1450,8 @@ roll_memory(State, true) ->
%% the result tuple includes the level at which the result was found. %% the result tuple includes the level at which the result was found.
timed_fetch_mem(Key, Hash, Manifest, L0Cache, L0Index, Timings) -> timed_fetch_mem(Key, Hash, Manifest, L0Cache, L0Index, Timings) ->
SW = os:timestamp(), SW = os:timestamp(),
{R, Level} = fetch_mem(Key, Hash, Manifest, L0Cache, L0Index), {R, Level} =
fetch_mem(Key, Hash, Manifest, L0Cache, L0Index, fun timed_sst_get/4),
UpdTimings = update_timings(SW, Timings, R, Level), UpdTimings = update_timings(SW, Timings, R, Level),
{R, UpdTimings}. {R, UpdTimings}.
@ -1462,10 +1463,10 @@ timed_fetch_mem(Key, Hash, Manifest, L0Cache, L0Index, Timings) ->
%% Fetch the result from the penciller, starting by looking in the memory, %% Fetch the result from the penciller, starting by looking in the memory,
%% and if it is not found looking down level by level through the LSM tree. %% and if it is not found looking down level by level through the LSM tree.
plain_fetch_mem(Key, Hash, Manifest, L0Cache, L0Index) -> plain_fetch_mem(Key, Hash, Manifest, L0Cache, L0Index) ->
R = fetch_mem(Key, Hash, Manifest, L0Cache, L0Index), R = fetch_mem(Key, Hash, Manifest, L0Cache, L0Index, fun sst_get/4),
element(1, R). element(1, R).
fetch_mem(Key, Hash, Manifest, L0Cache, L0Index) -> fetch_mem(Key, Hash, Manifest, L0Cache, L0Index, FetchFun) ->
PosList = PosList =
case L0Index of case L0Index of
none -> none ->
@ -1476,7 +1477,7 @@ fetch_mem(Key, Hash, Manifest, L0Cache, L0Index) ->
L0Check = leveled_pmem:check_levelzero(Key, Hash, PosList, L0Cache), L0Check = leveled_pmem:check_levelzero(Key, Hash, PosList, L0Cache),
case L0Check of case L0Check of
{false, not_found} -> {false, not_found} ->
fetch(Key, Hash, Manifest, 0, fun timed_sst_get/4); fetch(Key, Hash, Manifest, 0, FetchFun);
{true, KV} -> {true, KV} ->
{KV, memory} {KV, memory}
end. end.
@ -1515,6 +1516,9 @@ timed_sst_get(PID, Key, Hash, Level) ->
T0 = timer:now_diff(os:timestamp(), SW), T0 = timer:now_diff(os:timestamp(), SW),
log_slowfetch(T0, R, PID, Level, ?SLOW_FETCH). log_slowfetch(T0, R, PID, Level, ?SLOW_FETCH).
sst_get(PID, Key, Hash, Level) ->
leveled_sst:sst_get(PID, Key, Hash).
log_slowfetch(T0, R, PID, Level, FetchTolerance) -> log_slowfetch(T0, R, PID, Level, FetchTolerance) ->
case {T0, R} of case {T0, R} of
{T, R} when T < FetchTolerance -> {T, R} when T < FetchTolerance ->