Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions doc/admin-guide/logging/cache-results.en.rst
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ TCP_HIT
A valid copy of the requested object was in the cache and Traffic Server sent
the object to the client.

.. _crc-tcp-cf-hit:

TCP_CF_HIT
-------

A valid copy of the requested object is being updated in the cache and Traffic Server sent
the object to the client.

.. _crc-tcp-miss:

TCP_MISS
Expand Down
3 changes: 2 additions & 1 deletion doc/admin-guide/logging/formatting.en.rst
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ crsc Proxy Cache Cache Result Sub-Code. More specific code to complement the
Cache Result Code.
chm Proxy Cache Cache Hit-Miss status. Specifies the level of cache from
which this request was served by |TS|. Currently supports
only RAM (``HIT_RAM``) vs disk (``HIT_DISK``).
only RAM (``HIT_RAM``), disk (``HIT_DISK``) and Read While Write (``HIT_RWW``).
HIT_RWW could imply either HIT_RAM or HIT_DISK.
cwr Proxy Cache Cache Write Result. Specifies the result of attempting to
write to cache: not relevant (``-``), no cache write
(``WL_MISS``), write interrupted (``INTR``), error while
Expand Down
1 change: 1 addition & 0 deletions doc/admin-guide/monitoring/statistics/core/cache.en.rst
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ Cache
.. ts:stat:: global proxy.process.http.cache_hit_fresh integer
.. ts:stat:: global proxy.process.http.cache_hit_ims integer
.. ts:stat:: global proxy.process.http.cache_hit_mem_fresh integer
.. ts:stat:: global proxy.process.http.cache_hit_rww integer
.. ts:stat:: global proxy.process.http.cache_hit_revalidated integer
.. ts:stat:: global proxy.process.http.cache_hit_stale_served integer
.. ts:stat:: global proxy.process.http.cache_lookups integer
Expand Down
4 changes: 3 additions & 1 deletion proxy/hdrs/HTTP.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ enum SquidLogCode {
SQUID_LOG_ERR_NO_RELAY = 'C',
SQUID_LOG_ERR_DISK_IO = 'D',
SQUID_LOG_ERR_ZERO_SIZE_OBJECT = 'E',
SQUID_LOG_TCP_CF_HIT = 'F', // Collapsed forwarding HIT also known as Read while write hit
SQUID_LOG_ERR_PROXY_DENIED = 'G',
SQUID_LOG_ERR_WEBFETCH_DETECTED = 'H',
SQUID_LOG_ERR_FUTURE_1 = 'I',
Expand Down Expand Up @@ -236,7 +237,8 @@ enum SquidHitMissCode {
SQUID_HIT_SSD = SQUID_HIT_LEVEL_2,
SQUID_HIT_DISK = SQUID_HIT_LEVEL_3,
SQUID_HIT_CLUSTER = SQUID_HIT_LEVEL_4,
SQUID_HIT_NET = SQUID_HIT_LEVEL_5
SQUID_HIT_NET = SQUID_HIT_LEVEL_5,
SQUID_HIT_RWW = SQUID_HIT_LEVEL_6
};

enum HTTPType {
Expand Down
2 changes: 2 additions & 0 deletions proxy/http/HttpConfig.cc
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,8 @@ register_stat_callbacks()

RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.cache_hit_mem_fresh", RECD_COUNTER, RECP_PERSISTENT,
(int)http_cache_hit_mem_fresh_stat, RecRawStatSyncCount);
RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.cache_hit_rww", RECD_COUNTER, RECP_PERSISTENT,
(int)http_cache_hit_rww_stat, RecRawStatSyncCount);

RecRegisterRawStat(http_rsb, RECT_PROCESS, "proxy.process.http.cache_hit_revalidated", RECD_COUNTER, RECP_PERSISTENT,
(int)http_cache_hit_reval_stat, RecRawStatSyncCount);
Expand Down
1 change: 1 addition & 0 deletions proxy/http/HttpConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ enum {
// cache result stats
http_cache_hit_fresh_stat,
http_cache_hit_mem_fresh_stat,
http_cache_hit_rww_stat,
http_cache_hit_reval_stat,
http_cache_hit_ims_stat,
http_cache_hit_stale_served_stat,
Expand Down
11 changes: 11 additions & 0 deletions proxy/http/HttpTransact.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2933,6 +2933,11 @@ HttpTransact::HandleCacheOpenReadHit(State *s)
SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_FRESH);
}

