age_cache_simulation/aoi_cache_simulation.ipynb
Tuan-Dat Tran ad4654dd0f fix(simulation): Updated avg_age calculation not only for details.csv, but all avg_age calculation.
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
2024-11-28 16:38:55 +01:00

958 lines
225 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "71f85f2a-423f-44d2-b80d-da9ac8d3961a",
"metadata": {},
"outputs": [],
"source": [
"import simpy\n",
"import random\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"from enum import Enum\n",
"import os\n",
"import shutil\n",
"from tqdm import tqdm\n",
"\n",
"# Types of cache\n",
"class CacheType(Enum):\n",
" LRU = 1\n",
" RANDOM_EVICTION = 2\n",
"\n",
"# Constants\n",
"SEED = 42\n",
"DATABASE_OBJECTS = 100 # Number of objects in the database\n",
"ACCESS_COUNT_LIMIT = 100 # Total time to run the simulation\n",
"EXPERIMENT_BASE_DIR = \"./experiments/\"\n",
"TEMP_BASE_DIR = \"./.aoi_cache/\"\n",
"\n",
"ZIPF_CONSTANT = 2 # Shape parameter for the Zipf distribution (controls skewness) Needs to be: 1< \n",
"\n",
"# Set random seeds\n",
"random.seed(SEED)\n",
"np.random.seed(SEED)\n",
"\n",
"# Initialize simulation environment\n",
"env = simpy.Environment()\n",
"\n",
"os.makedirs(TEMP_BASE_DIR, exist_ok=True)"
]
},
{
"cell_type": "markdown",
"id": "9a37d7a3-3e11-4b89-8dce-6091dd38b16f",
"metadata": {},
"source": [
"How to set certain parameters for specific scenarios\n",
"\n",
"\n",
"| Name | Cache Capacity | MAX_REFRESH_RATE | cache_type | CACHE_TTL |\n",
"| -------------------- | -------------------- | ---------------- | ------------------------- | --------- |\n",
"| Default | DATABASE_OBJECTS | 1< | CacheType.LRU | 5 |\n",
"| No Refresh | DATABASE_OBJECTS | 0 | CacheType.LRU | 5 |\n",
"| Infinite TTL | DATABASE_OBJECTS / 2 | 0 | CacheType.LRU | 0 |\n",
"| Random Eviction (RE) | DATABASE_OBJECTS / 2 | 1< | CacheType.RANDOM_EVICTION | 5 |\n",
"| RE without Refresh | DATABASE_OBJECTS / 2 | 0 | CacheType.RANDOM_EVICTION | 5 |\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "3d0ab5b1-162a-42c8-80a3-d31f763101f1",
"metadata": {},
"outputs": [],
"source": [
"# Configuration (Just example, will be overwritten in next block\n",
"\n",
"CACHE_CAPACITY = DATABASE_OBJECTS # Maximum number of objects the cache can hold\n",
"\n",
"# MAX_REFRESH_RATE is used as the maximum for a uniform\n",
"# distribution for mu.\n",
"# If MAX_REFRESH_RATE is 0, we do not do any refreshes.\n",
"MAX_REFRESH_RATE = 0\n",
"\n",
"cache_type = CacheType.LRU\n",
"\n",
"# CACHE_TTL is used to determin which TTL to set when an\n",
"# object is pulled into the cache\n",
"# If CACHE_TTL is set to 0, the TTL is infinite\n",
"CACHE_TTL = 5\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3ff299ca-ec65-453b-b167-9a0f7728a207",
"metadata": {},
"outputs": [],
"source": [
"configurations = {\n",
" \"default\": (DATABASE_OBJECTS, 10, CacheType.LRU, 5),\n",
" \"No Refresh\": (DATABASE_OBJECTS, 0, CacheType.LRU, 5),\n",
" \"Infinite TTL\": (int(DATABASE_OBJECTS / 2), 0, CacheType.LRU, 0),\n",
" \"Random Eviction\": (int(DATABASE_OBJECTS / 2), 10, CacheType.RANDOM_EVICTION, 5),\n",
" \"RE without Refresh\": (int(DATABASE_OBJECTS / 2), 0, CacheType.RANDOM_EVICTION, 5),\n",
" \"No Refresh (0.5s ttl)\": (DATABASE_OBJECTS, 0, CacheType.LRU, 0.5),\n",
" \"No Refresh (1.0s ttl)\": (DATABASE_OBJECTS, 0, CacheType.LRU, 1),\n",
" \"No Refresh (2.0s ttl)\": (DATABASE_OBJECTS, 0, CacheType.LRU, 2),\n",
" \"No Refresh (3.0s ttl)\": (DATABASE_OBJECTS, 0, CacheType.LRU, 3),\n",
" \"No Refresh (4.0s ttl)\": (DATABASE_OBJECTS, 0, CacheType.LRU, 4),\n",
" \"No Refresh (5.0s ttl)\": (DATABASE_OBJECTS, 0, CacheType.LRU, 5),\n",
"}\n",
"\n",
"experiment_name = \"No Refresh (1.0s ttl)\"\n",
"config = configurations[experiment_name]\n",
"\n",
"CACHE_CAPACITY = config[0]\n",
"MAX_REFRESH_RATE = config[1]\n",
"cache_type = config[2]\n",
"CACHE_TTL = config[3]\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5cea042f-e9fc-4a1e-9750-de212ca70601",
"metadata": {},
"outputs": [],
"source": [
"class Database:\n",
" def __init__(self):\n",
" # Each object now has a specific refresh rate 'mu'\n",
" self.data = {i: f\"Object {i}\" for i in range(1, DATABASE_OBJECTS + 1)}\n",
" self.lambda_values = {i: np.random.zipf(ZIPF_CONSTANT) for i in range(1, DATABASE_OBJECTS + 1)} # Request rate 'lambda' for each object\n",
" # Refresh rate 'mu' for each object\n",
" if MAX_REFRESH_RATE == 0:\n",
" self.mu_values = {i: 0 for i in range(1,DATABASE_OBJECTS + 1)} \n",
" else:\n",
" self.mu_values = {i: np.random.uniform(1, MAX_REFRESH_RATE) for i in range(1, DATABASE_OBJECTS + 1)}\n",
" self.next_request = {i: np.random.exponential(1/self.lambda_values[i]) for i in range(1, DATABASE_OBJECTS + 1)}\n",
"\n",
"\n",
" def get_object(self, obj_id):\n",
" # print(f\"[{env.now:.2f}] Database: Fetched {self.data.get(obj_id, 'Unknown')} for ID {obj_id}\")\n",
" return self.data.get(obj_id, None)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "499bf543-b2c6-4e4d-afcc-0a6665ce3ae1",
"metadata": {},
"outputs": [],
"source": [
"class Cache:\n",
" def __init__(self, env, db, cache_type):\n",
" self.cache_type = cache_type\n",
" self.env = env\n",
" self.db = db\n",
" self.storage = {} # Dictionary to store cached objects\n",
" self.ttl = {} # Dictionary to store TTLs\n",
" self.age = {} # Dictionary to store age of each object\n",
" self.cache_size_over_time = [] # To record cache state at each interval\n",
" self.cache_next_request_over_time = []\n",
" self.request_log = {i: [] for i in range(1, DATABASE_OBJECTS + 1)}\n",
" self.hits = {i: 0 for i in range(1, DATABASE_OBJECTS + 1)} # Track hits per object\n",
" self.misses = {i: 0 for i in range(1, DATABASE_OBJECTS + 1)} # Track misses per object\n",
" self.cumulative_age = {i: 0 for i in range(1, DATABASE_OBJECTS + 1)} # Track cumulative age per object\n",
" self.access_count = {i: 0 for i in range(1, DATABASE_OBJECTS + 1)} # Track access count per object\n",
" self.next_refresh = {} # Track the next refresh time for each cached object\n",
" \n",
" def get(self, obj_id):\n",
" if obj_id in self.storage and \\\n",
" (self.ttl[obj_id] > env.now or CACHE_TTL == 0):\n",
" # Cache hit: increment hit count and update cumulative age\n",
" self.hits[obj_id] += 1\n",
" self.cumulative_age[obj_id] += self.age[obj_id]\n",
" self.access_count[obj_id] += 1\n",
" else:\n",
" # Cache miss: increment miss count\n",
" self.misses[obj_id] += 1\n",
" self.cumulative_age[obj_id] += 0\n",
" self.access_count[obj_id] += 1\n",
" \n",
" # Fetch the object from the database if its not in cache\n",
" obj = self.db.get_object(obj_id)\n",
" \n",
" # If the cache is full, evict the oldest object\n",
" if len(self.storage) > CACHE_CAPACITY:\n",
" if self.cache_type == CacheType.LRU:\n",
" self.evict_oldest()\n",
" elif self.cache_type == CacheType.RANDOM_EVICTION:\n",
" self.evict_random()\n",
" \n",
" # Add the object to cache, set TTL, reset age, and schedule next refresh\n",
" self.storage[obj_id] = obj\n",
" if CACHE_TTL != 0:\n",
" self.ttl[obj_id] = env.now + CACHE_TTL\n",
" else:\n",
" self.ttl[obj_id] = 0\n",
" self.age[obj_id] = 0\n",
" if MAX_REFRESH_RATE != 0:\n",
" self.next_refresh[obj_id] = env.now + np.random.exponential(1/self.db.mu_values[obj_id]) # Schedule refresh\n",
"\n",
" \n",
" def evict_oldest(self):\n",
" \"\"\"Remove the oldest item from the cache to make space.\"\"\"\n",
" oldest_id = max(self.age, key=self.age.get) # Find the oldest item by age\n",
" print(f\"[{env.now:.2f}] Cache: Evicting oldest object {oldest_id} to make space at {self.ttl[oldest_id]:.2f}\")\n",
" del self.storage[oldest_id]\n",
" del self.ttl[oldest_id]\n",
" del self.age[oldest_id]\n",
"\n",
" def evict_random(self):\n",
" \"\"\"Remove a random item from the cache to make space.\"\"\"\n",
" random_id = np.random.choice(list(self.storage.keys())) # Select a random key from the cache\n",
" print(f\"[{env.now:.2f}] Cache: Evicting random object {random_id} to make space at {self.ttl[random_id]:.2f}\")\n",
" del self.storage[random_id]\n",
" del self.ttl[random_id]\n",
" del self.age[random_id]\n",
" \n",
" def refresh_object(self, obj_id):\n",
" \"\"\"Refresh the object from the database to keep it up-to-date. TTL is increased on refresh.\"\"\"\n",
" obj = self.db.get_object(obj_id)\n",
" self.storage[obj_id] = obj\n",
" if CACHE_TTL != 0:\n",
" self.ttl[obj_id] = env.now + CACHE_TTL\n",
" else:\n",
" self.ttl[obj_id] = 0\n",
" self.age[obj_id] = 0\n",
" # print(f\"[{env.now:.2f}] Cache: Refreshed object {obj_id}\")\n",
" \n",
" def age_objects(self):\n",
" \"\"\"Increment age of each cached object.\"\"\"\n",
" for obj_id in list(self.age.keys()):\n",
" if CACHE_TTL != 0:\n",
" if self.ttl[obj_id] > env.now:\n",
" self.age[obj_id] += 1\n",
" # print(f\"[{env.now:.2f}] Cache: Object {obj_id} aged to {self.age[obj_id]}\")\n",
" else:\n",
" # Remove object if its TTL expired\n",
" # print(f\"[{env.now:.2f}] Cache: Object {obj_id} expired\")\n",
" del self.storage[obj_id]\n",
" del self.ttl[obj_id]\n",
" del self.age[obj_id]\n",
" else:\n",
" self.age[obj_id] += 1\n",
" \n",
" def record_cache_state(self):\n",
" \"\"\"Record the current cache state (number of objects in cache) over time.\"\"\"\n",
" self.cache_size_over_time.append((env.now, len(self.storage)))\n",
" self.cache_next_request_over_time.append((env.now, self.db.next_request.copy()))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7286d498-aa6c-4efb-bb28-fe29736eab64",
"metadata": {},
"outputs": [],
"source": [
"def age_cache_process(env, cache):\n",
" \"\"\"Process that ages cache objects over time, removes expired items, and refreshes based on object-specific intervals.\"\"\"\n",
" while True:\n",
" cache.age_objects() # Age objects and remove expired ones\n",
"\n",
"\n",
" if MAX_REFRESH_RATE != 0:\n",
" # Refresh objects based on their individual refresh intervals\n",
" for obj_id in list(cache.storage.keys()):\n",
" # Check if it's time to refresh this object based on next_refresh\n",
" if env.now >= cache.next_refresh[obj_id]:\n",
" cache.refresh_object(obj_id)\n",
" # Schedule the next refresh based on the object's mu\n",
" cache.next_refresh[obj_id] = env.now + np.random.exponential(1/cache.db.mu_values[obj_id])\n",
" \n",
" cache.record_cache_state() # Record cache state at each time step\n",
" yield env.timeout(1) # Run every second"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "687f5634-8edf-4337-b42f-bbb292d47f0f",
"metadata": {},
"outputs": [],
"source": [
"def client_request_process(env, cache, event):\n",
" \"\"\"Client process that makes requests for objects from the cache.\"\"\"\n",
" last_print = 0\n",
" with tqdm(total=ACCESS_COUNT_LIMIT, desc=\"Progress\", leave=True) as pbar:\n",
" while True:\n",
" obj_id, next_request = min(cache.db.next_request.items(), key=lambda x: x[1])\n",
" yield env.timeout(next_request - env.now)\n",
" if (int(env.now) % 1) == 0 and int(env.now) != last_print:\n",
" last_print = int(env.now)\n",
" pbar.n = min(cache.access_count.values())\n",
" pbar.refresh()\n",
" if env.now >= next_request:\n",
" # print(f\"[{env.now:.2f}] Client: Requesting object {obj_id}\")\n",
" cache.get(obj_id)\n",
" \n",
" # print(f\"[{env.now:.2f}] Client: Schedule next request for {obj_id}\")\n",
" next_request = env.now + np.random.exponential(1/cache.db.lambda_values[obj_id])\n",
" cache.request_log[obj_id].append(next_request)\n",
" cache.db.next_request[obj_id] = next_request\n",
" if all(access_count >= ACCESS_COUNT_LIMIT for access_count in cache.access_count.values()):\n",
" event.succeed()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "c8516830-9880-4d9e-a91b-000338baf9d6",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# Instantiate components\n",
"db = Database()\n",
"cache = Cache(env, db, cache_type)\n",
"stop_event = env.event()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "2ba34b36-9ed5-4996-9600-11dfd25d8e60",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Progress: 99%|██████████████████████████████████████████████████████████████████████████████████████████ | 99/100 [00:00<00:00, 142.68it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 639 ms, sys: 80.8 ms, total: 720 ms\n",
"Wall time: 702 ms\n"
]
}
],
"source": [
"%%time\n",
"\n",
"# Start processes\n",
"env.process(age_cache_process(env, cache))\n",
"env.process(client_request_process(env, cache, stop_event))\n",
"\n",
"# Run the simulation\n",
"env.run(until=stop_event)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "3b6f7c1f-ea54-4496-bb9a-370cee2d2751",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Object 1: Hit Rate = 0.49, Average Age = 0.50\n",
"Object 2: Hit Rate = 0.75, Average Age = 0.53\n",
"Object 3: Hit Rate = 0.48, Average Age = 0.56\n",
"Object 4: Hit Rate = 0.48, Average Age = 0.50\n",
"Object 5: Hit Rate = 0.67, Average Age = 0.42\n",
"Object 6: Hit Rate = 0.49, Average Age = 0.39\n",
"Object 7: Hit Rate = 0.84, Average Age = 0.53\n",
"Object 8: Hit Rate = 0.49, Average Age = 0.37\n",
"Object 9: Hit Rate = 0.48, Average Age = 0.45\n",
"Object 10: Hit Rate = 0.50, Average Age = 0.46\n",
"Object 11: Hit Rate = 0.67, Average Age = 0.48\n",
"Object 12: Hit Rate = 0.53, Average Age = 0.56\n",
"Object 13: Hit Rate = 0.53, Average Age = 0.47\n",
"Object 14: Hit Rate = 0.48, Average Age = 0.47\n",
"Object 15: Hit Rate = 0.68, Average Age = 0.46\n",
"Object 16: Hit Rate = 0.65, Average Age = 0.52\n",
"Object 17: Hit Rate = 0.50, Average Age = 0.50\n",
"Object 18: Hit Rate = 0.50, Average Age = 0.55\n",
"Object 19: Hit Rate = 0.75, Average Age = 0.51\n",
"Object 20: Hit Rate = 0.50, Average Age = 0.47\n",
"Object 21: Hit Rate = 0.54, Average Age = 0.49\n",
"Object 22: Hit Rate = 0.55, Average Age = 0.51\n",
"Object 23: Hit Rate = 0.49, Average Age = 0.54\n",
"Object 24: Hit Rate = 0.70, Average Age = 0.45\n",
"Object 25: Hit Rate = 0.48, Average Age = 0.56\n",
"Object 26: Hit Rate = 0.54, Average Age = 0.49\n",
"Object 27: Hit Rate = 0.48, Average Age = 0.40\n",
"Object 28: Hit Rate = 0.82, Average Age = 0.54\n",
"Object 29: Hit Rate = 0.50, Average Age = 0.41\n",
"Object 30: Hit Rate = 0.51, Average Age = 0.55\n",
"Object 31: Hit Rate = 0.43, Average Age = 0.58\n",
"Object 32: Hit Rate = 0.79, Average Age = 0.50\n",
"Object 33: Hit Rate = 0.50, Average Age = 0.43\n",
"Object 34: Hit Rate = 0.80, Average Age = 0.53\n",
"Object 35: Hit Rate = 0.50, Average Age = 0.65\n",
"Object 36: Hit Rate = 0.46, Average Age = 0.46\n",
"Object 37: Hit Rate = 0.54, Average Age = 0.54\n",
"Object 38: Hit Rate = 0.73, Average Age = 0.51\n",
"Object 39: Hit Rate = 0.89, Average Age = 0.52\n",
"Object 40: Hit Rate = 0.54, Average Age = 0.46\n",
"Object 41: Hit Rate = 0.79, Average Age = 0.45\n",
"Object 42: Hit Rate = 0.80, Average Age = 0.48\n",
"Object 43: Hit Rate = 0.64, Average Age = 0.38\n",
"Object 44: Hit Rate = 0.45, Average Age = 0.48\n",
"Object 45: Hit Rate = 0.49, Average Age = 0.46\n",
"Object 46: Hit Rate = 0.52, Average Age = 0.41\n",
"Object 47: Hit Rate = 0.91, Average Age = 0.53\n",
"Object 48: Hit Rate = 0.54, Average Age = 0.43\n",
"Object 49: Hit Rate = 0.56, Average Age = 0.52\n",
"Object 50: Hit Rate = 0.47, Average Age = 0.39\n",
"Object 51: Hit Rate = 0.83, Average Age = 0.44\n",
"Object 52: Hit Rate = 0.90, Average Age = 0.49\n",
"Object 53: Hit Rate = 0.47, Average Age = 0.49\n",
"Object 54: Hit Rate = 0.49, Average Age = 0.48\n",
"Object 55: Hit Rate = 0.50, Average Age = 0.50\n",
"Object 56: Hit Rate = 0.52, Average Age = 0.49\n",
"Object 57: Hit Rate = 0.52, Average Age = 0.55\n",
"Object 58: Hit Rate = 0.95, Average Age = 0.47\n",
"Object 59: Hit Rate = 0.62, Average Age = 0.50\n",
"Object 60: Hit Rate = 0.53, Average Age = 0.53\n",
"Object 61: Hit Rate = 0.96, Average Age = 0.49\n",
"Object 62: Hit Rate = 0.53, Average Age = 0.52\n",
"Object 63: Hit Rate = 0.45, Average Age = 0.51\n",
"Object 64: Hit Rate = 0.69, Average Age = 0.42\n",
"Object 65: Hit Rate = 0.53, Average Age = 0.51\n",
"Object 66: Hit Rate = 0.91, Average Age = 0.48\n",
"Object 67: Hit Rate = 0.56, Average Age = 0.51\n",
"Object 68: Hit Rate = 0.99, Average Age = 0.47\n",
"Object 69: Hit Rate = 0.52, Average Age = 0.62\n",
"Object 70: Hit Rate = 0.53, Average Age = 0.57\n",
"Object 71: Hit Rate = 0.68, Average Age = 0.49\n",
"Object 72: Hit Rate = 0.45, Average Age = 0.49\n",
"Object 73: Hit Rate = 0.49, Average Age = 0.45\n",
"Object 74: Hit Rate = 0.53, Average Age = 0.59\n",
"Object 75: Hit Rate = 0.73, Average Age = 0.53\n",
"Object 76: Hit Rate = 0.66, Average Age = 0.49\n",
"Object 77: Hit Rate = 0.68, Average Age = 0.45\n",
"Object 78: Hit Rate = 0.76, Average Age = 0.50\n",
"Object 79: Hit Rate = 0.94, Average Age = 0.46\n",
"Object 80: Hit Rate = 0.49, Average Age = 0.53\n",
"Object 81: Hit Rate = 0.50, Average Age = 0.48\n",
"Object 82: Hit Rate = 0.84, Average Age = 0.48\n",
"Object 83: Hit Rate = 0.66, Average Age = 0.48\n",
"Object 84: Hit Rate = 0.54, Average Age = 0.55\n",
"Object 85: Hit Rate = 0.42, Average Age = 0.36\n",
"Object 86: Hit Rate = 0.62, Average Age = 0.45\n",
"Object 87: Hit Rate = 0.54, Average Age = 0.60\n",
"Object 88: Hit Rate = 0.64, Average Age = 0.52\n",
"Object 89: Hit Rate = 0.56, Average Age = 0.51\n",
"Object 90: Hit Rate = 0.50, Average Age = 0.48\n",
"Object 91: Hit Rate = 0.66, Average Age = 0.50\n",
"Object 92: Hit Rate = 0.64, Average Age = 0.45\n",
"Object 93: Hit Rate = 0.76, Average Age = 0.44\n",
"Object 94: Hit Rate = 0.50, Average Age = 0.53\n",
"Object 95: Hit Rate = 0.68, Average Age = 0.44\n",
"Object 96: Hit Rate = 0.53, Average Age = 0.55\n",
"Object 97: Hit Rate = 0.52, Average Age = 0.52\n",
"Object 98: Hit Rate = 0.97, Average Age = 0.47\n",
"Object 99: Hit Rate = 0.79, Average Age = 0.50\n",
"Object 100: Hit Rate = 0.68, Average Age = 0.49\n"
]
}
],
"source": [
"statistics = []\n",
"# Calculate and print hit rate and average age for each object\n",
"for obj_id in range(1, DATABASE_OBJECTS + 1):\n",
" if cache.access_count[obj_id] != 0:\n",
" hit_rate = cache.hits[obj_id] / max(1, cache.access_count[obj_id]) # Avoid division by zero\n",
" avg_age = cache.cumulative_age[obj_id] / max(1, cache.access_count[obj_id]) # Only average over hits\n",
" print(f\"Object {obj_id}: Hit Rate = {hit_rate:.2f}, Average Age = {avg_age:.2f}\")\n",
" statistics.append({\"obj_id\": obj_id,\"hit_rate\": hit_rate,\"avg_age\": avg_age})"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "b2d18372-cdba-4151-ae32-5bf45466bf94",
"metadata": {},
"outputs": [],
"source": [
"stats = pd.DataFrame(statistics)\n",
"stats.to_csv(f\"{TEMP_BASE_DIR}/hit_age.csv\",index=False)\n",
"stats.drop(\"obj_id\", axis=1).describe().to_csv(f\"{TEMP_BASE_DIR}/overall_hit_age.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "8bfa271d-00dd-4dba-b88d-1bd4c88cbb20",
"metadata": {},
"outputs": [],
"source": [
"avg_age = {\n",
" obj_id: cache.cumulative_age[obj_id] / max(1, cache.access_count[obj_id]) \n",
" for obj_id in range(1, DATABASE_OBJECTS + 1)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "dfd37ae1-7442-4fa3-8820-035ded4e3f16",
"metadata": {},
"outputs": [],
"source": [
"hit_rate = {\n",
" obj_id: np.round((cache.hits[obj_id] / max(1, cache.access_count[obj_id]))*100,2) \n",
" for obj_id in range(1, DATABASE_OBJECTS + 1)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "80971714-44f1-47db-9e89-85be7c885bde",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>access_count</th>\n",
" <th>hits</th>\n",
" <th>misses</th>\n",
" <th>mu</th>\n",
" <th>lambda</th>\n",
" <th>hit_rate</th>\n",
" <th>avg_age</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>122</td>\n",
" <td>60</td>\n",
" <td>62</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>49.18</td>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>382</td>\n",
" <td>288</td>\n",
" <td>94</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>75.39</td>\n",
" <td>0.527778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>127</td>\n",
" <td>61</td>\n",
" <td>66</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>48.03</td>\n",
" <td>0.557377</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>113</td>\n",
" <td>54</td>\n",
" <td>59</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>47.79</td>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>244</td>\n",
" <td>163</td>\n",
" <td>81</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>66.80</td>\n",
" <td>0.423313</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>139</td>\n",
" <td>73</td>\n",
" <td>66</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>52.52</td>\n",
" <td>0.547945</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>127</td>\n",
" <td>66</td>\n",
" <td>61</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>51.97</td>\n",
" <td>0.515152</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>4578</td>\n",
" <td>4458</td>\n",
" <td>120</td>\n",
" <td>0</td>\n",
" <td>37</td>\n",
" <td>97.38</td>\n",
" <td>0.467474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>482</td>\n",
" <td>382</td>\n",
" <td>100</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>79.25</td>\n",
" <td>0.502618</td>\n",
" </tr>\n",
" <tr>\n",
" <th>100</th>\n",
" <td>249</td>\n",
" <td>170</td>\n",
" <td>79</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>68.27</td>\n",
" <td>0.494118</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" access_count hits misses mu lambda hit_rate avg_age\n",
"1 122 60 62 0 1 49.18 0.500000\n",
"2 382 288 94 0 3 75.39 0.527778\n",
"3 127 61 66 0 1 48.03 0.557377\n",
"4 113 54 59 0 1 47.79 0.500000\n",
"5 244 163 81 0 2 66.80 0.423313\n",
".. ... ... ... .. ... ... ...\n",
"96 139 73 66 0 1 52.52 0.547945\n",
"97 127 66 61 0 1 51.97 0.515152\n",
"98 4578 4458 120 0 37 97.38 0.467474\n",
"99 482 382 100 0 4 79.25 0.502618\n",
"100 249 170 79 0 2 68.27 0.494118\n",
"\n",
"[100 rows x 7 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"access_count = pd.DataFrame.from_dict(cache.access_count, orient='index', columns=['access_count'])\n",
"hits = pd.DataFrame.from_dict(cache.hits, orient='index', columns=['hits'])\n",
"misses = pd.DataFrame.from_dict(cache.misses, orient='index', columns=['misses'])\n",
"mu = pd.DataFrame.from_dict(db.mu_values, orient='index', columns=['mu'])\n",
"lmbda = pd.DataFrame.from_dict(db.lambda_values, orient='index', columns=['lambda'])\n",
"hit_rate = pd.DataFrame.from_dict(hit_rate, orient='index', columns=['hit_rate'])\n",
"avg_age = pd.DataFrame.from_dict(avg_age, orient='index', columns=['avg_age'])\n",
"\n",
"merged = access_count.merge(hits, left_index=True, right_index=True).merge(misses, left_index=True, right_index=True)\\\n",
" .merge(mu, left_index=True, right_index=True).merge(lmbda, left_index=True, right_index=True)\\\n",
" .merge(hit_rate, left_index=True, right_index=True).merge(avg_age, left_index=True, right_index=True)\n",
"merged.to_csv(f\"{TEMP_BASE_DIR}/details.csv\", index_label=\"obj_id\")\n",
"merged"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "01f8f9ee-c278-4a22-8562-ba02e77f5ddd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAACVcAAAHWCAYAAAB5HisgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3QUZRcG8GdLeu8JCZCQhE7ovXeQKiBNpIooImJBxfIhimJDmqBgAQUEpQgivffeAiGQhBTSe2/b5vtjswshCaTsZrPk+Z3DOWR3dvbOZjI788597xUJgiCAiIiIiIiIiIiIiIiIiIiIiIiIihEbOgAiIiIiIiIiIiIiIiIiIiIiIqKaiMlVREREREREREREREREREREREREpWByFRERERERERERERERERERERERUSmYXEVERERERERERERERERERERERFQKJlcRERERERERERERERERERERERGVgslVREREREREREREREREREREREREpWByFRERERERERERERERERERERERUSmYXEVERERERERERERERERERERERFQKJlcRERERERERERERERERERERERGVgslVREREREREREQATpw4AZFIhO3btxs6lHJJTEzEmDFj4OTkBJFIhOXLl+ts3ZGRkRCJRPjuu++euuynn34KkUiks/euDiKRCJ9++qmhw9AJkUiEOXPmGDoMo+bt7Y2pU6caOgwiIiIiIiIiqqGYXEVERERERERE1WbDhg0QiUQwNzdHbGxsied79eqF5s2bGyAy4/PWW2/h4MGDWLBgATZu3IhBgwY9cfnc3Fx8/vnnCAgIgKWlJezs7NC9e3f88ccfEAShmqKuuH379hlNItSJEycwatQouLu7w9TUFK6urhg2bBh27txp6NB0Qi6XY+XKlWjfvj1sbGxgbW2N9u3bY+XKlZDL5YYOT0uTKFmef0RERERERERETyM1dABEREREREREVPsUFhbiq6++wqpVqwwditE6duwYRowYgXffffepyyYmJqJv374IDg7G+PHjMWfOHBQUFGDHjh2YMmUK9u3bh82bN0MikVQ4jo8//hgffPBBZTahXPbt24fVq1frNMEqPz8fUqluh8UWLlyIzz77DP7+/pg1axbq16+P1NRU7Nu3D6NHj8bmzZsxceJEnb5ndcrNzcWQIUNw8uRJDB06FFOnToVY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IiKi2ozJVURERERERERkcH5+fpg0aRJ+//33Es/973//Q3JyMrZv346///4bgwcPxv79++Hq6qqXWD788EMEBgZiyZIlyM7ORt++fbFmzRpYWlpql+nVqxfOnz+Pzz//HD/88ANycnLg7u6Ojh07YtasWZV+bzc3N5w7dw7vv/8+Vq1ahYKCAgQEBGDPnj0YMmRIpdfr4eGBS5cuYenSpdi2bRt27NgBqVSKgIAAbNiwAZMnTy61/d7kyZMhFouxfPlyJCUloUOHDvjhhx/g4eHxxPf74IMP0LBhQyxbtkxbealu3boYMGAAhg8frl1u4MCBOH78OBYtWoSlS5dCpVLB19dXm8gGqCthvfHGG9i6dSs2bdoEQRAwfvx4TJo0CevWrcOaNWuQkZEBd3d3jBs3Dp9++mmlk9CqYvHixejTpw9WrlyJH3/8EWlpaXBwcECnTp2we/du7XZPnToVCQkJWLt2LQ4ePIimTZti06ZN2LZtG06cOFFsnevXr0dAQAB+/fVXzJ8/H3Z2dmjXrh26dOlS4fjc3Nxw6dIlfPbZZ9i5cyfWrFkDJycnNGvWrNSWnI+ztrbG0aNHsWbNGmzatAnz58+HIAho3Lgxli9fjtmzZ8PExKTE67y8vNClSxecPXsWL7/8cqnL/PTTT2jbti3Wrl2LDz/8EFKpFN7e3pg0aVKJVpXG4lncJiIiIiIiIqLaSiRUtI44ERERERERERFRkU8++QRLliwptR0eERERERERERGRsav+aXxERERERERERPTMiI+Ph7Ozs6HDICIiIiIiIiIi0gu2BSQiIiIiIiIiogoLDw/HP//8g23btmHo0KGGDoeIiIiIiIiIiEgvWLmKiIiIiIiIiIgq7NSpU1i0aBF69uyJ77//3tDhEBERERERERER6YVIEATB0EEQERERERERERERERERERERERHVNKxcRUREREREREREREREREREREREVAomVxEREREREREREREREREREREREZVCaugA9E2lUiEuLg42NjYQiUSGDoeIiIiIiIiIiIiIiIiIiIiIiAxMEARkZ2ejTp06EIvLrk/1zCdXxcXFoW7duoYOg4iIiIiIiIiIiIiIiIiIiIiIapjo6Gh4eXmV+fwzn1xlY2MDQP1B2NraGjgaKotcLsehQ4cwYMAAmJiYGDocIqJnAo+tRET6weMrEZF+8PhKRKR7PLYSEekHj69ERPrB4ytVt6ysLNStW1ebW1SWZz65StMK0NbWlslVNZhcLoelpSVsbW15kCQi0hEeW4mI9IPHVyIi/eDxlYhI93hsJSLSDx5fiYj0g8dXMhRNblFZym4YSEREREREREREREREREREREREVIsxuYqIiIiIiIiIiIiIiIiIiIiIiKgUTK4iIiIiIiIiIiIiIiIiIiIiIiIqhdTQARARERERERERERERERERERGR8RMEAQqFAkqlssKvlcvlkEqlKCgoqNTriR4nkUgglUohEomqtB4mVxERERERERERERERERERERFRlchkMsTHxyMvL69SrxcEAe7u7oiOjq5yMgyRhqWlJTw8PGBqalrpdTC5ioiIiIiIiIiIiIiIiIiIiIgqTaVSISIiAhKJBHXq1IGpqWmFE6RUKhVycnJgbW0NsVisp0ipthAEATKZDMnJyYiIiIC/v3+l9ysmVxERERERERERERERERERERFRpclkMqhUKtStWxeWlpaVWodKpYJMJoO5uTmTq0gnLCwsYGJigqioKO2+VRncG4mIiIiIiIiIiIiIiIiIiIioypgURTWNLvZJ7tVERERERERERERERERERERERESlYHIVERERERERERERERERERERERFRKQyaXKVUKvHJJ5/Ax8cHFhYW8PX1xeeffw5BELTLCIKA//3vf/Dw8ICFhQX69euH0NBQA0ZNRERERERERERERERERERERLWJt7c3li9fXuVlqltNjKksNTVWgyZXff311/jxxx/xww8/IDg4GF9//TW++eYbrFq1SrvMN998g5UrV+Knn37CxYsXYWVlhYEDB6KgoMCAkRMRERERERERERERERERERGRsYuOjsb06dNRp04dmJqaon79+njzzTeRmppa4XVdvnwZr7zyis5i00Wyka5iCgsLw7Rp0+Dl5QUzMzP4+PhgwoQJuHLlSpXXXdMZNLnq3LlzGDFiBIYMGQJvb2+MGTMGAwYMwKVLlwCoq1YtX74cH3/8MUaMGIGAgAD88ccfiIuLw65duwwZOhEREREREREREREREREREREZsfDwcLRr1w6hoaHYsmULwsLC8NNPP+Ho0aPo3Lkz0tLSKrQ+FxcXWFpa6inaytFFTFeuXEHbtm0REhKCtWvX4s6dO/jnn3/QuHFjvPPOOzqKtOaSGvLN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Cho0aICxY8fC19cXr7zyCnr37o3z58/D0dGx2PLvvPMOrly5gtatW2Px4sX4/vvvMXDgwFLXLRKJsG/fPvTo0QPTpk1Dw4YNMX78eERFRcHNzQ0A0KtXL2zbtg3//vsvWrVqhT59+uDSpUvadXz22WeIjIyEr6+vtu2dUqnE66+/jiZNmmDQoEFo2LAh1qxZo6dPSK1Dhw64cuUK/Pz8MHPmTDRp0gTDhw9HUFAQli9fDgAYPnw43nrrLcyZMwetWrXCuXPn8MknnxRbz9O292ksLS1x6tQp1KtXD6NGjUKTJk0wY8YMFBQUwNbWVpebXEzFGlwS1VC5hcXL4N2MyUBdR0sDRUNERERERERERERERERERETGoH79+tiwYcNTl4uMjHzqMoWFhbC2ttb+bGNjg5UrV2LlypVlvmbUqFEYNWpUqc916tQJN2/eLPbYqlWrnhrHox6Pu7ROYJrWfk/SsGFD/P77709c5ptvvsE333xT7LF58+YV+/lJ21vaZ3zjxo1iP7u7uz81Dl0zaOUqIl3RtAU0k6p36cCYTEOGQ0RERERERERERERERERERLVEXl4eDh8+jMTERDRr1szQ4ZCOMbmKngmatoDtvB0AADejMwwYDREREREREREREREREREREdUW69atw/jx4zFv3jx07tzZ0OGQjjG5ip4JOUVtATs3cAIA3I7NhFJVspQdERERERERERERERERERERkS7NmzcPqamp+P777w0dCukBk6vomZBX1BawZV17WJhIkCtTIjw5x8BREREREREREREREREREREREZExY3IVPRNyi5KrbM1N0NzTFgBwMybTkCERERERERERERERERERERHVKoLADlNUs+hin2RyFT0TcmXqtoBWZlIEeNkDAAJjMgwXEBERERERERERERERERERUS1hYmICAMjLyzNwJETFafZJzT5aGVJdBUNkKIIgaCtXWZlJEOBlB4CVq4iIiIiIiIiIiIiIiIiIiKqDRCKBvb09kpKSAACWlpYQiUQVWodKpYJMJkNBQQHEYtYKoqoRBAF5eXlISkqCvb09JBJJpdfF5CoyejKlCgqVuoyblZkULYsqVwXHZUGmUMFUyoMuERERERERERERERERERGRPrm7uwOANsGqogRBQH5+PiwsLCqcmEVUFnt7e+2+WVlMriKjl1uo1P7f0kQCGydL2FmYIDNfjpDEbDT3tDNgdERERERERERERERERERERM8+kUgEDw8PuLq6Qi6XV/j1crkcp06dQo8eParUwo1Iw8TEpEoVqzSYXEVGT9MS0NxEDKlEXaUqwMsOp0NTcDMmg8lVRERERERERERERERERERE1UQikVQqoUUikUChUMDc3JzJVVSjsF8aGb1cmTq5ysr0Ya5ggJc6oSowOtMgMRERERERERERERERERERERGR8WNyFRk9TeUqK7NHk6vsAQA3YzIMEBERERERERERERERERERERERPQuYXEVGL7dQCeDx5Cp15arQpBzky5QGiYuIiIiIiIiIiIiIiIiIiIiIjBuTq8joaStXmT7s2epuaw4XGzMoVQKC4tgakIiIiIiIiIiIiMhQYtLzMGj5KWy99MDQoRAREREREVUYk6vI6OXKSlauEolEaFlUvepmDJOriIiIiIiIiIiIiAzl35txuJuQjR9P3jd0KERERERERBXG5CoyetrKVWaSYo8HeNkDAAJjMqo5IiIiIiIiIiIiIiLSCIrNAgBEpeYhJj3PwNEQERERERFVDJOryOjlaNsCSos9HlBUuSqQlauIiIiIiIiIiIiIDOZ23MMx2nNhqQaMhIiIiIiIqOKYXEVGL0+mqVz1eHKVPQAgIiUXmfny6g6LiIiIiIiIiIiIqNbLzJcjKvVhtaqz91MMGA0REREREVHFMbmKjF5uoRJAybaAjlamqOtoAQC4xepVRERERERERERERNUuqKhqlVik/vnc/VQIgmDAiIiIiIiIiCqGyVVk9HILS69cBTysXnUzJqMaIyIiIiIiIiIiIiIiAAiKzQIA9GrkCnMTMZKzCxGalGPgqIiIiIiIiMqPyVVk9HI1bQFNSyZXtfSyA8DKVURERERERERERESGcCtWPTbbtr4D2ns7AgDOhrE1IBERERERGQ8mV5HRe9gWsOzKVYGsXEVERERERERERERU7W4XtQVsVscWXXydAQBnw1INGRIREREREVGFlMxGITIy2raAppISzzX3tINIBMRlFiA5uxAuNmbVHR4RERERERERERFRrZRTqEBESi4A9Vito5UpAOBieCoUShWkEs7/JiIiIiKimo9XLmT0cjTJVaVUrrI2k8LPxRoAq1cRERERERERERERVafg+CwIAuBhZw5nazM0q2MHW3MpsgsV2naBRERE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X/hCfvOb3+Twww9Pkvz85z/P1VdfnVmzZvV5gWzbmjaGq0yuAgAAAAAAAACgv/U6sXLRRRdl2LBhufbaazN79uwkydixY/O1r30t5513Xp8XyLataeO2gEPqTa4CAAAAAAAAAKB/9TpcVSgUMnPmzMycOTNvvfVWkmTYsGF9Xhgkf5pc1WByFQAAAAAAAAAA/ex9JVaEqii35paN4ao64SoAAAAAAAAAAPpXTaULgHezrrhhW0CTqwAAAAAAAAAA6G/CVVS15o3bAg6tH1DhSgAAAAAAAAAA2NYIV1HV1m0MVw2xLSAAAAAAAAAAAP2sV+Gq1tbWfPzjH89LL71Urnqgi6aWjslVwlUAAAAAAAAAAPSvXoWramtr88wzz/TZzW+++ebsv//+GT58eIYPH57Jkyfnxz/+cefx9evXZ8aMGRk9enSGDh2ak08+OStXruyz+1P9mottSZIhdbYFBAAAAAAAAACgf/V6W8C//uu/zq233tonN995551z1VVXZcmSJXnqqady7LHH5lOf+lR++ctfJklmzpyZ+++/P/fcc08WLlyY119/PSeddFKf3JutQ8e2gA0mVwEAAAAAAAAA0M96nVh5++23c9ttt+UnP/lJDj744DQ0NHQ5ft111/X4WieccEKX51//+tdz88035/HHH8/OO++cW2+9NXPnzs2xxx6bJLn99tuz11575fHHH8+kSZN6WzpboeaWDZOrhKsAAAAAAAAAAOhvvU6sPPfccznooIOSJC+++GKXY4VCYYsLaWtryz333JOmpqZMnjw5S5YsSWtra6ZMmdJ5zp577pnx48dn0aJFmw1XFYvFFIvFzudr165NkrS2tqa1tXWL66O8Oj6bd35GpVIpTS0bJlfV15R8fgC91F1vBeD9018BykN/Beh7eitAeeivAOWhv9Lfevpd63W46pFHHul1Me/m2WefzeTJk7N+/foMHTo09913X/bee+8sW7YsdXV1GTlyZJfzGxsbs2LFis1e78orr8yll166yfpDDz2UIUOG9Gnt9L358+d3Pi62JaXShq/oYz9dkPoBlaoKYOv2zt4KQN/RXwHKQ38F6Ht6K0B56K8A5aG/0l+am5t7dN4W77X28ssv59e//nWOOuqoDB48OKVSaYsmV+2xxx5ZtmxZ1qxZkx/+8Ic544wzsnDhwi0tK7Nnz86sWbM6n69d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AAAAoMJ6nVw5//zzu12fM2dOnnrqqfddECRJc4twFQAAAAAAAAAAlVXTVxc6/vjj87/+1//qq8uxjVtX3LgtoHAVAAAAAAAAAAAV0mfhqh/+8IcZNWpUX12ObVzH5Kqh9QMqXAkAAAAAAAAAANuqXo8FOvDAA1MoFDqfl0qlrFixIr/73e9y00039WlxbLuaihvCVUPqTK4CAAAAAAAAAKAyep1cOfHEE7s8r6mpyQ477JCjjz46e+65Z1/VxTZuXbFjcpVwFQAAAAAAAAAAldHr5Moll1zSZze/8sorc++99+aFF17I4MGDc/jhh+fqq6/OHnvs0XnO+vXr88UvfjF33313isVipk2blptuuimNjY19VgfVpa29lPWt7UmSIXW2BQQAAAAAAAAAoDJqKnnzhQsXZsaMGXn88cczf/78tLa2ZurUqWlqauo8Z+bMmbn//vtzzz33ZOHChXn99ddz0kknVbBqyq2p5e3Oxw0mVwEAAAAAAAAAUCE9Tq7U1NSkUCi86zmFQiFvv/32u57zTvPmzevy/I477siOO+6YJUuW5KijjsqaNWty6623Zu7cuTn22GOTJLfffnv22muvPP7445k0aVKP78XWo7nYliQZUFNI/cCK5v8AAAAAAAAAANiG9Thcdd9992322KJFi3LDDTekvb39fRWzZs2aJMmoUaOSJEuWLElra2umTJnSec6ee+6Z8ePHZ9GiRd2Gq4rFYorFYufztWvXJklaW1vT2tr6vuqjfDo+m9bW1qxuakmSNNQN6FVYD4Cu3tlbAeg7+itAeeivAH1PbwUoD/0VoDz0V/pbT79rhVKpVNrSmyxfvjwXXnhh7r///px22mm57LLLsssuu2zRtdrb2/OXf/mXWb16dR577LEkydy5czN9+vQuYakkOfTQQ3PMMcfk6quv3uQ6X/va13LppZdusj537twMGTJki2qjf722Lrn22YEZWVfKpQe3VbocAAAAAAAAAAA+YJqbm/O5z30ua9asyfDhwzd7Xo8nV73T66+/nksuuSTf/e53M23atCxbtiz77rvvFhebJDNmzMhzzz3XGazaUrNnz86sWbM6n69duzbjxo3L1KlT3/UfBJXV2tqa+fPn57jjjsuS376VPPtURo8Ymk984ohKlwaw1Xpnb62tra10OQAfGPorQHnorwB9T28FKA/9FaA89Ff6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jBs3rsKVAAAAAAAAAAAA1eStt97KiBEjNnu8UHqv+NVWrr29Pa+//nqGDRuWQqFQ6XLYjLVr12bcuHH57W9/m+HDh1e6HIAPBL0VoDz0V4Dy0F8B+p7eClAe+itAeeiv9LdSqZS33norY8eOTU1NzWbP+8BPrqqpqcnOO+9c6TLooeHDh2uSAH1MbwUoD/0VoDz0V4C+p7cClIf+ClAe+iv96d0mVnXYfOwKAAAAAAAAAABgGyZcBQAAAAAAAAAA0A3hKqpCfX19LrnkktTX11e6FIAPDL0VoDz0V4Dy0F8B+p7eClAe+itAeeivVKtCqVQqVboIAAAAAAAAAACAamNyFQAAAAAAAAAAQDeEqwAAAAAAAAAAALohXAUAAAAAAAAAANAN4SoAAAAAAAAAAIBuCFdRcXPmzMmHPvShDBo0KIcddliefPLJSpcEsFW58sor85GPfCTDhg3LjjvumBNPPDHLly/vcs769eszY8aMjB49OkOHDs3JJ5+clStXVqhigK3PVVddlUKhkAsuuKBzTW8F2DL/8R//kb/+67/O6NGjM3jw4Oy333556qmnOo+XSqVcfPHF2WmnnTJ48OBMmTIlL730UgUrBqhubW1tueiiizJhwoQMHjw4H/7wh/OP//iPKZVKneforQDv7dFHH80JJ5yQsWPHplAo5Ec/+lGX4z3ppatWrcppp52W4cOHZ+TIkTnrrLOybt26fnwXANXn3fpra2trvvKVr2S//fZLQ0NDxo4dm89//vN5/fXXu1xDf6XShKuoqO9///uZNWtWLrnkkixdujQHHHBApk2bljfeeKPSpQFsNRYuXJgZM2bk8ccfz/z589Pa2pqpU6emqamp85yZM2fm/vvvzz333JOFCxfm9ddfz0knnVTBqgG2HosXL863vvWt7L///l3W9VaA3nvzzTdzxBFHpLa2Nj/+8Y/zq1/9Ktdee2222267znOuueaa3HDDDbnlllvyxBNPpKGhIdOmTcv69esrWDlA9br66qtz880358Ybb8zzzz+fq6++Otdcc02++c1vdp6jtwK8t6amphxwwAGZM2dOt8d70ktPO+20/PKXv8z8+fPzwAMP5NFHH80XvvCF/noLAFXp3fprc3Nzli5dmosuuihLly7Nvffem+XLl+cv//Ivu5ynv1JphdI7//cV6GeHHXZYPvKRj+TGG29MkrS3t2fcuHE599xzc+GFF1a4OoCt0+9+97vsuOOOWbhwYY466qisWbMmO+ywQ+bOnZtPf/rTSZIXXnghe+21VxYtWpRJkyZVuGKA6rVu3bocdNBBuemmm3L55Zdn4sSJuf766/VWgC104YUX5uc//3l+9rOfdXu8VCpl7Nix+eIXv5j/9t/+W5JkzZo1aWxszB133JFTTz21P8sF2Cp88pOfTGNjY2699dbOtZNPPjmDBw/Ov/zLv+itAFugUCjkvvvuy4knnpikZ/+e+vzzz2fvvffO4sWLc8ghhyRJ5s2bl0984hP593//94wdO7ZSbwegavzn/tqdxYsX59BDD82rr76a8ePH669UBZOrqJiWlpYsWbIkU6ZM6VyrqanJlClTsmjRogpWBrB1W7NmTZJk1KhRSZIlS5aktbW1S7/dc889M378eP0W4D3MmDEjf/EXf9GlhyZ6K8CW+t//+3/nkEMOyV/91V9lxx13zIEHHpjvfOc7ncdfeeWVrFixokt/HTFiRA477DD9FWAzDj/88CxYsCAvvvhikuTpp5/OY489luOPPz6J3grQF3rSSxctWpSRI0d2/of/JJkyZUpqamryxBNP9HvNAFurNWvWpFAoZOTIkUn0V6rDwEoXwLbr97//fdra2tLY2NhlvbGxMS+88EKFqgLYurW3t+eCCy7IEUcckX333TdJsmLFitTV1XX+S2iHxsbGrFixogJVAmwd7r777ixdujSLFy/e5JjeCrBlfvOb3+Tmm2/OrFmz8t//+3/P4sWLc95556Wuri5nnHFGZw/t7u8K9FeA7l144YVZu3Zt9txzzwwYMCBtbW35+te/ntNOOy1J9FaAPtCTXrpixYrsuOOOXY4PHDgwo0aN0m8Bemj9+vX5yle+ks9+9rMZPnx4Ev2V6iBcBQAfIDNmzMhzzz2Xxx57rNKlAGzVfvvb3+b888/P/PnzM2jQoEqXA/CB0d7enkMOOSRXXHFFkuTAAw/Mc889l1tuuSVnnHFGhasD2Dr94Ac/yF133ZW5c+dmn332ybJly3LBBRdk7NixeisAAFuN1tbWfOYzn0mpVMrNN99c6XKgC9sCUjHbb799BgwYkJUrV3ZZX7lyZcaMGVOhqgC2Xuecc04eeOCBPPLII9l5550718eMGZOWlpasXr26y/n6LcDmLVmyJG+88UYOOuigDBw4MAMHDszChQtzww03ZODAgWlsbNRbAbbATjvtlL333rvL2l577ZXXXnstSTp7qL8rAOi5L33pS7nwwgtz6qmnZr/99svpp5+emTNn5sorr0yitwL0hZ700jFjxuSNN97ocvztt9/OqlWr9FuA99ARrHr11Vczf/78zqlVif5KdRCuomLq6upy8MEHZ8GCBZ1r7e3tWbBgQSZPnlzBygC2LqVSKeecc07uu+++PPzww5kwYUKX4wcffHBqa2u79Nvly5fntdde028BNuPjH/94nn322Sxbtqzz55BDDslpp53W+VhvBei9I444IsuXL++y9uKLL2aXXXZJkkyYMCFjxozp0l/Xrl2bJ554Qn8F2Izm5ubU1HT9q/4BAwakvb09id4K0Bd60ksnT56c1atXZ8mSJZ3nPPzww2lvb89hhx3W7zUDbC06glUvvfRSfvKTn2T06NFdjuuvVAPbAlJRs2bNyhlnnJFDDjkkhx56aK6//vo0NTVl+vTplS4NYKsxY8aMzJ07N//6r/+aYcOGde4vPWLEiAwePDgjRozIWWedlVmzZmXUqFEZPnx4zj333EyePDmTJk2qcPUA1WnYsGHZd999u6w1NDRk9OjRnet6K0DvzZw5M4cffniuuOKKfOYzn8mTTz6Zb3/72/n2t7+dJCkUCrngggty+eWXZ/fdd8+ECRNy0UUXZezYsTnxxBMrWzxAlTrhhBPy9a9/PePHj88+++yTX/ziF7nuuuvyN3/zN0n0VoCeWrduXV5++eXO56+88kqWLVuWUaNGZfz48e/ZS/faa6/8+Z//ec4+++zccsstaW1tzTnnnJNTTz01Y8eOrdC7Aqi8d+uvO+20Uz796U9n6dKleeCBB9LW1tb537lGjRqVuro6/ZWqUCiVSqVKF8G27cYbb8z/+B//IytWrMjEiRNzww03SJgC9EKhUOh2/fbbb8+ZZ56ZJFm/fn2++MUv5nvf+16KxWKmTZuWm266ybhUgF44+uijM3HixFx//fVJ9FaALfXAAw9k9uzZeemllzJhwoTMmjUrZ599dufxUqmUSy65JN/+9rezevXqHHnkkbnpppvyZ3/2ZxWsGqB6vfXWW7noooty33335Y033sjYsWPz2c9+NhdffHHq6uqS6K0APfHTn/40xxxzzCbrZ5xxRu64444e9dJVq1blnHPOyf3335+ampqcfPLJueGGGzJ06ND+fCsAVeXd+uvXvva1TXZk6fDII4/k6KOPTqK/UnnCVQAAAAAAAAAAAN2oee9TAAAAAAAAAAAAtj3CVQAAAAAAAAAAAN0QrgIAAAAAAAAAAOiGcBUAAAAAAAAAAEA3hKsAAAAAAAAAAAC6IVwFAAAAAAAAAADQDeEqAAAAAAAAAACAbghXAQAAAAAAAAAAdEO4CgAAAICqduaZZ+bEE0+s2P1PP/30XHHFFT0699RTT821115b5ooAAAAA6C+FUqlUqnQRAAAAAGybCoXCux6/5JJLMnPmzJRKpYwcObJ/inqHp59+Oscee2xeffXVDB069D3Pf+6553LUUUfllVdeyYgRI/qhQgAAAADKSbgKAAAAgIpZsWJF5+Pvf//7ufjii7N8+fLOtaFDh/Yo1FQuf/u3f5uBAwfmlltu6fFrPvKRj+TMM8/MjBkzylgZAAAAAP3BtoAAAAAAVMyYMWM6f0aMGJFCodBlbejQoZtsC3j00Ufn3HPPzQUXXJDtttsujY2N+c53vpOmpqZMnz49w4YNy2677ZYf//jHXe713HPP5fjjj8/QoUPT2NiY008/Pb///e83W1tbW1t++MMf5oQTTuiyftNNN2X33XfPoEGD0tjYmE9/+tNdjp9wwgm5++673/8/HAAAAAAqTrgKAAAAgK3Od7/73Wy//fZ58sknc+655+bv//7v81d/9Vc5/PDDs3Tp0kydOjWnn356mpubkySrV6/OsccemwMPPDBPPfVU5s2bl5UrV+Yzn/nMZu/xzDPPZM2aNTnkkEM615566qmcd955ueyyy7J8+fLMmzcvRx11VJfXHXrooXnyySdTLBbL8+YBAAAA6DfCVQAAAABsdQ444IB89atfze67757Zs2dn0KBB2X777XP22Wdn9913z8UXX5w//OEPeeaZZ5IkN954Yw488MBcccUV2XPPPXPggQfmtttuyyOPPJIXX3yx23u8+uqrGTBgQHbcccfOtddeey0NDQ355Cc/mV122SUHHnhgzjvvvC6vGzt2bFpaWrpseQgAAADA1km4CgAAAICtzv7779/5eMCAARk9enT222+/zrXGxsYkyRtvvJEkefrpp/PII49k6NChnT977rlnkuTXv/51t/f44x//mPr6+hQKhc614447Lrvsskt23XXXnH766bnrrrs6p2N1GDx4cJJssg4AAADA1ke4CgAAAICtTm1tbZfnhUKhy1pHIKq9vT1Jsm7dupxwwglZtmxZl5+XXnppk239Omy//fZpbm5OS0tL59qwYcOydOnSfO9738tOO+2Uiy++OAcccEBWr17dec6qVauSJDvssEOfvFcAAAAAKke4CgAAAIAPvIMOOii//OUv86EPfSi77bZbl5+GhoZuXzNx4sQkya9+9asu6wMHDsyUKVNyzTXX5Jlnnsn//b//Nw8//HDn8eeeey4777xztt9++7K9HwAAAAD6h3AVAAAAAB94M2bMyKpVq/LZz342ixcvzq9//es8+OCDmT59etra2rp9zQ477JCDDjoojz32WOfaAw88kBtuuCHLli3Lq6++mjvvvDPt7e3ZY489Os/52c9+lqlTp5b9PQEAAABQfsJVAAAAAHzgjR07Nj//+c/T1taWqVOnZr/99ssFF1yQkSNHpqZm839F9rd/+7e56667Op+PHDky9957b4499tjstddeueWWW/K9730v++yzT5Jk/fr1+dGPfpSzzz677O8JAAAAgPIrlEqlUqWLAAAAAIBq9Mc//jF77LFHvv/972fy5Mnvef7NN9+c++67Lw899FA/VAcAAABAuZlcBQAAAACbMXjw4Nx55535/e9/36Pza2tr881vfrPMVQEAAADQX0yuAgAAAAAAAAAA6IbJVQAAAAAAAAAAAN0QrgIAAAAAAAAAAOiGcBUAAAAAAAAAAEA3hKsAAAAAAAAAAAC6IVwFAAAAAAAAAADQDeEqAAAAAAAAAACAbghXAQAAAAAAAAAAdEO4CgAAAAAAAAAAoBvCVQAAAAAAAAAAAN34//hNbVpAXxpCAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 3000x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Extract recorded data for plotting\n",
"times, cache_sizes = zip(*cache.cache_size_over_time)\n",
"\n",
"# Plot the cache size over time\n",
"plt.figure(figsize=(30, 5))\n",
"plt.plot(times, cache_sizes, label=\"Objects in Cache\")\n",
"plt.xlabel(\"Time (s)\")\n",
"plt.ylabel(\"Number of Cached Objects\")\n",
"plt.title(\"Number of Objects in Cache Over Time\")\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.savefig(f\"{TEMP_BASE_DIR}/objects_in_cache_over_time.pdf\")\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f30a0497-9b2e-4ea9-8ebf-6687de19aaa9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAq4AAAIjCAYAAADC0ZkAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABBCElEQVR4nO3deVxV1f7/8fdB5YADg6AMDjiR8xSmoqldo8zMMsnSryUO35sZ5kBp0qRZiWmlWQ7XrqkNXrtqWnavmqlhmlMOqZlDhGkqOAIOCQbr90c/zrcjUHg8etj2ej4e+/HwrLXO3h8WR3i7XWcdmzHGCAAAACjhvDxdAAAAAFAcBFcAAABYAsEVAAAAlkBwBQAAgCUQXAEAAGAJBFcAAABYAsEVAAAAlkBwBQAAgCUQXAEAAGAJBFcAuEpbtmxRmzZtVK5cOdlsNu3YscPTJTmpUaOG7rnnHpefb7PZNGbMGPcVVEwHDx6UzWbTa6+95vI5+vbtqxo1aritJnefryhz5syRzWbTwYMHHW1X+30EbgQEV8AivvvuOz388MOqUqWK7Ha7wsPD1bt3b3333XeeLu0v7dKlS+rRo4dOnz6tSZMm6f3331dERISnywKAG1JpTxcA4M99/PHH6tWrlypWrKgBAwaoZs2aOnjwoGbNmqWFCxdq/vz5uv/++z1d5l9SSkqKfvrpJ73zzjv63//9X0+Xg2vsnXfeUV5enqfLAP6yCK5ACZeSkqJHHnlEtWrV0tq1a1WpUiVH39ChQ9WuXTs98sgj2rlzp2rVquXBSgu6cOGCypYt6+kyrqnjx49LkgICAjxbCK6LMmXKeLoE4C+NpQJACTdx4kRduHBBM2fOdAqtkhQcHKx//OMfOn/+vCZMmODUd+TIEQ0YMEDh4eGy2+2qWbOmBg0apJycHMeYjIwMDR8+XDVq1JDdblfVqlXVp08fnTx5UlLh6+wk6csvv5TNZtOXX37paLvtttvUqFEjbd26Ve3bt1fZsmX1zDPPSJI++eQTdenSxVFL7dq19dJLLyk3N9fpvPnn2LNnj/72t7+pbNmyqlKlSoGvTZIuXryoMWPG6KabbpKPj4/CwsLUvXt3paSkOMbk5eVp8uTJatiwoXx8fBQSEqKBAwfqzJkzxZr71atXq127dipXrpwCAgJ033336fvvv3f09+3bVx06dJAk9ejRQzabTbfddtsfnjMjI0PDhg1TtWrVZLfbVadOHb366qsF7uK99tpratOmjYKCguTr66uoqCgtXLiw0HN+8MEHatmypcqWLavAwEC1b99en3/+eYFx69atU8uWLeXj46NatWrpvffeK9Y8XO6nn37S448/rrp168rX11dBQUHq0aNHgddJ/utn3bp1GjJkiCpVqqSAgAANHDhQOTk5ysjIUJ8+fRQYGKjAwECNHDlSxphCrzlp0iRFRETI19dXHTp00O7duwuMWbJkiRo1aiQfHx81atRIixcvLvRcVzK3l7t8jevv1+HOnDlTtWvXlt1u1y233KItW7YU65zfffedOnbsKF9fX1WtWlUvv/zyH97V/fzzz9WsWTP5+PioQYMG+vjjj4t1HeBGwB1XoIRbunSpatSooXbt2hXa3759e9WoUUP/+c9/HG1Hjx5Vy5YtlZGRoUcffVT16tXTkSNHtHDhQl24cEHe3t46d+6c2rVrp++//179+/fXzTffrJMnT+rTTz/Vzz//rODg4Cuu9dSpU+rcubN69uyphx9+WCEhIZJ+CzDly5dXQkKCypcvr9WrV+uFF15QVlaWJk6c6HSOM2fO6K677lL37t314IMPauHChXr66afVuHFjde7cWZKUm5ure+65R6tWrVLPnj01dOhQnT17VitXrtTu3btVu3ZtSdLAgQM1Z84c9evXT0OGDFFqaqrefvttbd++XevXr//Du2dffPGFOnfurFq1amnMmDH65Zdf9NZbb6lt27batm2batSooYEDB6pKlSoaN26chgwZoltuucXxNRfmwoUL6tChg44cOaKBAweqevXq+vrrr5WYmKhjx45p8uTJjrFvvvmm7r33XvXu3Vs5OTmaP3++evTooc8++0xdunRxjHvxxRc1ZswYtWnTRmPHjpW3t7c2bdqk1atX684773SM++GHH/TAAw9owIABiouL07vvvqu+ffsqKipKDRs2LP43Wb+9Ge3rr79Wz549VbVqVR08eFDTp0/Xbbfdpj179hS4y/7EE08oNDRUL774ojZu3KiZM2cqICBAX3/9tapXr65x48bpv//9ryZOnKhGjRqpT58+Ts9/7733dPbsWcXHx+vixYt688031bFjR+3atcsx359//rliY2PVoEEDJSUl6dSpU+rXr5+qVq1aoP7izu2VmDdvns6ePauBAwfKZrNp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vv3220K3DMofk//u/N+vvczNzdXMmTOLXX/+najf33nKycnRtGnTin2Oy8XGxurkyZN6++23C/TlX+fBBx9Ubm6uXnrppQJjfv311z8MWWFhYWrWrJnmzp3rNG737t36/PPPdffdd7tU94MPPqgNGzZoxYoVBfoyMjL066+/Svptzmw2m9Od7YMHD2rJkiVOz+nWrZu8vLw0duzYAnc6r+WdvlKlShU4/1tvvVXknfirtWTJEh05csTxePPmzdq0aZNjl4nff79+v1Rh5cqV2rNnT4HaizO318vdd9+tjRs3avPmzY62EydOFPk/BUePHnX6O5uVlaX33ntPzZo1Y5kA/hK44wqUcJGRkZo7d6569+6txo0bF/jkrJMnT+pf//qXI2RK0rhx4/T555+rQ4cOevTRR1W/fn0dO3ZMCxYs0Lp16xQQEKARI0Zo4cKF6tGjh/r376+oqCidPn1an376qWbMmKGmTZuqYcOGat26tRITE3X69GlVrFhR8+fPdwSs4mjTpo0CAwMVFxenIUOGyGaz6f3337+qYNWnTx+99957SkhI0ObNm9WuXTudP39eX3zxhR5//HHdd9996tChgwYOHKikpCTt2LFDd955p8qUKaMDBw5owYIFevPNN/XAAw8UeY2JEyeqc+fOio6O1oABAxzbYfn7+2vMmDEu1T1ixAh9+umnuueeexxbUZ0/f167du3SwoULdfDgQQUHB6tLly564403dNddd+l//ud/dPz4cU2dOlV16tRxWjZSp04dPfvss3rppZfUrl07de/eXXa7XVu2bFF4eLiSkpJcqvPP3HPPPXr//ffl7++vBg0aaMOGDfriiy8UFBR0Ta5Xp04d3XrrrRo0aJCys7M1efJkBQUFOS25SEpKUpcuXXTrrbeqf//+On36tN566y01bNhQ586dc4wr7txeLyNHjtT777+vu+66S0OHDnVshxUREVFoPTfddJMGDBigLVu2KCQkRO+++67S09M9dscYuO48sZUBgCu3c+dO06tXLxMWFmbKlCljQkNDTa9evcyuXbsKHf/TTz+ZPn36mEqVKhm73W5q1apl4uPjTXZ2tmPMqVOnzODBg02VKlWMt7e3qVq1qomLizMnT550jElJSTExMTHGbrebkJAQ88wzz5iVK1cWuh1Ww4YNC61l/fr1pnXr1sbX19eEh4ebkSNH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AC7n8j6uGRkZ+uc//6nExESdPn1akrRnzx4dP37cbcUBAAAA+Vy647pz507dfvvtCggI0MGDB/X3v/9dFStW1Mcff6xDhw7pvffec3edAAAA+Itz6Y5rQkKC+vXrpwMHDsjHx8fRfvfdd2vt2rVuKw4AAADI51Jw3bJliwYOHFigvUqVKkpLS7vqogAAAIDLuRRc7Xa7srKyCrTv379flSpVuuqiAAAAgMu5FFzvvfdejR07VpcuXZIk2Ww2HTp0SE8//bRiY2PdWiAAAAAguRhcX3/9dZ07d06VK1fWL7/8og4dOqhOnTqqUKGCXnnlFXfXCAAAALi2q4C/v79Wrlyp9evX69tvv9W5c+d08803KyYmxt31AQAAAJJcDK752rZtq7Zt27qrFgAAAKBILi0VGDJkiKZMmVKg/e2339awYcOutiYAAACgAJeC66JFiwq909qmTRstXLjwqosCAAAALudScD116pT8/f0LtPv5+enkyZNXXRQAAABwOZeCa506dbR8+fIC7cuWLVOtWrWuuigAAADgci69OSshIUGDBw/WiRMn1LFjR0nSqlWr9Prrr2vy5MnurA8AAACQ5GJw7d+/v7Kzs/XKK6/opZdekiTVqFFD06dPV58+fdxaIAAAACBdxXZYgwYN0qBBg3TixAn5+vqqfPny7qwLAAAAcHJV+7hKUqVKldxRBwAAAPCHXHpzVnp6uh555BGFh4erdOnSKlWqlNMBAAAAuJtLd1z79u2rQ4cO6fnnn1dYWJhsNpu76wIAAACcuBRc161bp6+++krNmjVzczkAAABA4VxaKlCtWjUZY9xdCwAAAFAkl4Lr5MmTNWrUKB08eNDN5QAAAACFc2mpwEMPPaQLFy6odu3aKlu2rMqUKePUf/r0abcUBwAAAORzKbjy6VgAAAC43lwKrnFxce6uAwAAAPhDLq1xlaSUlBQ999xz6tWrl44fPy5JWrZsmb777ju3FQcAAADkcym4Jicnq3Hjxtq0aZM+/vhjnTt3TpL07bffavTo0W4tEAAAAJBcDK6jRo3Syy+/rJUrV8rb29vR3rFjR23cuNFtxQEAAAD5XAquu3bt0v3331+gvXLlyjp58uRVFwUAAABczqXgGhAQoGPHjhVo3759u6pUqXLVRQEAAACXcym49uzZU08//bTS0tJks9mUl5en9evX66mnnlKf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4uHKS45BgwYZf39/8+WXX5pjx445jgsXLjjGPPbYY6Z69epm9erV5ptvvjHR0dEmOjrag1WXPKNGjTLJyckmNTXV7Ny504waNcrYbDbz+eefG2OYw6vx+10FjGEui+PJJ580X375pUlNTTXr1683MTExJjg42Bw/ftwYwxwW1+bNm03p0qXNK6+8Yg4cOGA+/PBDU7ZsWfPBBx84xvB7pnhyc3NN9erVzdNPP12gz9OvR4LrVXjrrbdM9erVjbe3t2nZsqXZuHGjp0sq0dasWWMkFTji4uKMMb9tVfL888+bkJAQY7fbze2332727dvn2aJLmMLmT5KZPXu2Y8wvv/xiHn/8cRMYGGjKli1r7r//fnPs2DHPFV0C9e/f30RERBhvb29TqVIlc/vttztCqzHM4dW4PLgyl3/uoYceMmFhYcbb29tUqVLFPPTQQ+aHH35w9DOHxbd06VLTqFEjY7fbTb169czMmTOd+vk9UzwrVqwwkgqdG0+/Hm3GGHN97u0CAAAArmONKwAAACyB4AoAAABLILgCAADAEgiuAAAAsASCKwAAACyB4AoAAABLILgCAADAEgiuAAAAsASCKwDcAA4ePCibzaYdO3Z4uhQAuGYIrgDgJn379pXNZtP48eOd2pcsWSKbzeahqgDgxkFwBQA38vHx0auvvqozZ854uhS3yMnJ8XQJAOBAcAUAN4qJiVFoaKiSkpIK7R8zZoyaNWvm1DZ58mTVqFHD8bhv377q1q2bxo0bp5CQEAUEBGjs2LH69ddfNWLECFWsWFFVq1bV7NmzC5x/7969atOmjXx8fNSoUSMlJyc79e/evVudO3dW+fLlFRISokceeUQnT5509N92220aPHiwhg0bpuDgYHXq1Mn1yQAANyO4AoAblSpVSuPGjdNbb72ln3/+2eXzrF69WkePHtXatWv1xhtvaPTo0brnnnsUGBioTZs26bHHHtPAgQMLXGPEiBF68skntX37dkVHR6tr1646deqUJCkjI0MdO3ZU8+bN9c0332j58uVKT0/Xgw8+6HSOuXPnytvbW+vXr9eMGTNc/hoAwN0IrgDgZvfff7+aNWum0aNHu3yOihUrasqUKapbt6769++vunXr6sKFC3rmmWcUGRmpxMREeXt7a926dU7PGzx4sGJjY1W/fn1Nnz5d/v7+mjVrliTp7bffVvPmzTVu3DjVq1dPzZs317vvvqs1a9Zo//79jnNERkZqwoQJqlu3rurWrevy1wAA7kZwBYBr4NVXX9XcuXP1/fffu/T8hg0bysvr/35Eh4SEqHHjxo7HpUqVUlBQkI4fP+70vOjoaMefS5curRYtWjhq+Pbbb7VmzRqVL1/ecdSrV0+SlJKS4nheVFSUSzUDwLVW2tMFAMCNqH379urUqZMSExPVt29fR7uXl5eMMU5jL126VOD5ZcqUcXpss9kKbcvLyyt2TefOnVPXrl316quvFugLCwtz/LlcuXLFPicAXE8EVwC4RsaPH69mzZo5/Xd7pUqVlJaWJmOMY4ssd+69unHjRrVv316S9Ouvv2rr1q0aPHiwJOnmm2/WokWLVKNGDZUuzY9/ANbDUgEAuEYaN26s3r17a8qUKY622267TSdOnNCECROUkpKiqVOnatmyZW675tSpU7V48WLt3btX8fHxOnPmjPr37y9Jio+P1+nTp9WrVy9t2bJFKSkpWrFihfr166fc3Fy31QAA1wrBFQCuobFjxzr9d379+vU1bdo0TZ06VU2bNtXmzZv11FNPue1648eP1/jx49W0aVOtW7dOn376qYKDgyVJ4eHhWr9+vXJzc3XnnXeqcePGGjZsmAICApzW0wJASWUzly+2AgAAAEog/okNAAAASyC4AgAAwBIIrgAAALAEgisAAAAsgeAKAAAASyC4AgAAwBIIrgAAALAEgisAAAAsgeAKAAAASyC4AgAAwBIIrgAAALCE/wdDda1wJWY5swAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from collections import Counter\n",
"# Count occurrences of each number\n",
"count = Counter(list(db.lambda_values.values()))\n",
"\n",
"# Separate the counts into two lists for plotting\n",
"x = list(count.keys()) # List of unique numbers\n",
"y = list(count.values()) # List of their respective counts\n",
"\n",
"# Plot the data\n",
"plt.figure(figsize=(8, 6))\n",
"plt.bar(x, y, color='skyblue')\n",
"\n",
"# Adding labels and title\n",
"plt.xlabel('Number')\n",
"plt.ylabel('Occurrences')\n",
"plt.title('Occurance of each lambda in db')\n",
"plt.savefig(f\"{TEMP_BASE_DIR}/lambda_distribution.pdf\")\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "c192564b-d3c6-40e1-a614-f7a5ee787c4e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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GjHs9kpxPWKuQwwAAIBzolOnTpo8cfyJ6xB/MtNzHeKmCXU14p7xleY6xARiAAAAnDOdOnVSUlISd6oDAACAfTmdTrVs2dLXZZxW5YnmAAAAgA8QiAEAAGBrBGIAAADYGoEYAAAAtkYgBgAAgK0RiAEAAGBrBGIAAADYGoEYAAAAtkYgBgAAgK0RiAEAAGBrlSoQl5SU6KGHHlJCQoKCg4PVoEEDTZw4UcYYzxpjjMaPH6+YmBgFBwerR48e2rlzp9dxjhw5ogEDBig0NFQ1a9bUkCFDdOzYMa81W7du1aWXXqqgoCDVq1dPkydPPi+vEQAAAJVLpQrETz31lKZNm6aXX35Z33//vZ566ilNnjxZL730kmfN5MmTNWXKFE2fPl3r169XSEiIevbsqfz8fM+aAQMGKDU1VcuXL9eSJUv0+eefa+jQoZ753NxcXXnllYqLi9OmTZv09NNP65FHHtHMmTPP6+sFAACA7/n7uoBTrV27Vtdcc4169+4tSYqPj9e7776rDRs2SDpxdviFF17Qgw8+qGuuuUaS9OabbyoqKkqLFi1S//799f333+vTTz/Vxo0b1b59e0nSSy+9pL/97W965plnFBsbq7lz56qwsFCzZs2Sy+VSYmKivv32Wz333HNewRkAAAB/fZUqEHfq1EkzZ87Ujz/+qMaNG+t///ufvvzySz333HOSpLS0NKWnp6tHjx6e54SFhaljx45at26d+vfvr3Xr1qlmzZqeMCxJPXr0kNPp1Pr169W3b1+tW7dOXbp0kcvl8qzp2bOnnnrqKWVlZSk8PNyrroKCAhUUFHge5+bmSpLcbrfcbvdZv2632y1jjCXHsjt6aR16aR16aR16aR16aR16aR0re3kmx6hUgfiBBx5Qbm6umjZtKj8/P5WUlOjxxx/XgAEDJEnp6emSpKioKK/nRUVFeebS09NVp04dr3l/f3/VqlXLa01CQkKpY5yc+30gnjRpkh599NFS9R48eNBrq0ZFud1u5eTkyBgjp7NS7WKpcuildeildeildeildeildeildazs5dGjR8u9tlIF4vfee09z587VO++849nGMHr0aMXGxmrgwIE+q2vcuHEaM2aM53Fubq7q1aunyMhIhYaGnvXx3W63HA6HIiMj+YN0luildeildeildeildeildeildazsZVBQULnXVqpAfN999+mB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UqEbc+zdu1fNmjXzPH7vvfeUkJCgadOmSZLS09P11ltvWVMhAAAAcA5V6AyxMcbr8bJly3TVVVd5HsfHxys9Pf3sKgMAAADOgwoF4saNG2vhwoWSTmyX2L9/v1cg/uWXX1SzZk1LCgQAAADOpQptmbj33nt10003KTw8XHl5eWrWrJl69uzpmV+1apVat25tVY0AAADAOVOhQNy/f39FRETov//9r2rWrKkRI0bI3//EoY4cOaJatWrplltusbRQAAAA4FyoUCCWpCuuuEJXXHFFqfFatWrpgw8+OKuiAAAAgPPFshtz/Pbbb5o1a5amTZumvXv3nvXxnnzySTkcDo0ePdozlp+fr5SUFEVERKh69erq16+fMjIyvJ63b98+9e7dW9WqVVOdOnV03333qbi42GvN6tWr1bZtWwUGBqphw4aaM2fOWdcLAACAqqlCgXjIkCFq0aKF53FhYaGSkpJ02223KSUlRa1bt9aWLVsqXNTGjRs1Y8YMXXTRRV7jd999txYvXqz3339fa9as0f79+/WPf/zDM19SUqLevXursLBQa9eu1RtvvKE5c+Zo/PjxnjVpaWnq3bu3unXrpm+//VajR4/WbbfdpqVLl1a4XgAAAFRdFQrEn332mVcQfeedd7R9+3bNnTtX27dvV3R0dIVvzHHs2DENGDBAr776qsLDwz3jOTk5ev311/Xcc8/p8ssvV7t27TR79mytXbtWX3/9taQTl3/77rvv9Pbbb6t169a66qqrNHHiRE2dOlWFhYWSpOnTpyshIUHPPvusmjVrppEjR+q6667T888/X6F6AQAAULVVaA9xenq64uPjPY8XLVqk9u3b68Ybb5Qk3X777Xr66acrVFBKSop69+6tHj166LHHHvOMb9q0SUVFRerRo4dnrGnTpqpfv77WrVunpKQkrVu3Ti1btvS6i17Pnj11xx13KDU1VW3atNG6deu8jnFyzalbM36voKBABQUFnse5ubmSJLfbLbfbXaHXeSq32y1jjCXHsjt6aR16aR16aR16aR16aR16aR0re3kmx6hQIA4JCVF2drYkqbi4WKtXr9add97pma9Ro4ZycnLO+Ljz5s3T5s2btXHjxlJz6enpcrlcpa5vHBUV5bkJSHp6ulcYPjl/cu6P1uTm5ur48eMKDg4u9b0nTZpU5hnvgwcPKj8/v/wv8DTcbrdy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YgAAANgagRgAAAC2RiAGAACArRGIAQAAYGsEYgAAANgagRgAAAC2RiAGAACArfn7ugAAZ8btdis1NVVZWVkKDw9XYmKinE5+twUAoKIIxEAVsnbtWk2dPlM79vyqwuISufz91CT+AqUMH6pOnTr5ujwAAKokTisBVcTatWs19qEJ+uFYkOKvGqY2gyYo/qph2pEXpLEPTdDatWt9XSIAAFUSgRioAtxut6ZOn6njYfFq1WewwmLi5B8QqLCYOF109WDl14zXKzNeldvt9nWpAABUOQRioApITU3Vjj2/KuHiHnI4HF5zDodDce2764e0X5SamuqjCgEAqLoIxEAVkJWVpcLiEoXUji5zvnpEtAqLS5SVlXWeKwMAoOojEANVQHh4uFz+fso7lF7m/LHD6XL5+yk8PPw8VwYAQNVXqQLxpEmTdPHFF6tGjRqqU6eOrr32Wu3YscNrTX5+vlJSUhQREaHq1aurX79+ysjI8Fqzb98+9e7dW9WqVVOdOnV03333qbi42GvN6tWr1bZtWwUGBqphw4aaM2fOuX55QIUlJiaqSfwF2vPNChljvOaMMdr7zUo1TairxMREH1UIAEDVVakC8Zo1a5SSkqKvv/5ay5cvV1FRka688krl5eV51tx9991avHix3n//fa1Zs0b79+/XP/7xD898SUmJevfurcLCQq1du1ZvvPGG5syZo/Hjx3vWpKWlqXfv3urWrZu+/fZbjR49WrfddpuWLl16Xl8vUF5Op1Mpw4cqKHuPti6ZpewDe1RcmK/sAyceB2Xv0Yhht3M9YgAAKsBhfn+6qRI5ePCg6tSpozVr1qhLly7KyclRZGSk3nnnHV133XWSpB9++EHNmjXTunXrlJSUpE8++URXX3219u/fr6ioKEnS9OnTdf/99+vgwYNyuVy6//779fHHH2v79u2e79W/f39lZ2fr008//dO6cnNzFRYWppycHIWGhp7163S73crMzFSdOnUINGfpr97Lsq5D3DShrkYMu93y6xD/1Xt5PtFL69BL69BL69BL61jZyzPJa5X6xhw5OTmSpFq1akmSNm3apKKiIvXo0cOzpmnTpqpfv74nEK9bt04tW7b0hGFJ6tmzp+644w6lpqaqTZs2WrdundcxTq4ZPXp0mXUUFBSooKDA8zg3N1fSiR+aFZe5crvdMsZwySwLVIVeut1ufffd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t9stt9t91vW43W4ZY0odKykpSV9++aUefWySVi77RJLkkNSj5980/t8PKCkpyZLv/1dyul7izNFL69BL69BL69BL69BL61jZyzM5hi0D8aFDh1RSUqKoqCiv8aioKP3www+l1k+aNEmPPvpoqfGDBw8qPz//rOtxu93KycmRMabUGd8GDRpozusztW/fPh07dkzVq1dX/fr15XQ6lZmZedbf+6/mj3qJM0MvrUMvrUMvrUMvrUMvrWNlL48ePVrutbYMxGdq3LhxXldxyM3NVb169RQZGanQ0NCzPr7b7ZbD4VBkZORpf/jR0dFn/X3soDy9RPnQS+vQS+vQS+vQS+vQS+tY2cugoKByr7VlIK5du7b8/PyUkZHhNZ6RkVFm8AwMDFRgYGCpcafTadkb3+FwWHo8O6OX1qGX1qGX1qGX1qGX1qGX1rGql2fyfFv+1Fwul9q1a6eVK1d6xtxut1auXKnk5GQfVgYAAIDzzZZniCVpzJgxGjhwoNq3b68OHTrohRdeUF5engYNGuTr0gAAAHAe2TYQ33DDDTp48KDGjx+v9PR0tW7dWp9++mmpD9oBAADgr822gViSRo4cqZEjR/q6DAAAAPiQLfcQAwAAACcRiAEAAGBrBGIAAADYGoEYAAAAtkYgBgAAgK0RiAEAAGBrBGIAAADYGoEYAAAAtmbrG3NUlDFGkpSbm2vJ8dxut44ePaqgoCA5nfyOcjbopXXopXXopXXopXXopXXopXWs7OXJnHYyt/0RAnEFHD16VJJUr149H1cCAACAP3L06FGFhYX94RqHKU9shhe32639+/erRo0acjgcZ3283Nxc1atXTz///LNCQ0MtqNC+6KV16KV16KV16KV16KV16KV1rOylMUZHjx5VbGzsn55t5gxxBTidTtWtW9fy44aGhvIHySL00jr00jr00jr00jr00jr00jpW9fLPzgyfxEYXAAAA2BqBGAAAALZGIK4EAgMD9fDDDyswMNDXpVR59NI69NI69NI69NI69NI69NI6vuolH6oDAACArXGGGAAAALZGIAYAAICtEYgBAABgawRiAAAA2BqBuBKYOnWq4uPjFRQUpI4dO2rDhg2+LqnS+/zzz9WnTx/FxsbK4XBo0aJFXvPGGI0fP14xMTEKDg5Wjx49tHPnTt8UW4lNmjRJF198sWrUqKE6dero2muv1Y4dO7zW5OfnKyUlRREREapevbr69eunjIwMH1VceU2bNk0XXXSR52LyycnJ+uSTTzzz9LHinnzySTkcDo0ePdozRj/L55FHHpHD4fD6atq0qWeePp6ZX3/9VTfffLMiIiIUHBysli1b6ptvvvHM83dP+cTHx5d6XzocDqWkpEjyzfuSQOxj8+fP15gxY/Twww9r8+bNatWqlXr27KnMzExfl1ap5eXlqVWrVpo6dWqZ85MnT9aUKVM0ffp0rV+/XiEhIerZs6fy8/PPc6WV25o1a5SSkqKvv/5ay5cvV1FRka688krl5eV51tx9991avHix3n//fa1Zs0b79+/XP/7xDx9WXTnVrVtXTz75pDZt2qRvvvlGl19+ua655hqlpqZKoo8VtXHjRs2YMUMXXXSR1zj9LL/ExEQdOHDA8/Xll1965uhj+WVlZemSSy5RQECAPvnkE3333Xd69tlnFR4e7lnD3z3ls3HjRq/35PLlyyVJ119/vSQfvS8NfKpDhw4mJSXF87ikpMTExsaaSZMm+bCqqkWSWbhwoeex2+020dHR5umnn/aMZWdnm8DAQPPuu+/6oMKqIzMz00gya9asMcac6FtAQIB5//33PWu+//57I8msW7fOV2VWGeHh4ea1116jjxV09OhR06hRI7N8+XJz2WWXmbvuussYw/vyTDz88MOmVatWZc7RxzNz//33m86dO592nr97Ku6uu+4yDRo0MG6322fvS84Q+1BhYaE2bdqkHj16eMacTqd69OihdevW+bCyqi0tLU3p6elefQ0LC1PHjh3p65/IycmRJNWqVUuStGnTJhUVFXn1smnTpqpfvz69/AMlJSWaN2+e8vLylJycTB8rKCUlRb179/bqm8T78kzt3LlTsbGxuvDCCzVgwADt27dPEn08Ux999JHat2+v66+/XnXq1FGbNm306quveub5u6diCgsL9fbbb2vw4MFyOBw+e18SiH3o0KFDKikpUVRUlNd4VFSU0tPTfVRV1Xeyd/T1zLjdbo0ePVqXXHKJWrRoIelEL10ul2rWrOm1ll6Wbdu2bapevboCAwM1fPhwLVy4UM2bN6ePFTBv3jxt3rxZkyZNKjVHP8uvY8eOmjNnjj799FNNmzZNaWlpuvTSS3X06FH6eIZ2796tadOmqVGjRlq6dKnuuOMOjRo1Sm+88YYk/u6pqEWLFik7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f6ycnJxSa+vXr+/1+GQ4rlevXpnjWVlZXuMNGzaUw+HwGmvcuLEkea4vvHfvXjVq1KjU927SpEmpsdTUVPXt21dhYWEKDQ1VZGSkbr75Zkkqs34AOB/8/3wJAKCyePvtt/Wvf/1L1157re677z7VqVNHfn5+mjRpknbt2lVqvZ+fX5nHOd24OYcfK8nOztZll12m0NBQTZgwQQ0aNFBQUJA2b96s+++/v8wP4QHA+UAgBoAqZMGCBbrwwgv1wQcfeJ25ffjhh8/J9/vpp59kjPH6Xj/++KMkeT4oFxcXp507d5Z67o4dO7wer169WocPH9YHH3ygLl26eMbT0tLOQeUAUH5smQCAKuTkmd1Tz+SuX79e69atOyffb//+/Vq4cKHncW5urt588021bt1a0dHRkqS//e1v+vrrr7VhwwbPuoMHD2ru3Ll/WnthYaFeeeWVc1I7AJQXZ4gBoBKaNWuWPv3001LjXbt21QcffKC+ffuqd+/eSktL0/Tp09W8eXMdO3bM8joaN26sIUOGaOPGjYqKitKsWbOUkZGh2bNne9aMHTtWb731lnr16uV12bW4uDht3brVs65Tp04KDw/XwIEDNWrUKDkcDr311lvndJsGAJQHgRgAKqFp06aVOb5v3z4dO3ZMM2bM0NKlS9W8eXO9/fbbev/997V69WrL62jUqJFeeukl3XfffdqxY4cSEhI0f/589ezZ07MmJiZGn332me688049+eSTioiI0PDhwxUbG6shQ4Z41kVERGjJkiW655579OCDDyo8PFw333yzunfv7nU8ADjfuDEHAAAAbI09xAAAALA1AjEAAABsjUAMAAAAWyMQAwAAwNYIxAAAALA1AjEAAABsjUAMAAAAWyMQAwAAwNYIxAAAALA1AjEAAABsjUAMAAAAWyMQAwAAwNb+L/lynk305vvnAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plotting lambda against access_count.\n",
"\n",
"plt.figure(figsize=(8, 6))\n",
"plt.scatter(merged['lambda'], merged['access_count'], alpha=0.7, edgecolor='k')\n",
"plt.title('Lambda vs Access Count', fontsize=14)\n",
"plt.xlabel('Lambda', fontsize=12)\n",
"plt.ylabel('Access Count', fontsize=12)\n",
"plt.grid(alpha=0.3)\n",
"\n",
"plt.savefig(f\"{TEMP_BASE_DIR}/lambda_vs_access_count.pdf\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "00a12eea-c805-4209-9143-48fa65619873",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAIjCAYAAAAZajMiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABEDElEQVR4nO3dfXzO9f////sxsxMnO3OyGYuZ5TxENHLy0aJSUStv3sppUZGkE1ahkCHvEpG33oV6V4qik/cbCRFJYs6iYm0RNiezE/Y2bM/vH/12/Drapu3YseOYV7fr5XJcLh3P19njeHiNe689X6/DZowxAgAAACzAy9MFAAAAAK5CuAUAAIBlEG4BAABgGYRbAAAAWAbhFgAAAJZBuAUAAIBlEG4BAABgGYRbAAAAWAbhFgAAAJZBuAXwl7Z9+3Z17NhRVatWlc1m065duzxdkoMGDRrotttu83QZTrPZbHruuefK/TjdunVTt27d7O+//PJL2Ww2LV++vEz7nTlzppo0aaL8/PwyVugZzz33nGw2m0v3+cde79+/X97e3tq3b59LjwM4i3ALuMH333+ve++9V3Xr1pWvr6/Cw8M1YMAAff/9954u7S/t4sWLuueee5Senq6XX35Zb7/9turXr+/pslBBZGVlacaMGRo3bpy8vPjnsjjNmjVTr169NHHiRE+XAkiSvD1dAGB1H330kfr376+QkBANGzZMkZGRSklJ0RtvvKHly5dr6dKluvPOOz1d5l9SUlKSfvnlF73++uu6//77PV2OJf3vf/+Tt/eV+U/Nm2++qUuXLql///6eLqXCe/DBB3XrrbcqKSlJUVFRni4Hf3FX5t84wBUiKSlJ9913nxo2bKhNmzapVq1a9mWPPvqoOnfurPvuu0979uxRw4YNPVhpYTk5OapSpYqnyyhXJ06ckCQFBQV5thAL8/Pz83QJTlu0aJHuuOOOP/0Mly5dUn5+vnx8fNxUWcUTGxur4OBgLVmyRJMnT/Z0OfiL4/csQDl68cUXlZOTo4ULFzoEW0mqWbOm/vnPf+rcuXOaOXOmw7KjR49q2LBhCg8Pl6+vryIjI/XQQw/pwoUL9nUyMjL02GOPqUGDBvL19VW9evU0cOBAnTp1SpK0ePFi2Ww2paSkOOy7YC7il19+aR/r1q2bWrRooR07dqhLly6qUqWKnn76aUnSxx9/rF69etlriYqK0pQpU5SXl+ew34J97N+/X//3f/+nKlWqqG7duoU+mySdP39ezz33nK6++mr5+fmpTp06uuuuu5SUlGRfJz8/X7Nnz1bz5s3l5+en0NBQjRgxQmfOnClR79evX6/OnTuratWqCgoKUu/evXXgwAH78sGDB6tr166SpHvuuUc2m81hHmFRMjIyNGbMGEVERMjX11eNGjXSjBkzCs3HnDVrljp27KgaNWrI399fbdu2LXbu57///W+1b99eVapUUXBwsLp06aLPP/+80HqbN29W+/bt5efnp4YNG+qtt9760x6kpKTIZrNp1qxZmjdvnho2bKgqVaqoR48eOnLkiIwxmjJliurVqyd/f3/17t1b6enpDvsobs5sgwYNNHjw4D+t4Y/bF8wBPXTokAYPHqygoCAFBgZqyJAhysnJ+dP9SdLChQsVFRUlf39/tW/fXl999VWx6+bl5enpp59WWFiYqlatqjvuuENHjhz502MkJydrz549io2NdRj/fU9nz56tqKgo+fr6av/+/ZL+/LyTfjv3GjRoUOiYRc2PtdlsGjVqlFauXKkWLVrI19dXzZs31+rVqwttv3nzZl133XXy8/NTVFSU/vnPfxb7+f7973+rbdu28vf3V0hIiPr161dkX0ra68qVK6tbt276+OOPiz0m4C5cuQXK0aeffqoGDRqoc+fORS7v0qWLGjRooP/85z/2sWPHjql9+/bKyMjQ8OHD1aRJEx09elTLly9XTk6OfHx8dPbsWXXu3FkHDhzQ0KFDde211+rUqVP65JNP9Ouvv6pmzZqlrvX06dO65ZZb1K9fP917770KDQ2V9FtIrlatmsaOHatq1app/fr1mjhxorKysvTiiy867OPMmTO6+eabddddd6lv375avny5xo0bp5YtW+qWW26R9FvYuO2227Ru3Tr169dPjz76qLKzs7V27Vrt27fP/ivNESNGaPHixRoyZIhGjx6t5ORkvfrqq0pMTNSWLVtUuXLlYj/LF198oVtuuUUNGzbUc889p//973+aO3euOnXqpJ07d6pBgwYaMWKE6tatq2nTpmn06NG67rrr7J+5KDk5OeratauOHj2qESNG6KqrrtLXX3+t+Ph4HT9+XLNnz7av+8orr+iOO+7QgAEDdOHCBS1dulT33HOPPvvsM/Xq1cu+3vPPP6/nnntOHTt21OTJ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3XffderYZe1rcduXZb/FnUcl5apzpbzUqFFDly5dUnZ2dpG/fbncfN0/U9qfTVf2Kj8/XzabTatWrSpyv8VdqS6JgrDtzJx/wJUIt0A5uu222/T6669r8+bNuuGGGwot/+qrr5SSkqIRI0ZI+i20BQQE/Ok3/URFRf3pOgVXwjIyMhzGC67IlMSXX36p06dP66OPPlKXLl3s48nJySXexx9FRUVp27ZtunjxYrE3hUVFRemLL75Qp06dSh0iCr6E4ccffyy07IcfflDNmjWdunoWFRWls2fPFrp7/o8+/PBD+fn5ac2aNfL19bWPL1q0qND+8vPztX//frVu3brU9bhLcHBwoXPowoULOn78uNtrKfizPXjwoLp3724fv3jxopKTk9WqVatC2xw8eNDhvTFGhw4d0jXXXHPZYzVp0kTSb+f6n637+9pKct4V1VOpdD+bv1erVi35+/sX+qxF1RMVFSVjjCIjI+3/Q1YUZ3qdnJwsLy+vy+4XcAfm3ALl6Mknn5S/v79GjBih06dPOyxLT0/Xgw8+qCpVqujJJ5+UJHl5ealPnz769NNP9d133xXaX8GVmri4OO3evVsrVqwodp2COXq/nwual5enhQsXlrj+gis7v79CdOHCBc2fP7/E+/ijuLg4nTp1Sq+++mqhZQXH6du3r/Ly8jRlypRC61y6dKnIYFCgTp06at26tZYsWeKw3r59+/T555/r1ltvdaruvn37auvWrVqzZk2hZRkZGbp06ZKk33pms9kcrsKlpKRo5cqVDtv06dNHXl5emjx5cqEr4BXl6qX023n0+3NI+u3xUGW9cuuMdu3aqVatWlqwYIHDY/EWL15c7Dnx1ltvOUwNWr58uY4fP25/ekdxYmJiJKnIn8OilOa8i4qKUmZmpsNvdY4fP17kz3NJVKpUST179tTKlSt1+PBh+/iBAwcKna933XWXKlWqpOeff77QeWaMsf895Uyvd+zYoebNmxc7JxdwF67cAuUoOjpaS5Ys0YABA9SyZctC31B26tQpvffeew43i0ybNk2ff/65unbtquHDh6tp06Y6fvy4li1bps2bNysoKEhPPvmkli9frnvuuUdDhw5V27ZtlZ6erk8++UQLFixQq1at1Lx5c11//fWKj49Xenq6QkJCtHTpUnsIK4mOHTsqODhYgwYN0ujRo2Wz2fT222+XKXwN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hx/UtGlTbd26Vddff32J9puVlaXAwEBlZmYqICCgPD+C3fTEU245DgAAQHkY36amW49X0rxWoa/c/lFmZqYkKSQkRJK0Y8cOXbx4UbGxsfZ1mjRpoquuukpbt24tdj+5ubnKyspyeAEAAODKd8WE2/z8fI0ZM0adOnVSixYtJEmpqany8fFRUFCQw7qhoaFKTU0tdl8JCQkKDAy0vyIiIsqzdAAAALjJFRNuR44cqX379mnp0qVl3ld8fLwyMzPtryNHjrigQgAAAHiat6cLKIlRo0bps88+06ZNm1SvXj37eFhYmC5cuKCMjAyHq7dpaWkKCwsrdn++vr7y9fUtz5IBAADgARX6yq0xRqNGjdKKFSu0fv16RUZGOixv27atKleurHXr1tnHfvzxRx0+fFgxMTHuLhcAAAAeVqGv3I4cOVLvvvuuPv74Y1WvXt0+jzYwMFD+/v4KDAzUsGHDNHbsWIWEhCggIECPPPKIYmJiSvykBAAAAFhHhQ63r732miSpW7duDuOLFi3S4MGDJUkvv/yyvLy8FBcXp9zcXPXs2VPz5893c6UAAACoCCp0uC3JI3j9/Pw0b948zZs3zw0VAQAAoCKr0HNuAQAAgNIg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIA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yb5d27ZtnaoZAMqbt6cLAIC/qi5duqhnz56Kj4/X4MGD7eNeXl4yxjise/HixULbV65c2eG9zWYrciw/P7/ENZ09e1a33367ZsyYUWhZnTp17P9dtWrVEu8TANyJcAsAHjR9+nS1bt3a4Vf7tWrVUmpqqowx9seDufLZtN988426dOkiSbp06ZJ27NihUaNGSZKuvfZaffjhh2rQoIG8vfknAsCVh2kJAOBBLVu21IABAzRnzhz7WLdu3XTy5EnNnDlTSUlJmjdvnlatWuWyY86bN08rVqzQDz/8oJEjR+rMmTMaOnSoJGnkyJFKT09X//79tX37diUlJWnNmjUaMmSI8vLyXFYDAJQXwi0AeNjkyZMdpg40bdpU8+fP17x589SqVSt9++23euKJJ1x2vOnTp2v69Olq1aqVNm/erE8++UQ1a9aUJIWHh2vLli3Ky8tTjx491LJlS40ZM0ZBQUEO83sBoKKymT9O7AIAAACuUPxvOAAAACyDcAsAAADLINwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINwCAADAMv4fVvQCaHUDfkEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from collections import Counter\n",
"# Count occurrences of each number\n",
"count = Counter(np.array(list(db.mu_values.values())).round(0))\n",
"\n",
"# Separate the counts into two lists for plotting\n",
"x = list(count.keys()) # List of unique numbers\n",
"y = list(count.values()) # List of their respective counts\n",
"\n",
"# Plot the data\n",
"plt.figure(figsize=(8, 6))\n",
"plt.bar(x, y, color='skyblue')\n",
"\n",
"# Adding labels and title\n",
"plt.xlabel('Number')\n",
"plt.ylabel('Occurrences')\n",
"plt.title('Occurance of each mu in db (rounded)')\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b07180c3-d739-44a9-a8fd-88f9756c6f2e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 19,
"id": "adbfeb40-76bd-4224-ac45-65c7b2b2cb7b",
"metadata": {},
"outputs": [],
"source": [
"def plot_requests(object_id: int):\n",
" mu = db.mu_values[object_id]\n",
" lmb = db.lambda_values[object_id]\n",
" rq_log = np.array(cache.request_log[object_id])\n",
" df = rq_log[1:] - rq_log[:-1]\n",
" pd.DataFrame(df, columns=[f\"{object_id}, mu:{mu:.2f}, lambda: {lmb:.2f}\"]).plot()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "1f550686-3463-4e50-be83-ceafb27512b0",
"metadata": {},
"outputs": [],
"source": [
"def print_rate(object_id: int):\n",
" # Calculate time intervals between consecutive events\n",
" intervals = np.diff(np.array(cache.request_log[object_id])) # Differences between each event time\n",
" \n",
" # Calculate the rate per second for each interval\n",
" rates = 1 / intervals # Inverse of the time interval gives rate per second\n",
" \n",
" # Optional: Calculate the average event rate over all intervals\n",
" average_rate = np.mean(rates)\n",
" print(\"Average event rate per second:\", average_rate)\n",
" print(\"The mu is: \", db.lambda_values[object_id])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "b47990b1-0231-43ac-8bc5-8340abe4a8b3",
"metadata": {},
"outputs": [],
"source": [
"os.makedirs(EXPERIMENT_BASE_DIR, exist_ok=True)\n",
"folder_name = experiment_name.replace(\" \", \"_\").replace(\"(\", \"\").replace(\")\", \"\").replace(\".\", \"_\")\n",
"folder_path = os.path.join(EXPERIMENT_BASE_DIR, folder_name)\n",
"os.makedirs(folder_path, exist_ok=True)\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "db83cad4-7cc6-4702-ae3a-d1af30a561d2",
"metadata": {},
"outputs": [
{
"ename": "Error",
"evalue": "Destination path './experiments/No_Refresh_1_0s_ttl/hit_age.csv' already exists",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[22], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m file_names \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mlistdir(TEMP_BASE_DIR)\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m file_name \u001b[38;5;129;01min\u001b[39;00m file_names:\n\u001b[0;32m----> 4\u001b[0m \u001b[43mshutil\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmove\u001b[49m\u001b[43m(\u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpath\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjoin\u001b[49m\u001b[43m(\u001b[49m\u001b[43mTEMP_BASE_DIR\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfile_name\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfolder_path\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/usr/lib/python3.12/shutil.py:845\u001b[0m, in \u001b[0;36mmove\u001b[0;34m(src, dst, copy_function)\u001b[0m\n\u001b[1;32m 842\u001b[0m real_dst \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(dst, _basename(src))\n\u001b[1;32m 844\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mexists(real_dst):\n\u001b[0;32m--> 845\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m Error(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDestination path \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m already exists\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m real_dst)\n\u001b[1;32m 846\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 847\u001b[0m os\u001b[38;5;241m.\u001b[39mrename(src, real_dst)\n",
"\u001b[0;31mError\u001b[0m: Destination path './experiments/No_Refresh_1_0s_ttl/hit_age.csv' already exists"
]
}
],
"source": [
"file_names = os.listdir(TEMP_BASE_DIR)\n",
" \n",
"for file_name in file_names:\n",
" shutil.move(os.path.join(TEMP_BASE_DIR, file_name), folder_path)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "graphs",
"language": "python",
"name": "graphs"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}