Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory fragmentation is very high in memory store #289

Open
chrisstaite-menlo opened this issue Sep 18, 2023 · 34 comments · Fixed by #294 · May be fixed by #1588
Open

Memory fragmentation is very high in memory store #289

chrisstaite-menlo opened this issue Sep 18, 2023 · 34 comments · Fixed by #294 · May be fixed by #1588

Comments

@chrisstaite-menlo
Copy link
Collaborator

With the following configuration, the storage server running only turbo-cache got OOM killed even though it has 16Gb of storage after running for ~4 days. Not sure if there's a memory leak somewhere in the recent code?

{
  "stores": {
    "CAS_MAIN_STORE": {
      "fast_slow": {
        "fast": {
          "memory": {
            "eviction_policy": {
              // 4gb
              "max_bytes": 4000000000
            }
          }
        },
        "slow": {
          "filesystem": {
            "content_path": "/root/.cache/turbo-cache/content_path-cas",
            "temp_path": "/root/.cache/turbo-cache/tmp_path-cas",
            "eviction_policy": {
              // 150gb.
              "max_bytes": 150000000000,
              // 2gb
              "evict_bytes": 2000000000
            }
          }
        }
      }
    },
    "AC_MAIN_STORE": {
      "fast_slow": {
        "fast": {
          "memory": {
            "eviction_policy": {
              // 500mb
              "max_bytes": 500000000
            }
          }
        },
        "slow": {
           "filesystem": {
             "content_path": "/root/.cache/turbo-cache/content_path-cas_ac",
             "temp_path": "/root/.cache/turbo-cache/tmp_path-cas_ac",
             "eviction_policy": {
                // 10gb.
                "max_bytes": 10000000000,
             }
          }
        }
      }
    }
  },
  "servers": [{
    "listen_address": "0.0.0.0:50052",
    "services": {
      "cas": {
        "main": {
          "cas_store": "CAS_MAIN_STORE"
        },
      },
      "ac": {
        "main": {
          "ac_store": "AC_MAIN_STORE"
        }
      },
      "capabilities": {},
      "bytestream": {
        "cas_stores": {
          "main": "CAS_MAIN_STORE",
        },
        // According to https://github.com/grpc/grpc.github.io/issues/371 16KiB - 64KiB is optimal.
        "max_bytes_per_stream": 64000, // 64kb.
      }
    }
  }]
}
@allada
Copy link
Member

allada commented Sep 18, 2023 via email

@allada
Copy link
Member

allada commented Sep 19, 2023

Thinking about this, i wounder if the evicting map's hashmap is too big due to so many files?

If we can get stats on how many files are on disk I can do some napkin math on it.

@chrisstaite-menlo
Copy link
Collaborator Author

chrisstaite-menlo commented Sep 19, 2023

CAS:

ls -l | wc -l
10152373

AC:

ls -l | wc -l
3181048

After running for a 16 hours:

root       843  4.6 64.3 16583600 10569268 ?   Ssl  Sep18  48:09 turbo-cache

After restart:

root     12353  179 20.0 6579432 3300808 ?     Ssl  10:42   9:54 turbo-cache

For some reason my metrics endpoint is only showing connected clients. Is there something I need to do to enable the eviction map stats?

@allada
Copy link
Member

allada commented Sep 19, 2023

I'll look into this soon. I'll use some memory profilers:
https://github.com/jemalloc/jemalloc/wiki/Use-Case%3A-Leak-Checking
https://github.com/tikv/jemallocator

As for the metrics, there's probably a store that is not properly publishing down-stream store's metrics, or the version of TurboCache you are using is out of date.

@chrisstaite-menlo
Copy link
Collaborator Author

chrisstaite-menlo commented Sep 21, 2023

Yes, it was an old version... Updated now and there's plenty of metrics. Will check to confirm if the issue was already solved since this was an old build.

Usage after re-start:

root      9240  138 24.2 7457728 3978868 ?     Ssl  10:35   9:55 turbo-cache

@chrisstaite-menlo
Copy link
Collaborator Author

I reduced the in-memory cache to 3gb but the usage has already got back up there:

Metrics
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_bytes Maximum size of the store in bytes.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_bytes 3000000000
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evict_bytes Number of bytes to evict when the store is full.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evict_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evict_bytes 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_anchor_time_timestamp Anchor time for the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_anchor_time_timestamp gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_anchor_time_timestamp 1695292526
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_seconds Maximum number of seconds to keep an item in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_seconds gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_seconds 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_count Maximum number of items to keep in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_count gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_max_count 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_sum_store_size_bytes Total size of all items in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_sum_store_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_sum_store_size_bytes 2999786011
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_items_in_store_total Mumber of items in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_items_in_store_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_items_in_store_total 405857
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_oldest_item_timestamp Timestamp of the oldest item in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_oldest_item_timestamp gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_oldest_item_timestamp 1695281339
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_newest_item_timestamp Timestamp of the newest item in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_newest_item_timestamp gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_newest_item_timestamp 1695274491
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_items_total_last_ts The timestamp of when evicted_items_total was last published.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_items_total_last_ts gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_items_total_last_ts 1695310561
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_items_total Number of items evicted from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_items_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_items_total 231958
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_bytes Number of bytes evicted from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_evicted_bytes 2065066605
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_lifetime_inserted_bytes Number of bytes inserted into the store since it was created.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_lifetime_inserted_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_lifetime_inserted_bytes 5207696258
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_bytes Number of bytes replaced in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_bytes 142843642
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_items_total_last_ts The timestamp of when replaced_items_total was last published.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_items_total_last_ts gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_items_total_last_ts 1695309862
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_items_total Number of items replaced in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_items_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_replaced_items_total 63015
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_bytes Number of bytes explicitly removed from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_bytes 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_items_total_last_ts The timestamp of when removed_items_total was last published.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_items_total_last_ts gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_items_total_last_ts 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_items_total Number of items explicitly removed from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_items_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_removed_items_total 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.00"} 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.01"} 77
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.03"} 79
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.05"} 79
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.10"} 80
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.30"} 179
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.50"} 659
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.70"} 2477
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.90"} 13747
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.95"} 32320
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.97"} 48874
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.99"} 108672
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="1.00"} 91287864
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_read_buff_size_bytes Size of the configured read buffer size.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_read_buff_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_read_buff_size_bytes 32768
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_active_drop_spawns_total Number of active drop spawns.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_active_drop_spawns_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_active_drop_spawns_total 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_labels Path to the configured temp path.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_labels info
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_labels_info{temp_path="/root/.cache/turbo-cache/tmp_path-cas"} 1
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_labels Path to the configured content path.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_labels info
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_labels_info{content_path="/root/.cache/turbo-cache/content_path-cas"} 1
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_bytes Maximum size of the store in bytes.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_bytes 150000000000
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evict_bytes Number of bytes to evict when the store is full.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evict_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evict_bytes 2000000000
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_anchor_time_timestamp Anchor time for the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_anchor_time_timestamp gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_anchor_time_timestamp 1695292526
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_seconds Maximum number of seconds to keep an item in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_seconds gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_seconds 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_count Maximum number of items to keep in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_count gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_max_count 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_sum_store_size_bytes Total size of all items in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_sum_store_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_sum_store_size_bytes 149231110251
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_items_in_store_total Mumber of items in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_items_in_store_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_items_in_store_total 7964095
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_oldest_item_timestamp Timestamp of the oldest item in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_oldest_item_timestamp gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_oldest_item_timestamp 1689088283
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_newest_item_timestamp Timestamp of the newest item in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_newest_item_timestamp gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_newest_item_timestamp 1695274491
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_items_total_last_ts The timestamp of when evicted_items_total was last published.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_items_total_last_ts gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_items_total_last_ts 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_items_total Number of items evicted from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_items_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_items_total 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_bytes Number of bytes evicted from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_evicted_bytes 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_lifetime_inserted_bytes Number of bytes inserted into the store since it was created.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_lifetime_inserted_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_lifetime_inserted_bytes 150501681832
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_bytes Number of bytes replaced in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_bytes 1270571581
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_items_total_last_ts The timestamp of when replaced_items_total was last published.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_items_total_last_ts gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_items_total_last_ts 1695309862
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_items_total Number of items replaced in the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_items_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_replaced_items_total 94025
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_bytes Number of bytes explicitly removed from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_bytes 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_items_total_last_ts The timestamp of when removed_items_total was last published.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_items_total_last_ts gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_items_total_last_ts 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_items_total Number of items explicitly removed from the store.....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_items_total gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_removed_items_total 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.00"} 0
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.01"} 77
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.03"} 79
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.05"} 79
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.10"} 81
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.30"} 237
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.50"} 794
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.70"} 4721
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.90"} 37939
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.95"} 107456
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.97"} 214496
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.99"} 583552
# HELP turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_CAS_MAIN_STORE_turbo_cache_stores_CAS_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="1.00"} 93454440
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_bytes Maximum size of the store in bytes.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_bytes 500000000
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evict_bytes Number of bytes to evict when the store is full.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evict_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evict_bytes 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_anchor_time_timestamp Anchor time for the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_anchor_time_timestamp gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_anchor_time_timestamp 1695292727
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_seconds Maximum number of seconds to keep an item in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_seconds gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_seconds 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_count Maximum number of items to keep in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_count gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_max_count 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_sum_store_size_bytes Total size of all items in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_sum_store_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_sum_store_size_bytes 30349783
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_items_in_store_total Mumber of items in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_items_in_store_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_items_in_store_total 50360
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_oldest_item_timestamp Timestamp of the oldest item in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_oldest_item_timestamp gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_oldest_item_timestamp 1695292617
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_newest_item_timestamp Timestamp of the newest item in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_newest_item_timestamp gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_newest_item_timestamp 1695274894
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_items_total_last_ts The timestamp of when evicted_items_total was last published.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_items_total_last_ts gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_items_total_last_ts 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_items_total Number of items evicted from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_items_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_items_total 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_bytes Number of bytes evicted from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_evicted_bytes 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_lifetime_inserted_bytes Number of bytes inserted into the store since it was created.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_lifetime_inserted_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_lifetime_inserted_bytes 30438702
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_bytes Number of bytes replaced in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_bytes 88919
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_items_total_last_ts The timestamp of when replaced_items_total was last published.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_items_total_last_ts gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_items_total_last_ts 1695305115
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_items_total Number of items replaced in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_items_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_replaced_items_total 149
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_bytes Number of bytes explicitly removed from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_bytes 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_items_total_last_ts The timestamp of when removed_items_total was last published.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_items_total_last_ts gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_items_total_last_ts 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_items_total Number of items explicitly removed from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_items_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_removed_items_total 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.00"} 503
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.01"} 521
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.03"} 531
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.05"} 539
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.10"} 553
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.30"} 583
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.50"} 602
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.70"} 621
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.90"} 651
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.95"} 668
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.97"} 679
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="0.99"} 701
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_fast_evicting_map_item_size_bytes{quantile="1.00"} 857
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_read_buff_size_bytes Size of the configured read buffer size.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_read_buff_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_read_buff_size_bytes 32768
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_active_drop_spawns_total Number of active drop spawns.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_active_drop_spawns_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_active_drop_spawns_total 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_labels Path to the configured temp path.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_labels info
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_labels_info{temp_path="/root/.cache/turbo-cache/tmp_path-cas_ac"} 1
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_labels Path to the configured content path.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_labels info
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_labels_info{content_path="/root/.cache/turbo-cache/content_path-cas_ac"} 1
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_bytes Maximum size of the store in bytes.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_bytes 10000000000
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evict_bytes Number of bytes to evict when the store is full.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evict_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evict_bytes 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_anchor_time_timestamp Anchor time for the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_anchor_time_timestamp gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_anchor_time_timestamp 1695292727
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_seconds Maximum number of seconds to keep an item in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_seconds gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_seconds 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_count Maximum number of items to keep in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_count gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_max_count 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_sum_store_size_bytes Total size of all items in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_sum_store_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_sum_store_size_bytes 2001083977
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_items_in_store_total Mumber of items in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_items_in_store_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_items_in_store_total 3297494
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_oldest_item_timestamp Timestamp of the oldest item in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_oldest_item_timestamp gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_oldest_item_timestamp 1673463754
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_newest_item_timestamp Timestamp of the newest item in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_newest_item_timestamp gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_newest_item_timestamp 1695274894
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_items_total_last_ts The timestamp of when evicted_items_total was last published.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_items_total_last_ts gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_items_total_last_ts 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_items_total Number of items evicted from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_items_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_items_total 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_bytes Number of bytes evicted from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_evicted_bytes 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_lifetime_inserted_bytes Number of bytes inserted into the store since it was created.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_lifetime_inserted_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_lifetime_inserted_bytes 2001269864
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_bytes Number of bytes replaced in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_bytes 185887
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_items_total_last_ts The timestamp of when replaced_items_total was last published.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_items_total_last_ts gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_items_total_last_ts 1695305115
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_items_total Number of items replaced in the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_items_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_replaced_items_total 311
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_bytes Number of bytes explicitly removed from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_bytes 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_items_total_last_ts The timestamp of when removed_items_total was last published.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_items_total_last_ts gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_items_total_last_ts 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_items_total Number of items explicitly removed from the store.....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_items_total gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_removed_items_total 0
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.00"} 400
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.01"} 514
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.03"} 523
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.05"} 529
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.10"} 542
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.30"} 577
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.50"} 599
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.70"} 622
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.90"} 664
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.95"} 721
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.97"} 759
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="0.99"} 812
# HELP turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes Stats about the first 1_000_000 items in the store (these are newest items in the store).....
# TYPE turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes gauge
turbo_cache_stores_AC_MAIN_STORE_turbo_cache_stores_AC_MAIN_STORE_slow_evicting_map_item_size_bytes{quantile="1.00"} 182295