HttpCacheSM &cache_sm = s->state_machine->get_cache_sm();
TxnDebug("http_trans", "CacheOpenRead --- HIT-FRESH read while write %d", cache_sm.is_readwhilewrite_inprogress());
if (cache_sm.is_readwhilewrite_inprogress())
SET_VIA_STRING(VIA_CACHE_RESULT, VIA_IN_CACHE_RWW_HIT);

if (s->cache_lookup_result == CACHE_LOOKUP_HIT_WARNING) {
build_response_from_cache(s, HTTP_WARNING_CODE_HERUISTIC_EXPIRATION);
} else if (s->cache_lookup_result == CACHE_LOOKUP_HIT_STALE) {
Expand Down Expand Up @@ -8288,6 +8293,11 @@ HttpTransact::client_result_stat(State *s, ink_hrtime total_time, ink_hrtime req
client_transaction_result = CLIENT_TRANSACTION_RESULT_ERROR_CONNECT_FAIL;
break;

case SQUID_LOG_TCP_CF_HIT:
HTTP_INCREMENT_DYN_STAT(http_cache_hit_rww_stat);
client_transaction_result = CLIENT_TRANSACTION_RESULT_HIT_FRESH;
break;

case SQUID_LOG_TCP_MEM_HIT:
HTTP_INCREMENT_DYN_STAT(http_cache_hit_mem_fresh_stat);
// fallthrough
Expand Down Expand Up @@ -8633,6 +8643,7 @@ HttpTransact::update_size_and_time_stats(State *s, ink_hrtime total_time, ink_hr
switch (s->squid_codes.log_code) {
case SQUID_LOG_TCP_HIT:
case SQUID_LOG_TCP_MEM_HIT:
case SQUID_LOG_TCP_CF_HIT:
// It's possible to have two stat's instead of one, if needed.
HTTP_INCREMENT_DYN_STAT(http_tcp_hit_count_stat);
HTTP_SUM_DYN_STAT(http_tcp_hit_user_agent_bytes_stat, user_agent_bytes);
Expand Down
1 change: 1 addition & 0 deletions proxy/http/HttpTransact.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ enum ViaString_t {
VIA_IN_CACHE_STALE = 'S',
VIA_IN_CACHE_FRESH = 'H',
VIA_IN_RAM_CACHE_FRESH = 'R',
VIA_IN_CACHE_RWW_HIT = 'W',
// server stuff
VIA_SERVER_STRING = 's',
VIA_SERVER_ERROR = 'E',
Expand Down
4 changes: 4 additions & 0 deletions proxy/http/HttpTransactHeaders.cc
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,8 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header, char *via_str
// its a cache hit.
if (via_string[VIA_CACHE_RESULT] == VIA_IN_RAM_CACHE_FRESH) {
hit_miss_code = SQUID_HIT_RAM;
} else if (via_string[VIA_CACHE_RESULT] == VIA_IN_CACHE_RWW_HIT) {
hit_miss_code = SQUID_HIT_RWW;
} else { // TODO: Support other cache tiers here
hit_miss_code = SQUID_HIT_RESERVED;
}
Expand Down Expand Up @@ -525,6 +527,8 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header, char *via_str
log_code = SQUID_LOG_TCP_HIT;
} else if (via_string[VIA_CACHE_RESULT] == VIA_IN_RAM_CACHE_FRESH) {
log_code = SQUID_LOG_TCP_MEM_HIT;
} else if (via_string[VIA_CACHE_RESULT] == VIA_IN_CACHE_RWW_HIT) {
log_code = SQUID_LOG_TCP_CF_HIT; // Read while write HIT
} else {
log_code = SQUID_LOG_TCP_MISS;
}
Expand Down
6 changes: 3 additions & 3 deletions proxy/logging/Log.cc
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ Log::init_fields()

Ptr<LogFieldAliasTable> cache_code_map = make_ptr(new LogFieldAliasTable);
cache_code_map->init(
52, SQUID_LOG_EMPTY, "UNDEFINED", SQUID_LOG_TCP_HIT, "TCP_HIT", SQUID_LOG_TCP_DISK_HIT, "TCP_DISK_HIT", SQUID_LOG_TCP_MEM_HIT,
53, SQUID_LOG_EMPTY, "UNDEFINED", SQUID_LOG_TCP_HIT, "TCP_HIT", SQUID_LOG_TCP_DISK_HIT, "TCP_DISK_HIT", SQUID_LOG_TCP_MEM_HIT,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have a constant for the 53?

"TCP_MEM_HIT", SQUID_LOG_TCP_MISS, "TCP_MISS", SQUID_LOG_TCP_EXPIRED_MISS, "TCP_EXPIRED_MISS", SQUID_LOG_TCP_REFRESH_HIT,
"TCP_REFRESH_HIT", SQUID_LOG_TCP_REF_FAIL_HIT, "TCP_REFRESH_FAIL_HIT", SQUID_LOG_TCP_REFRESH_MISS, "TCP_REFRESH_MISS",
SQUID_LOG_TCP_CLIENT_REFRESH, "TCP_CLIENT_REFRESH_MISS", SQUID_LOG_TCP_IMS_HIT, "TCP_IMS_HIT", SQUID_LOG_TCP_IMS_MISS,
Expand All @@ -632,7 +632,7 @@ Log::init_fields()
"ERR_CANNOT_FETCH", SQUID_LOG_ERR_NO_RELAY, "ERR_NO_RELAY", SQUID_LOG_ERR_DISK_IO, "ERR_DISK_IO",
SQUID_LOG_ERR_ZERO_SIZE_OBJECT, "ERR_ZERO_SIZE_OBJECT", SQUID_LOG_ERR_PROXY_DENIED, "ERR_PROXY_DENIED",
SQUID_LOG_ERR_WEBFETCH_DETECTED, "ERR_WEBFETCH_DETECTED", SQUID_LOG_ERR_FUTURE_1, "ERR_FUTURE_1", SQUID_LOG_ERR_LOOP_DETECTED,
"ERR_LOOP_DETECTED", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN");
"ERR_LOOP_DETECTED", SQUID_LOG_ERR_UNKNOWN, "ERR_UNKNOWN", SQUID_LOG_TCP_CF_HIT, "TCP_CF_HIT");

Ptr<LogFieldAliasTable> cache_subcode_map = make_ptr(new LogFieldAliasTable);
cache_subcode_map->init(2, SQUID_SUBCODE_EMPTY, "NONE", SQUID_SUBCODE_NUM_REDIRECTIONS_EXCEEDED, "NUM_REDIRECTIONS_EXCEEDED");
Expand All @@ -643,7 +643,7 @@ Log::init_fields()
SQUID_HIT_LEVEL_3, "HIT_DISK", // Also SQUID_HIT_DISK
SQUID_HIT_LEVEL_4, "HIT_CLUSTER", // Also SQUID_HIT_CLUSTER
SQUID_HIT_LEVEL_5, "HIT_NET", // Also SQUID_HIT_NET
SQUID_HIT_LEVEL_6, "HIT_LEVEL_6", SQUID_HIT_LEVEL_7, "HIT_LEVEL_7", SQUID_HIT_LEVEL_8, "HIT_LEVEL_8",
SQUID_HIT_LEVEL_6, "HIT_RWW", SQUID_HIT_LEVEL_7, "HIT_LEVEL_7", SQUID_HIT_LEVEL_8, "HIT_LEVEL_8",
SQUID_HIT_LEVEl_9, "HIT_LEVEL_9", SQUID_MISS_NONE, "MISS", SQUID_MISS_HTTP_NON_CACHE,
"MISS_HTTP_NON_CACHE", SQUID_MISS_HTTP_NO_DLE, "MISS_HTTP_NO_DLE", SQUID_MISS_HTTP_NO_LE,
"MISS_HTTP_NO_LE", SQUID_MISS_HTTP_CONTENT, "MISS_HTTP_CONTENT", SQUID_MISS_PRAGMA_NOCACHE,
Expand Down
3 changes: 2 additions & 1 deletion proxy/logging/LogAccess.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2784,7 +2784,8 @@ LogAccess::marshal_cache_collapsed_connection_success(char *buf)

// We increment open_write_tries beyond the max when we want to jump back to the read state for collapsing
if ((m_http_sm->get_cache_sm().get_open_write_tries() > (m_http_sm->t_state.txn_conf->max_cache_open_write_retries)) &&
((code == SQUID_LOG_TCP_HIT) || (code == SQUID_LOG_TCP_MEM_HIT) || (code == SQUID_LOG_TCP_DISK_HIT))) {
((code == SQUID_LOG_TCP_HIT) || (code == SQUID_LOG_TCP_MEM_HIT) || (code == SQUID_LOG_TCP_DISK_HIT) ||
(code == SQUID_LOG_TCP_CF_HIT))) {
// Attempted collapsed connection and got a hit, success
id = 1;
} else if (m_http_sm->get_cache_sm().get_open_write_tries() > (m_http_sm->t_state.txn_conf->max_cache_open_write_retries)) {
Expand Down
13 changes: 13 additions & 0 deletions src/traffic_logstats/logstats.cc
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ struct OriginStats {
struct {
ElapsedStats hit;
ElapsedStats hit_ram;
ElapsedStats hit_rww;
ElapsedStats ims;
ElapsedStats refresh;
ElapsedStats other;
Expand All @@ -144,6 +145,7 @@ struct OriginStats {
struct {
StatsCounter hit;
StatsCounter hit_ram;
StatsCounter hit_rww;
StatsCounter ims;
StatsCounter refresh;
StatsCounter other;
Expand Down Expand Up @@ -424,6 +426,7 @@ class UrlLru
case SQUID_LOG_TCP_REFRESH_HIT:
case SQUID_LOG_TCP_DISK_HIT:
case SQUID_LOG_TCP_MEM_HIT:
case SQUID_LOG_TCP_CF_HIT:
case SQUID_LOG_TCP_REF_FAIL_HIT:
case SQUID_LOG_UDP_HIT:
case SQUID_LOG_UDP_WEAK_HIT:
Expand Down Expand Up @@ -498,6 +501,7 @@ class UrlLru
case SQUID_LOG_TCP_REFRESH_HIT:
case SQUID_LOG_TCP_DISK_HIT:
case SQUID_LOG_TCP_MEM_HIT:
case SQUID_LOG_TCP_CF_HIT:
case SQUID_LOG_TCP_REF_FAIL_HIT:
case SQUID_LOG_UDP_HIT:
case SQUID_LOG_UDP_WEAK_HIT:
Expand Down Expand Up @@ -791,6 +795,7 @@ init_elapsed(OriginStats *stats)
{
stats->elapsed.hits.hit.min = -1;
stats->elapsed.hits.hit_ram.min = -1;
stats->elapsed.hits.hit_rww.min = -1;
stats->elapsed.hits.ims.min = -1;
stats->elapsed.hits.refresh.min = -1;
stats->elapsed.hits.other.min = -1;
Expand Down Expand Up @@ -874,6 +879,12 @@ update_results_elapsed(OriginStats *stat, int result, int elapsed, int size)
update_elapsed(stat->elapsed.hits.hit_ram, elapsed, stat->results.hits.hit_ram);
update_elapsed(stat->elapsed.hits.total, elapsed, stat->results.hits.total);
break;
case SQUID_LOG_TCP_CF_HIT:
update_counter(stat->results.hits.hit_rww, size);
update_counter(stat->results.hits.total, size);
update_elapsed(stat->elapsed.hits.hit_rww, elapsed, stat->results.hits.hit_rww);
update_elapsed(stat->elapsed.hits.total, elapsed, stat->results.hits.total);
break;
case SQUID_LOG_TCP_MISS:
update_counter(stat->results.misses.miss, size);
update_counter(stat->results.misses.total, size);
Expand Down Expand Up @@ -2015,6 +2026,7 @@ print_detail_stats(const OriginStats *stat, bool json, bool concise)

format_line(json ? "hit.direct" : "Cache hit", stat->results.hits.hit, stat->total, json, concise);
format_line(json ? "hit.ram" : "Cache hit RAM", stat->results.hits.hit_ram, stat->total, json, concise);
format_line(json ? "hit.rww" : "Cache hit RWW", stat->results.hits.hit_rww, stat->total, json, concise);
format_line(json ? "hit.ims" : "Cache hit IMS", stat->results.hits.ims, stat->total, json, concise);
format_line(json ? "hit.refresh" : "Cache hit refresh", stat->results.hits.refresh, stat->total, json, concise);
format_line(json ? "hit.other" : "Cache hit other", stat->results.hits.other, stat->total, json, concise);
Expand Down Expand Up @@ -2245,6 +2257,7 @@ print_detail_stats(const OriginStats *stat, bool json, bool concise)

format_elapsed_line(json ? "hit.direct.latency" : "Cache hit", stat->elapsed.hits.hit, json, concise);
format_elapsed_line(json ? "hit.ram.latency" : "Cache hit RAM", stat->elapsed.hits.hit_ram, json, concise);
format_elapsed_line(json ? "hit.rww.latency" : "Cache hit RWW", stat->elapsed.hits.hit_rww, json, concise);
format_elapsed_line(json ? "hit.ims.latency" : "Cache hit IMS", stat->elapsed.hits.ims, json, concise);
format_elapsed_line(json ? "hit.refresh.latency" : "Cache hit refresh", stat->elapsed.hits.refresh, json, concise);
format_elapsed_line(json ? "hit.other.latency" : "Cache hit other", stat->elapsed.hits.other, json, concise);
Expand Down
6 changes: 6 additions & 0 deletions src/traffic_logstats/tests/logstats.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{ "total": {
"hit.direct" : { "req": "19", "req_pct": "47.50", "bytes": "9216303", "bytes_pct": "64.52" },
"hit.ram" : { "req": "8", "req_pct": "20.00", "bytes": "1486946", "bytes_pct": "10.41" },
"hit.rww" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.ims" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.refresh" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
Expand Down Expand Up @@ -114,6 +115,7 @@
"content.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.direct.latency" : { "min": "2", "max": "269", "avg": "59.16", "dev": "88.68" },
"hit.ram.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.rww.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.ims.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.refresh.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.other.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
Expand All @@ -127,6 +129,7 @@
"i.imgur.com": {
"hit.direct" : { "req": "19", "req_pct": "52.78", "bytes": "9216303", "bytes_pct": "64.58" },
"hit.ram" : { "req": "8", "req_pct": "22.22", "bytes": "1486946", "bytes_pct": "10.42" },
"hit.rww" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.ims" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.refresh" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
Expand Down Expand Up @@ -240,6 +243,7 @@
"content.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.direct.latency" : { "min": "2", "max": "269", "avg": "59.16", "dev": "88.68" },
"hit.ram.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.rww.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.ims.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.refresh.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.other.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
Expand All @@ -253,6 +257,7 @@
"i.imgur.com:443": {
"hit.direct" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.ram" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.rww" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.ims" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.refresh" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
Expand Down Expand Up @@ -366,6 +371,7 @@
"content.other" : { "req": "0", "req_pct": "0.00", "bytes": "0", "bytes_pct": "0.00" },
"hit.direct.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.ram.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.rww.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.ims.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.refresh.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
"hit.other.latency" : { "min": "-1", "max": "0", "avg": "0.00", "dev": "0.00" },
Expand Down
2 changes: 2 additions & 0 deletions src/traffic_logstats/tests/logstats.summary
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Request Result Count Percent Bytes Percent
------------------------------------------------------------------------------
Cache hit 19 47.50% 8.79MB 64.52%
Cache hit RAM 8 20.00% 1.42MB 10.41%
Cache hit RWW 0 0.00% 0.00KB 0.00%
Cache hit IMS 0 0.00% 0.00KB 0.00%
Cache hit refresh 0 0.00% 0.00KB 0.00%
Cache hit other 0 0.00% 0.00KB 0.00%
Expand Down Expand Up @@ -157,6 +158,7 @@ Elapsed time stats Min Max Avg Std Deviation
------------------------------------------------------------------------------
Cache hit 2 269 59.16 88.68
Cache hit RAM 0 0 0.00 0.00
Cache hit RWW 0 0 0.00 0.00
Cache hit IMS 0 0 0.00 0.00
Cache hit refresh 0 0 0.00 0.00
Cache hit other 0 0 0.00 0.00
Expand Down