@allada
Copy link
Member

allada commented Sep 21, 2023

I don't know how much memory it says the system is using now from those metrics, but here's a little bit of a break down that I see:

(DigestInfo{40}, EvictionItem<Arc<FileEntryImpl{104}>>{16})                        = 160 bytes

CAS memory data = 2999786011                                                       = 3000M
CAS memory overhead = 405857 (item in store) * 160 (memory footprint)              = 64M
CAS filesystem memory overhead = 7964095 (items in store) * 160 (memory footprint) = 1300M

AC memory data = 30349783                                                          = 30M
AC memory overhead = 50360 (items in store) * 160 (memory footprint)               = 8M
AC filesystem memory overhead = 3297494 * 160 (memory footprint)                   = 530M
TOTAL = ~5G

@chrisstaite-menlo
Copy link
Collaborator Author

root      9240 14.7 87.0 19491160 14301976 ?   Ssl  10:35  49:04 turbo-cache

14Gb of usage.

@allada
Copy link
Member

allada commented Sep 21, 2023

We are talking maybe 1/2 the ram is accounted for. Can you keep track of this over a day or two and see how it is growing?

I'll try and cut out some time soon to properly memory profile it.

I'm hoping it is not some zombie futures or something in the tokio runtime.

@allada
Copy link
Member

allada commented Sep 21, 2023

I came across this, which might be some of the issues (memory fragmentation):
https://www.reddit.com/r/rust/comments/x9bq8k/bizarre_memory_leak_caused_by_tokio_runtime/

It might be worth trying a different allocator that deals with fragmentation better.

@allada
Copy link
Member

allada commented Sep 21, 2023

@chrisstaite-menlo , can you try this branch and compile with cargo --release --bin cas ?

https://github.com/TraceMachina/turbo-cache/tree/test-jmalloc (or just apply the latest commit in that branch)

@allada
Copy link
Member

allada commented Sep 22, 2023

Looking into this, I've used a few tools to diagnose this. The only thing showing interesting results is massif (valgrind --tool=massif --stacks=no --depth=32 ./target/release/cas $PWD/config/examples/basic_cas.json).

The way i'm testing is by modifying the basic_cas.json file to use fast_slow store with memory + filesystem store and then compiling turbo-cache over and over. It showed some growing, but very slowly. It is possible that it's a redharing though.

I also tried: https://docs.rs/dhat/latest/dhat/
I modified main_cas.rs to timeout the main function and then cleanup all known variables before shutdown. The results show that rust's allocation sees 56k of memory usage at shutdown and 36M at peak. I inspected those 56k and it looks like all non-issue static items.

This hints there is not a proper leak, but it is possible that somewhere the program is not dropping when it is expected. I also did disable metrics for this test, so it is possible that metrics are causing it (but unlikely).

(the search continues)

@chrisstaite-menlo
Copy link
Collaborator Author

I tried building with your branch but I get:

  thread 'main' panicked at 'failed to execute command: No such file or directory (os error 2)', /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tikv-jemalloc-sys-0.5.4+5.3.0-patched/build.rs:347:19

@chrisstaite-menlo
Copy link
Collaborator Author

Ah, it needed make installing... what a nice error message.

@chrisstaite-menlo
Copy link
Collaborator Author

After restart with jemalloc:

root     26254  173 16.5 8488440 2720616 ?     Ssl  13:44   8:54 turbo-cache

@allada
Copy link
Member

allada commented Sep 22, 2023

I might have a lead. Attached is a trace file that you can decode by uploading to:
https://nnethercote.github.io/dh_view/dh_view.html

dhat-heap.txt

This branch holds onto the main future in a static so it does not go out of scope, but I make sure there are no active requests when the report is generated and everything should be idle.

The part of interest is:
image

@allada
Copy link
Member

allada commented Sep 22, 2023

@chrisstaite-menlo, can you possibly try removing FastSlowStore and MemoryStore? I'm hoping that the kernel's disk cache might make up for most of the performance loss of loosing MemoryStore.

I'm still looking into it, but it'd be nice to narrow down the repro case, since MemoryStore screws with metrics a lot.

@allada
Copy link
Member

allada commented Sep 22, 2023

One idea is that it's not a memory "leak", but rather a memory inefficiency...

Bytes has a very efficient API, but has some gotchas. What might be happening it is holding onto a reference to a Vec<u8> inside Bytes that contains more than just the bytes that are referenced.

The way Bytes works is that it allows you to "slice" off parts of a message and internally does book-keeping to keep you from needing to make a copy, but it will likely end up holding a pointer to the entire message for efficiency. Internally it makes a full copy of the data to prevent this, but there's a condition that it does not make a fully copy:
https://github.com/TraceMachina/turbo-cache/blob/fb6e1fd7741852cfe894a9fa7dda1b1106e8cce0/cas/store/memory_store.rs#L98

@allada
Copy link
Member

allada commented Sep 22, 2023

@chrisstaite-menlo, before doing what I asked above, can we try this branch?
https://github.com/TraceMachina/turbo-cache/tree/always-copy-in-memory-store

@chrisstaite
Copy link
Contributor

Will be Tuesday before I can try. Will give time for the jemalloc version to soak.

@chrisstaite-menlo
Copy link
Collaborator Author

Just checked up after the weekend and it has only been up 19 hours meaning it must have OOMed and restarted yesterday. This is with the jemalloc version.

@chrisstaite-menlo
Copy link
Collaborator Author

Re-building with the always-copy commit now, will report back.

@chrisstaite-menlo
Copy link
Collaborator Author

After running quite a lot of builds with that change in the memory looks like this (jemalloc change removed):

root     23359 21.2 35.9 9466668 5901968 ?     Ssl  08:04  37:54 turbo-cache

Still a little early to tell, but I think that might be behaving.

@allada
Copy link
Member

allada commented Sep 26, 2023

After running quite a lot of builds with that change in the memory looks like this (jemalloc change removed):

root     23359 21.2 35.9 9466668 5901968 ?     Ssl  08:04  37:54 turbo-cache

Still a little early to tell, but I think that might be behaving.

Yeah, it's early to say, but there's a 50% chance this is it. There is no true leak, there's something holding a pointer because if I destroy the root future memory only references static stuff (about 65k).

I'm also pretty sure it's memory store, because I got nothing when I used only filesystem store.

@allada
Copy link
Member

allada commented Feb 11, 2024

I'm going to open this back up, as I believe this is still happening, it is just reduced now.

From my little research I've done so far it appears that glibc's allocator is horrible for long-lived data like memory store and most people recommend using jemalloc.

So this ticket is now more about testing jemalloc and seeing if it's worth adding the dependency.

@allada allada reopened this Feb 11, 2024
@allada allada changed the title OOM issue after running for a while Memory fragmentation is very high in memory store Feb 11, 2024
@MarcusSorealheis
Copy link
Collaborator

MarcusSorealheis commented Feb 11, 2024

We need to add a soak test to our internal infrastructure. We obviously cannot block PRs for a week but should know if a problem surfaces.

@allada
Copy link
Member

allada commented Mar 18, 2024

@chrisstaite-menlo, any update if this change fixed your issues?

I'd like to begin tuning mimalloc and close this ticket out.

ref: #749

@chrisstaite-menlo
Copy link
Collaborator Author

@allada currently getting 3.5 days before it gets OOM'd which is much better than the .5 days previously. Have yet to add in the environment variable as requested.

@chrisstaite-menlo
Copy link
Collaborator Author

Have just re-started with MIMALLOC_PAGE_RESET=1 set. Will let you know how it does.

@allada
Copy link
Member

allada commented Mar 26, 2024

I spoke to @chrisstaite-menlo in slack and he said that setting MIMALLOC_PAGE_RESET didn't help much. I have since suggested using a size_partitioning_store config with ~200Mb of size for the memory side and send the higher to a noop store and wrap in a fast_slow store. I suspect that very large assets are being uploaded at the same time and running out of memory before they can be evicted for being too big (due to how memory_store works).

@chrisstaite-menlo
Copy link
Collaborator Author

With the size partitioning store, the memory usage has grown from 3.3g to 3.8g over 13 days. This seems like a reasonably high amount still considering the harsh 100mb in-memory cache and only caching objects of 100kb. Will continue to monitor to see if it increases any more over time. Still, staying up longer than 48 hours is a big improvement.

@allada
Copy link
Member

allada commented Apr 11, 2024

Great! Are you by chance using an image built with nix? If so, it might be worth trying because in my testing the memory seemed much more stable because it uses musl + mimalloc.

@chrisstaite-menlo
Copy link
Collaborator Author

Yes, using a nix image.

@chrisstaite-menlo
Copy link
Collaborator Author

chrisstaite-menlo commented Apr 12, 2024

Now up to 3.9g, there can't be any more storage being used since they are all maxed out. Therefore I believe there is a small memory leak occurring somehow. Virtual memory usage is at 164.1g.

allada added a commit to allada/nativelink-fork that referenced this issue Feb 17, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

closes: TraceMachina#289
@allada allada linked a pull request Feb 17, 2025 that will close this issue
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly, significantly decreased the number of sys-calls
managing memory and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly decreasing the number of sys-calls managing memory
and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 18, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly decreasing the number of sys-calls managing memory
and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
allada added a commit to allada/nativelink-fork that referenced this issue Feb 19, 2025
MemoryStore now pre-allocates max_bytes from the eviction policy,
then installs a custom allocator in that pool that the store will
use. In testing, memory fragmentation appears to have dropped
significantly decreasing the number of sys-calls managing memory
and slightly reduced user time.

In addition, we remove two full copies of our data when we store
it in the memory store.

This PR also adds two new crates (likely to be published).

"Heap Allocator"
  Fixed heap allocator based on the TLSF (Two-Level Segregated
  Fit) algorithm. TLSF is a fast, constant-time memory allocation
  algorithm designed for real-time applications. It organizes free
  memory into segregated lists based on block sizes, allowing for
  quick allocation and deallocation with minimal fragmentation.

"Alloc Bytes"
  Provides custom byte buffers allocated using a user-provided
  allocator. It offers both mutable and immutable byte buffers,
  enabling efficient memory allocation strategies in systems with
  custom memory requirements.

closes: TraceMachina#289
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants