From ad4654dd0f1a46b2279d119048968676af63e1d8 Mon Sep 17 00:00:00 2001 From: Tuan-Dat Tran Date: Thu, 28 Nov 2024 16:38:55 +0100 Subject: [PATCH] fix(simulation): Updated avg_age calculation not only for `details.csv`, but all avg_age calculation. Signed-off-by: Tuan-Dat Tran --- aoi_cache_simulation.ipynb | 2 +- experiments/No_Refresh_0_5s_ttl/hit_age.csv | 200 +-- .../lambda_distribution.pdf | Bin 11740 -> 11740 bytes .../lambda_vs_access_count.pdf | Bin 12864 -> 12864 bytes .../objects_in_cache_over_time.pdf | Bin 14667 -> 14667 bytes .../No_Refresh_0_5s_ttl/overall_hit_age.csv | 14 +- experiments/No_Refresh_1_0s_ttl/hit_age.csv | 200 +-- .../lambda_distribution.pdf | Bin 10995 -> 10995 bytes .../lambda_vs_access_count.pdf | Bin 11604 -> 11604 bytes .../objects_in_cache_over_time.pdf | Bin 14781 -> 14781 bytes .../No_Refresh_1_0s_ttl/overall_hit_age.csv | 14 +- experiments/No_Refresh_2_0s_ttl/hit_age.csv | 200 +-- .../lambda_distribution.pdf | Bin 11090 -> 11090 bytes .../lambda_vs_access_count.pdf | Bin 12241 -> 12241 bytes .../objects_in_cache_over_time.pdf | Bin 13789 -> 13789 bytes .../No_Refresh_2_0s_ttl/overall_hit_age.csv | 14 +- experiments/No_Refresh_3_0s_ttl/hit_age.csv | 200 +-- .../lambda_distribution.pdf | Bin 11602 -> 11602 bytes .../lambda_vs_access_count.pdf | Bin 11563 -> 11563 bytes .../objects_in_cache_over_time.pdf | Bin 13786 -> 13786 bytes .../No_Refresh_3_0s_ttl/overall_hit_age.csv | 14 +- experiments/No_Refresh_4_0s_ttl/hit_age.csv | 200 +-- .../lambda_distribution.pdf | Bin 11712 -> 11712 bytes .../lambda_vs_access_count.pdf | Bin 11276 -> 11276 bytes .../objects_in_cache_over_time.pdf | Bin 13802 -> 13802 bytes .../No_Refresh_4_0s_ttl/overall_hit_age.csv | 14 +- experiments/No_Refresh_5_0s_ttl/hit_age.csv | 200 +-- .../lambda_distribution.pdf | Bin 11429 -> 11429 bytes .../lambda_vs_access_count.pdf | Bin 11244 -> 11244 bytes .../objects_in_cache_over_time.pdf | Bin 13830 -> 13830 bytes .../No_Refresh_5_0s_ttl/overall_hit_age.csv | 14 +- experiments/avg_ages.md | 12 +- experiments/hr_and_age_vs_ttl.png | Bin 38923 -> 38027 bytes multi_aoi_cache_simulation.ipynb | 1228 ++++++++--------- 34 files changed, 1263 insertions(+), 1263 deletions(-) diff --git a/aoi_cache_simulation.ipynb b/aoi_cache_simulation.ipynb index ac29762..9d88b77 100644 --- a/aoi_cache_simulation.ipynb +++ b/aoi_cache_simulation.ipynb @@ -473,7 +473,7 @@ "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.hits[obj_id]) # Only average over hits\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})" ] diff --git a/experiments/No_Refresh_0_5s_ttl/hit_age.csv b/experiments/No_Refresh_0_5s_ttl/hit_age.csv index a07638a..91ade20 100644 --- a/experiments/No_Refresh_0_5s_ttl/hit_age.csv +++ b/experiments/No_Refresh_0_5s_ttl/hit_age.csv @@ -1,101 +1,101 @@ obj_id,hit_rate,avg_age -1,0.3360655737704918,0.07317073170731707 -2,0.6151832460732984,0.2553191489361702 -3,0.2992125984251969,0.34210526315789475 -4,0.2920353982300885,0.30303030303030304 -5,0.4959016393442623,0.2231404958677686 -6,0.3448275862068966,0.275 -7,0.7225609756097561,0.22573839662447256 -8,0.3046875,0.15384615384615385 -9,0.32456140350877194,0.2702702702702703 -10,0.28695652173913044,0.24242424242424243 -11,0.524390243902439,0.17829457364341086 -12,0.3787878787878788,0.22 -13,0.3597122302158273,0.24 -14,0.2916666666666667,0.2 -15,0.5134099616858238,0.26865671641791045 -16,0.48444444444444446,0.22018348623853212 -17,0.325,0.20512820512820512 -18,0.3333333333333333,0.23076923076923078 -19,0.5916666666666667,0.17370892018779344 -20,0.3418803418803419,0.275 -21,0.3582089552238806,0.20833333333333334 -22,0.3741496598639456,0.32727272727272727 -23,0.352112676056338,0.22 -24,0.5303030303030303,0.20714285714285716 -25,0.34146341463414637,0.3333333333333333 -26,0.3546099290780142,0.24 -27,0.3515625,0.2 -28,0.6914893617021277,0.24102564102564103 -29,0.3533834586466165,0.1702127659574468 -30,0.36,0.26666666666666666 -31,0.26956521739130435,0.25806451612903225 -32,0.6581196581196581,0.2597402597402597 -33,0.31896551724137934,0.10810810810810811 -34,0.6726907630522089,0.26865671641791045 -35,0.29545454545454547,0.3333333333333333 -36,0.29,0.2413793103448276 -37,0.348993288590604,0.28846153846153844 -38,0.5859154929577465,0.27884615384615385 -39,0.7962577962577962,0.25718015665796345 -40,0.3671875,0.2978723404255319 -41,0.6455696202531646,0.2581699346405229 -42,0.6626262626262627,0.2682926829268293 -43,0.4647887323943662,0.18181818181818182 -44,0.2857142857142857,0.25 -45,0.3178294573643411,0.17073170731707318 -46,0.3383458646616541,0.2222222222222222 -47,0.8359746434231379,0.1924170616113744 -48,0.38235294117647056,0.2692307692307692 -49,0.41843971631205673,0.2542372881355932 -50,0.3445378151260504,0.21951219512195122 -51,0.7011686143572621,0.2523809523809524 -52,0.8155515370705244,0.24833702882483372 -53,0.2892561983471074,0.2 -54,0.29770992366412213,0.20512820512820512 -55,0.3387096774193548,0.38095238095238093 -56,0.36923076923076925,0.1875 -57,0.3225806451612903,0.275 -58,0.8956562795089708,0.2672641012124407 -59,0.4634146341463415,0.22105263157894736 -60,0.34306569343065696,0.2127659574468085 -61,0.9284825870646766,0.25016744809109176 -62,0.34782608695652173,0.22916666666666666 -63,0.3076923076923077,0.3888888888888889 -64,0.5075757575757576,0.20149253731343283 -65,0.37410071942446044,0.21153846153846154 -66,0.8373397435897436,0.2507177033492823 -67,0.3561643835616438,0.4423076923076923 -68,0.9713572617066794,0.24715526734369264 -69,0.3103448275862069,0.3611111111111111 -70,0.31666666666666665,0.2631578947368421 -71,0.5204918032786885,0.18110236220472442 -72,0.29914529914529914,0.2857142857142857 -73,0.33587786259541985,0.29545454545454547 -74,0.3380281690140845,0.16666666666666666 -75,0.5743440233236151,0.3197969543147208 -76,0.496,0.25 -77,0.5059288537549407,0.2265625 -78,0.6015228426395939,0.25316455696202533 -79,0.8848167539267016,0.25443786982248523 -80,0.2833333333333333,0.11764705882352941 -81,0.34710743801652894,0.2619047619047619 -82,0.7187017001545595,0.23655913978494625 -83,0.5080645161290323,0.2698412698412698 -84,0.3541666666666667,0.35294117647058826 -85,0.2962962962962963,0.125 -86,0.44549763033175355,0.19148936170212766 -87,0.3656716417910448,0.22448979591836735 -88,0.47767857142857145,0.2897196261682243 -89,0.362962962962963,0.2857142857142857 -90,0.28225806451612906,0.2571428571428571 -91,0.48333333333333334,0.23275862068965517 -92,0.47161572052401746,0.2037037037037037 -93,0.6132315521628499,0.22821576763485477 -94,0.296,0.10810810810810811 -95,0.5447470817120622,0.16428571428571428 -96,0.3381294964028777,0.2553191489361702 -97,0.3543307086614173,0.1111111111111111 -98,0.9486675404106597,0.24038682938061248 -99,0.6701244813278008,0.28173374613003094 -100,0.5220883534136547,0.2230769230769231 +1,0.3360655737704918,0.02459016393442623 +2,0.6151832460732984,0.15706806282722513 +3,0.2992125984251969,0.10236220472440945 +4,0.2920353982300885,0.08849557522123894 +5,0.4959016393442623,0.11065573770491803 +6,0.3448275862068966,0.09482758620689655 +7,0.7225609756097561,0.16310975609756098 +8,0.3046875,0.046875 +9,0.32456140350877194,0.08771929824561403 +10,0.28695652173913044,0.06956521739130435 +11,0.524390243902439,0.09349593495934959 +12,0.3787878787878788,0.08333333333333333 +13,0.3597122302158273,0.08633093525179857 +14,0.2916666666666667,0.058333333333333334 +15,0.5134099616858238,0.13793103448275862 +16,0.48444444444444446,0.10666666666666667 +17,0.325,0.06666666666666667 +18,0.3333333333333333,0.07692307692307693 +19,0.5916666666666667,0.10277777777777777 +20,0.3418803418803419,0.09401709401709402 +21,0.3582089552238806,0.07462686567164178 +22,0.3741496598639456,0.12244897959183673 +23,0.352112676056338,0.07746478873239436 +24,0.5303030303030303,0.10984848484848485 +25,0.34146341463414637,0.11382113821138211 +26,0.3546099290780142,0.0851063829787234 +27,0.3515625,0.0703125 +28,0.6914893617021277,0.16666666666666666 +29,0.3533834586466165,0.06015037593984962 +30,0.36,0.096 +31,0.26956521739130435,0.06956521739130435 +32,0.6581196581196581,0.17094017094017094 +33,0.31896551724137934,0.034482758620689655 +34,0.6726907630522089,0.18072289156626506 +35,0.29545454545454547,0.09848484848484848 +36,0.29,0.07 +37,0.348993288590604,0.10067114093959731 +38,0.5859154929577465,0.16338028169014085 +39,0.7962577962577962,0.2047817047817048 +40,0.3671875,0.109375 +41,0.6455696202531646,0.16666666666666666 +42,0.6626262626262627,0.17777777777777778 +43,0.4647887323943662,0.08450704225352113 +44,0.2857142857142857,0.07142857142857142 +45,0.3178294573643411,0.05426356589147287 +46,0.3383458646616541,0.07518796992481203 +47,0.8359746434231379,0.16085578446909668 +48,0.38235294117647056,0.10294117647058823 +49,0.41843971631205673,0.10638297872340426 +50,0.3445378151260504,0.07563025210084033 +51,0.7011686143572621,0.17696160267111852 +52,0.8155515370705244,0.20253164556962025 +53,0.2892561983471074,0.05785123966942149 +54,0.29770992366412213,0.061068702290076333 +55,0.3387096774193548,0.12903225806451613 +56,0.36923076923076925,0.06923076923076923 +57,0.3225806451612903,0.08870967741935484 +58,0.8956562795089708,0.23937677053824363 +59,0.4634146341463415,0.1024390243902439 +60,0.34306569343065696,0.072992700729927 +61,0.9284825870646766,0.23227611940298507 +62,0.34782608695652173,0.07971014492753623 +63,0.3076923076923077,0.11965811965811966 +64,0.5075757575757576,0.10227272727272728 +65,0.37410071942446044,0.07913669064748201 +66,0.8373397435897436,0.20993589743589744 +67,0.3561643835616438,0.15753424657534246 +68,0.9713572617066794,0.24007606370335155 +69,0.3103448275862069,0.11206896551724138 +70,0.31666666666666665,0.08333333333333333 +71,0.5204918032786885,0.0942622950819672 +72,0.29914529914529914,0.08547008547008547 +73,0.33587786259541985,0.09923664122137404 +74,0.3380281690140845,0.056338028169014086 +75,0.5743440233236151,0.1836734693877551 +76,0.496,0.124 +77,0.5059288537549407,0.11462450592885376 +78,0.6015228426395939,0.15228426395939088 +79,0.8848167539267016,0.225130890052356 +80,0.2833333333333333,0.03333333333333333 +81,0.34710743801652894,0.09090909090909091 +82,0.7187017001545595,0.17001545595054096 +83,0.5080645161290323,0.13709677419354838 +84,0.3541666666666667,0.125 +85,0.2962962962962963,0.037037037037037035 +86,0.44549763033175355,0.08530805687203792 +87,0.3656716417910448,0.08208955223880597 +88,0.47767857142857145,0.13839285714285715 +89,0.362962962962963,0.1037037037037037 +90,0.28225806451612906,0.07258064516129033 +91,0.48333333333333334,0.1125 +92,0.47161572052401746,0.09606986899563319 +93,0.6132315521628499,0.13994910941475827 +94,0.296,0.032 +95,0.5447470817120622,0.08949416342412451 +96,0.3381294964028777,0.08633093525179857 +97,0.3543307086614173,0.03937007874015748 +98,0.9486675404106597,0.22804718217562253 +99,0.6701244813278008,0.1887966804979253 +100,0.5220883534136547,0.11646586345381527 diff --git a/experiments/No_Refresh_0_5s_ttl/lambda_distribution.pdf b/experiments/No_Refresh_0_5s_ttl/lambda_distribution.pdf index f9b8e9d59bd53ed6eae9ed718ee48fdc9e018f72..2bdf596e691a5d978c8e47a2a3897d08d4f73b4c 100644 GIT binary patch delta 16 XcmcZ;eJ6SYs}{4dndxQ@tt-p`I2r}3 delta 16 XcmcZ;eJ6SYs}{47q2Xo@tt-p`H`fKB diff --git a/experiments/No_Refresh_0_5s_ttl/lambda_vs_access_count.pdf b/experiments/No_Refresh_0_5s_ttl/lambda_vs_access_count.pdf index c04446d2563e18091336813fcabe8474f12e9dcc..b41bf8e289ed1e659987886b4de49002eb033651 100644 GIT binary patch delta 16 XcmX?*av)_xrXI7gnd#;ny(`QBJKhFW delta 16 XcmX?*av)_xrXI7Aq2cBny(`QBJDUbe diff --git a/experiments/No_Refresh_0_5s_ttl/objects_in_cache_over_time.pdf b/experiments/No_Refresh_0_5s_ttl/objects_in_cache_over_time.pdf index 2500760f6b60af18f8ed79d326230dd539c2a57e..61b505ad6285ce8a7d4cb5a84597dd621b87f922 100644 GIT binary patch delta 16 XcmX?Ibh>E69}{L{GtE69}{LHL&MGgO?+4YMo9-K diff --git a/experiments/No_Refresh_0_5s_ttl/overall_hit_age.csv b/experiments/No_Refresh_0_5s_ttl/overall_hit_age.csv index 516c754..c3ac2df 100644 --- a/experiments/No_Refresh_0_5s_ttl/overall_hit_age.csv +++ b/experiments/No_Refresh_0_5s_ttl/overall_hit_age.csv @@ -1,9 +1,9 @@ ,hit_rate,avg_age count,100.0,100.0 -mean,0.45866953325531407,0.2405818161600988 -std,0.18036841870823853,0.06072706326352597 -min,0.26956521739130435,0.07317073170731707 -25%,0.33524173027989823,0.20663919413919415 -50%,0.3643173023770039,0.24190177638453503 -75%,0.5339140431552882,0.26880022962112515 -max,0.9713572617066794,0.4423076923076923 +mean,0.45866953325531407,0.11061943705342085 +std,0.18036841870823853,0.05016114887552842 +min,0.26956521739130435,0.02459016393442623 +25%,0.33524173027989823,0.07659987071751778 +50%,0.3643173023770039,0.09886074485311126 +75%,0.5339140431552882,0.13804649014778325 +max,0.9713572617066794,0.24007606370335155 diff --git a/experiments/No_Refresh_1_0s_ttl/hit_age.csv b/experiments/No_Refresh_1_0s_ttl/hit_age.csv index 93f77f1..2478995 100644 --- a/experiments/No_Refresh_1_0s_ttl/hit_age.csv +++ b/experiments/No_Refresh_1_0s_ttl/hit_age.csv @@ -1,101 +1,101 @@ obj_id,hit_rate,avg_age -1,0.5354330708661418,0.5 -2,0.6925925925925925,0.45454545454545453 -3,0.7551020408163265,0.48986486486486486 -4,0.6380090497737556,0.5390070921985816 -5,0.5217391304347826,0.4583333333333333 -6,0.518796992481203,0.4492753623188406 -7,0.7340720221606648,0.4679245283018868 -8,0.7817796610169492,0.5094850948509485 -9,0.6451612903225806,0.4625 -10,0.49122807017543857,0.5535714285714286 -11,0.7445054945054945,0.44649446494464945 -12,0.5112781954887218,0.4117647058823529 -13,0.45217391304347826,0.4807692307692308 -14,0.5,0.2903225806451613 -15,0.6787003610108303,0.48936170212765956 -16,0.9251269035532995,0.5219478737997256 -17,0.4793388429752066,0.6379310344827587 -18,0.6875,0.46524064171123 -19,0.5182481751824818,0.4788732394366197 -20,0.49242424242424243,0.6 -21,0.4883720930232558,0.6031746031746031 -22,0.41,0.4146341463414634 -23,0.5,0.43859649122807015 -24,0.4782608695652174,0.3939393939393939 -25,0.5158730158730159,0.6461538461538462 -26,0.5149253731343284,0.4782608695652174 -27,0.49242424242424243,0.6461538461538462 -28,0.5277777777777778,0.5394736842105263 -29,0.8317610062893082,0.46313799621928164 -30,0.5220588235294118,0.4507042253521127 -31,0.4957983193277311,0.576271186440678 -32,0.4491525423728814,0.5849056603773585 -33,0.8493723849372385,0.46798029556650245 -34,0.4830508474576271,0.5614035087719298 -35,0.42,0.5714285714285714 -36,0.475,0.43859649122807015 -37,0.5037037037037037,0.5294117647058824 -38,0.5434782608695652,0.6266666666666667 -39,0.5378787878787878,0.39436619718309857 -40,0.47413793103448276,0.6 -41,0.7891440501043842,0.5370370370370371 -42,0.7545219638242894,0.4726027397260274 -43,0.4918032786885246,0.5166666666666667 -44,0.6745098039215687,0.5406976744186046 -45,0.6626016260162602,0.5705521472392638 -46,0.8800436205016358,0.4857496902106567 -47,0.5078125,0.5384615384615384 -48,0.8639705882352942,0.4652482269503546 -49,0.6853932584269663,0.46994535519125685 -50,0.5448275862068965,0.4810126582278481 -51,0.723342939481268,0.47808764940239046 -52,0.8771929824561403,0.4475 -53,0.4824561403508772,0.5454545454545454 -54,0.6768060836501901,0.5561797752808989 -55,0.6886446886446886,0.5478723404255319 -56,0.6937269372693727,0.4787234042553192 -57,0.9479793637145314,0.473015873015873 -58,0.45901639344262296,0.5714285714285714 -59,0.5193798449612403,0.5223880597014925 -60,0.48507462686567165,0.46153846153846156 -61,0.95267892061009,0.42980295566502463 -62,0.5547445255474452,0.4868421052631579 -63,0.8406015037593985,0.48300536672629696 -64,0.9171388101983002,0.46023166023166023 -65,0.8772123893805309,0.48297604035308955 -66,0.6272727272727273,0.5289855072463768 -67,0.5333333333333333,0.7083333333333334 -68,0.5217391304347826,0.4027777777777778 -69,0.7525510204081632,0.43389830508474575 -70,0.5333333333333333,0.46875 -71,0.7930327868852459,0.4780361757105943 -72,0.6434782608695652,0.5878378378378378 -73,0.6244725738396625,0.5135135135135135 -74,0.4959349593495935,0.47540983606557374 -75,0.5433070866141733,0.5072463768115942 -76,0.49624060150375937,0.5606060606060606 -77,0.8998242530755711,0.478515625 -78,0.9664941432852084,0.4813979706877114 -79,0.4609375,0.2542372881355932 -80,0.4473684210526316,0.6078431372549019 -81,0.5112781954887218,0.4117647058823529 -82,0.6544715447154471,0.4906832298136646 -83,0.47107438016528924,0.543859649122807 -84,0.6538461538461539,0.45751633986928103 -85,0.7487046632124352,0.47750865051903113 -86,0.6614785992217899,0.5294117647058824 -87,0.4621212121212121,0.5081967213114754 -88,0.4491525423728814,0.2641509433962264 -89,0.8269841269841269,0.5470249520153551 -90,0.5114503816793893,0.40298507462686567 -91,0.8143382352941176,0.5011286681715575 -92,0.6861313868613139,0.48936170212765956 -93,0.5390070921985816,0.5394736842105263 -94,0.6614785992217899,0.5705882352941176 -95,0.8872255489021956,0.5129358830146231 -96,0.48905109489051096,0.4925373134328358 -97,0.7407407407407407,0.4714285714285714 -98,0.5037593984962406,0.5223880597014925 -99,0.4782608695652174,0.4909090909090909 -100,0.5106382978723404,0.4166666666666667 +1,0.5354330708661418,0.2677165354330709 +2,0.6925925925925925,0.3148148148148148 +3,0.7551020408163265,0.36989795918367346 +4,0.6380090497737556,0.3438914027149321 +5,0.5217391304347826,0.2391304347826087 +6,0.518796992481203,0.23308270676691728 +7,0.7340720221606648,0.34349030470914127 +8,0.7817796610169492,0.3983050847457627 +9,0.6451612903225806,0.29838709677419356 +10,0.49122807017543857,0.2719298245614035 +11,0.7445054945054945,0.3324175824175824 +12,0.5112781954887218,0.21052631578947367 +13,0.45217391304347826,0.21739130434782608 +14,0.5,0.14516129032258066 +15,0.6787003610108303,0.33212996389891697 +16,0.9251269035532995,0.48286802030456855 +17,0.4793388429752066,0.30578512396694213 +18,0.6875,0.31985294117647056 +19,0.5182481751824818,0.24817518248175183 +20,0.49242424242424243,0.29545454545454547 +21,0.4883720930232558,0.29457364341085274 +22,0.41,0.17 +23,0.5,0.21929824561403508 +24,0.4782608695652174,0.18840579710144928 +25,0.5158730158730159,0.3333333333333333 +26,0.5149253731343284,0.2462686567164179 +27,0.49242424242424243,0.3181818181818182 +28,0.5277777777777778,0.2847222222222222 +29,0.8317610062893082,0.38522012578616355 +30,0.5220588235294118,0.23529411764705882 +31,0.4957983193277311,0.2857142857142857 +32,0.4491525423728814,0.2627118644067797 +33,0.8493723849372385,0.39748953974895396 +34,0.4830508474576271,0.2711864406779661 +35,0.42,0.24 +36,0.475,0.20833333333333334 +37,0.5037037037037037,0.26666666666666666 +38,0.5434782608695652,0.34057971014492755 +39,0.5378787878787878,0.21212121212121213 +40,0.47413793103448276,0.28448275862068967 +41,0.7891440501043842,0.42379958246346555 +42,0.7545219638242894,0.35658914728682173 +43,0.4918032786885246,0.2540983606557377 +44,0.6745098039215687,0.36470588235294116 +45,0.6626016260162602,0.3780487804878049 +46,0.8800436205016358,0.42748091603053434 +47,0.5078125,0.2734375 +48,0.8639705882352942,0.4019607843137255 +49,0.6853932584269663,0.32209737827715357 +50,0.5448275862068965,0.2620689655172414 +51,0.723342939481268,0.345821325648415 +52,0.8771929824561403,0.3925438596491228 +53,0.4824561403508772,0.2631578947368421 +54,0.6768060836501901,0.376425855513308 +55,0.6886446886446886,0.3772893772893773 +56,0.6937269372693727,0.33210332103321033 +57,0.9479793637145314,0.4484092863284609 +58,0.45901639344262296,0.26229508196721313 +59,0.5193798449612403,0.2713178294573643 +60,0.48507462686567165,0.22388059701492538 +61,0.95267892061009,0.409464215877982 +62,0.5547445255474452,0.27007299270072993 +63,0.8406015037593985,0.40601503759398494 +64,0.9171388101983002,0.42209631728045327 +65,0.8772123893805309,0.42367256637168144 +66,0.6272727272727273,0.33181818181818185 +67,0.5333333333333333,0.37777777777777777 +68,0.5217391304347826,0.21014492753623187 +69,0.7525510204081632,0.32653061224489793 +70,0.5333333333333333,0.25 +71,0.7930327868852459,0.3790983606557377 +72,0.6434782608695652,0.3782608695652174 +73,0.6244725738396625,0.3206751054852321 +74,0.4959349593495935,0.23577235772357724 +75,0.5433070866141733,0.2755905511811024 +76,0.49624060150375937,0.2781954887218045 +77,0.8998242530755711,0.4305799648506151 +78,0.9664941432852084,0.4652683192590575 +79,0.4609375,0.1171875 +80,0.4473684210526316,0.2719298245614035 +81,0.5112781954887218,0.21052631578947367 +82,0.6544715447154471,0.32113821138211385 +83,0.47107438016528924,0.256198347107438 +84,0.6538461538461539,0.29914529914529914 +85,0.7487046632124352,0.35751295336787564 +86,0.6614785992217899,0.35019455252918286 +87,0.4621212121212121,0.23484848484848486 +88,0.4491525423728814,0.11864406779661017 +89,0.8269841269841269,0.4523809523809524 +90,0.5114503816793893,0.20610687022900764 +91,0.8143382352941176,0.40808823529411764 +92,0.6861313868613139,0.3357664233576642 +93,0.5390070921985816,0.2907801418439716 +94,0.6614785992217899,0.377431906614786 +95,0.8872255489021956,0.4550898203592814 +96,0.48905109489051096,0.24087591240875914 +97,0.7407407407407407,0.3492063492063492 +98,0.5037593984962406,0.2631578947368421 +99,0.4782608695652174,0.23478260869565218 +100,0.5106382978723404,0.2127659574468085 diff --git a/experiments/No_Refresh_1_0s_ttl/lambda_distribution.pdf b/experiments/No_Refresh_1_0s_ttl/lambda_distribution.pdf index 892bca02ea69310cc014321540e92e58bf1788a6..cf0142b6902ae2b667594658183704cc464f8675 100644 GIT binary patch delta 16 Xcmewy`Z;uii#oHhndxSC^)<`@JzfSK delta 16 Xcmewy`Z;uii#oHBq2XqC^)<`@JsSoS diff --git a/experiments/No_Refresh_1_0s_ttl/lambda_vs_access_count.pdf b/experiments/No_Refresh_1_0s_ttl/lambda_vs_access_count.pdf index 53c7407732de35b41729eea4336ed97f3463a456..1b3b698edea58b4d9a8d984d471948b69ff6dcd0 100644 GIT binary patch delta 16 XcmcZ-btP)USxshRGtrk^lez diff --git a/experiments/No_Refresh_2_0s_ttl/lambda_vs_access_count.pdf b/experiments/No_Refresh_2_0s_ttl/lambda_vs_access_count.pdf index 019b92aba8e44a857baf4ca7e2f93c59d6a68fde..f55815339f2e12f5e035dfb69f676cb5eb35960c 100644 GIT binary patch delta 16 XcmcZ@e=&Z8k`A-6xxr>toi)q=IHm=! delta 16 XcmcZ@e=&Z8k`A+xq0weloi)q=IDiGJ diff --git a/experiments/No_Refresh_2_0s_ttl/objects_in_cache_over_time.pdf b/experiments/No_Refresh_2_0s_ttl/objects_in_cache_over_time.pdf index 5214328703a16bf2f11ec2478721d05806708805..c4d7ac54acc2bdcdc0c5dec72ea2440c3e3884ea 100644 GIT binary patch delta 16 XcmcbceK&iw diff --git a/experiments/No_Refresh_2_0s_ttl/overall_hit_age.csv b/experiments/No_Refresh_2_0s_ttl/overall_hit_age.csv index 91bb2cf..b84e26e 100644 --- a/experiments/No_Refresh_2_0s_ttl/overall_hit_age.csv +++ b/experiments/No_Refresh_2_0s_ttl/overall_hit_age.csv @@ -1,9 +1,9 @@ ,hit_rate,avg_age count,100.0,100.0 -mean,0.769815289387402,1.0034930453709514 -std,0.11953590678844736,0.07668973688754598 -min,0.6071428571428571,0.8424242424242424 -25%,0.66377403112603,0.953261395578711 -50%,0.743622126799697,1.0 -75%,0.8858906487772468,1.0517550319096711 -max,0.9904940003116721,1.2195121951219512 +mean,0.769815289387402,0.7718808361404631 +std,0.11953590678844736,0.12912279464502746 +min,0.6071428571428571,0.5357142857142857 +25%,0.66377403112603,0.6686827956989247 +50%,0.743622126799697,0.7545620437956204 +75%,0.8858906487772468,0.8808977994328847 +max,0.9904940003116721,1.0395010395010396 diff --git a/experiments/No_Refresh_3_0s_ttl/hit_age.csv b/experiments/No_Refresh_3_0s_ttl/hit_age.csv index 3bec2d8..af75512 100644 --- a/experiments/No_Refresh_3_0s_ttl/hit_age.csv +++ b/experiments/No_Refresh_3_0s_ttl/hit_age.csv @@ -1,101 +1,101 @@ obj_id,hit_rate,avg_age -1,0.7322834645669292,1.4516129032258065 -2,0.7837837837837838,1.5775862068965518 -3,0.7264957264957265,1.5058823529411764 -4,0.728,1.4175824175824177 -5,0.7571428571428571,1.5377358490566038 -6,0.7538461538461538,1.663265306122449 -7,0.8555133079847909,1.3066666666666666 -8,0.7155963302752294,1.5 -9,0.9047619047619048,1.4764542936288088 -10,0.7322834645669292,1.5698924731182795 -11,0.7295081967213115,1.4943820224719102 -12,0.7605633802816901,1.462962962962963 -13,0.7154471544715447,1.375 -14,0.7480916030534351,1.6734693877551021 -15,0.7801418439716312,1.4727272727272727 -16,0.6764705882352942,1.463768115942029 -17,0.7053571428571429,1.4050632911392404 -18,0.8978494623655914,1.4580838323353293 -19,0.7156862745098039,1.5068493150684932 -20,0.7702702702702703,1.4473684210526316 -21,0.8958904109589041,1.4587155963302751 -22,0.9230769230769231,1.5583333333333333 -23,0.8608058608058609,1.5829787234042554 -24,0.7777777777777778,1.4369747899159664 -25,0.9489414694894147,1.4146981627296589 -26,0.75,1.4895833333333333 -27,0.6915887850467289,1.5675675675675675 -28,0.9566596194503171,1.3701657458563536 -29,0.7304347826086957,1.4166666666666667 -30,0.7304347826086957,1.5 -31,0.8604651162790697,1.518018018018018 -32,0.7203389830508474,1.3647058823529412 -33,0.7317073170731707,1.7666666666666666 -34,0.7536231884057971,1.4519230769230769 -35,0.8407079646017699,1.2263157894736842 -36,0.8582375478927203,1.4598214285714286 -37,0.9113636363636364,1.458852867830424 -38,0.7295081967213115,1.449438202247191 -39,0.7559055118110236,1.3958333333333333 -40,0.7156862745098039,1.5068493150684932 -41,0.7697841726618705,1.4299065420560748 -42,0.7288135593220338,1.4651162790697674 -43,0.7555555555555555,1.392156862745098 -44,0.8565737051792829,1.5023255813953489 -45,0.857707509881423,1.4838709677419355 -46,0.7697841726618705,1.3457943925233644 -47,0.75,1.5333333333333334 -48,0.8560311284046692,1.481818181818182 -49,0.859375,1.45 -50,0.9830645161290322,1.3843314191960623 -51,0.7333333333333333,1.4545454545454546 -52,0.7744360902255639,1.6504854368932038 -53,0.9490049751243781,1.5701179554390563 -54,0.7664233576642335,1.5047619047619047 -55,0.7,1.4714285714285715 -56,0.773972602739726,1.6814159292035398 -57,0.7258064516129032,1.3888888888888888 -58,0.7714285714285715,1.5555555555555556 -59,0.7222222222222222,1.3461538461538463 -60,0.75,1.6161616161616161 -61,0.9334442595673876,1.5240641711229947 -62,0.7327586206896551,1.5058823529411764 -63,0.7247706422018348,1.3670886075949367 -64,0.7401574803149606,1.5638297872340425 -65,0.75,1.5208333333333333 -66,0.8571428571428571,1.5740740740740742 -67,0.7857142857142857,1.4363636363636363 -68,0.7129629629629629,1.5844155844155845 -69,0.8502024291497976,1.4666666666666666 -70,0.7619047619047619,1.4821428571428572 -71,0.752,1.2127659574468086 -72,0.8623188405797102,1.5126050420168067 -73,0.9031413612565445,1.5681159420289854 -74,0.8565891472868217,1.3981900452488687 -75,0.7295081967213115,1.5842696629213484 -76,0.7388059701492538,1.4444444444444444 -77,0.7522123893805309,1.3058823529411765 -78,0.9175257731958762,1.447191011235955 -79,0.7898550724637681,1.4678899082568808 -80,0.7419354838709677,1.4456521739130435 -81,0.7698412698412699,1.556701030927835 -82,0.7647058823529411,1.3076923076923077 -83,0.7479674796747967,1.326086956521739 -84,0.7651515151515151,1.5445544554455446 -85,0.8385650224215246,1.572192513368984 -86,0.7698412698412699,1.5154639175257731 -87,0.7203389830508474,1.3764705882352941 -88,0.8981723237597912,1.694767441860465 -89,0.7647058823529411,1.4519230769230769 -90,0.7540983606557377,1.576086956521739 -91,0.71900826446281,1.2988505747126438 -92,0.9186991869918699,1.5398230088495575 -93,0.8987012987012987,1.5635838150289016 -94,0.7401574803149606,1.5851063829787233 -95,0.7348484848484849,1.443298969072165 -96,0.9923719578641482,1.4247803806734993 -97,0.7047619047619048,1.4594594594594594 -98,0.8620689655172413,1.5022222222222221 -99,0.9002624671916011,1.3556851311953353 -100,0.7264957264957265,1.576470588235294 +1,0.7322834645669292,1.062992125984252 +2,0.7837837837837838,1.2364864864864864 +3,0.7264957264957265,1.0940170940170941 +4,0.728,1.032 +5,0.7571428571428571,1.1642857142857144 +6,0.7538461538461538,1.2538461538461538 +7,0.8555133079847909,1.11787072243346 +8,0.7155963302752294,1.073394495412844 +9,0.9047619047619048,1.3358395989974938 +10,0.7322834645669292,1.1496062992125984 +11,0.7295081967213115,1.0901639344262295 +12,0.7605633802816901,1.1126760563380282 +13,0.7154471544715447,0.983739837398374 +14,0.7480916030534351,1.251908396946565 +15,0.7801418439716312,1.148936170212766 +16,0.6764705882352942,0.9901960784313726 +17,0.7053571428571429,0.9910714285714286 +18,0.8978494623655914,1.3091397849462365 +19,0.7156862745098039,1.0784313725490196 +20,0.7702702702702703,1.114864864864865 +21,0.8958904109589041,1.3068493150684932 +22,0.9230769230769231,1.4384615384615385 +23,0.8608058608058609,1.3626373626373627 +24,0.7777777777777778,1.1176470588235294 +25,0.9489414694894147,1.3424657534246576 +26,0.75,1.1171875 +27,0.6915887850467289,1.0841121495327102 +28,0.9566596194503171,1.3107822410147991 +29,0.7304347826086957,1.0347826086956522 +30,0.7304347826086957,1.0956521739130434 +31,0.8604651162790697,1.306201550387597 +32,0.7203389830508474,0.9830508474576272 +33,0.7317073170731707,1.2926829268292683 +34,0.7536231884057971,1.0942028985507246 +35,0.8407079646017699,1.0309734513274336 +36,0.8582375478927203,1.2528735632183907 +37,0.9113636363636364,1.3295454545454546 +38,0.7295081967213115,1.0573770491803278 +39,0.7559055118110236,1.0551181102362204 +40,0.7156862745098039,1.0784313725490196 +41,0.7697841726618705,1.1007194244604317 +42,0.7288135593220338,1.0677966101694916 +43,0.7555555555555555,1.0518518518518518 +44,0.8565737051792829,1.2868525896414342 +45,0.857707509881423,1.2727272727272727 +46,0.7697841726618705,1.0359712230215827 +47,0.75,1.15 +48,0.8560311284046692,1.2684824902723735 +49,0.859375,1.24609375 +50,0.9830645161290322,1.3608870967741935 +51,0.7333333333333333,1.0666666666666667 +52,0.7744360902255639,1.2781954887218046 +53,0.9490049751243781,1.4900497512437811 +54,0.7664233576642335,1.1532846715328466 +55,0.7,1.03 +56,0.773972602739726,1.3013698630136987 +57,0.7258064516129032,1.0080645161290323 +58,0.7714285714285715,1.2 +59,0.7222222222222222,0.9722222222222222 +60,0.75,1.2121212121212122 +61,0.9334442595673876,1.4226289517470883 +62,0.7327586206896551,1.103448275862069 +63,0.7247706422018348,0.9908256880733946 +64,0.7401574803149606,1.1574803149606299 +65,0.75,1.140625 +66,0.8571428571428571,1.3492063492063493 +67,0.7857142857142857,1.1285714285714286 +68,0.7129629629629629,1.1296296296296295 +69,0.8502024291497976,1.2469635627530364 +70,0.7619047619047619,1.129251700680272 +71,0.752,0.912 +72,0.8623188405797102,1.3043478260869565 +73,0.9031413612565445,1.4162303664921465 +74,0.8565891472868217,1.197674418604651 +75,0.7295081967213115,1.1557377049180328 +76,0.7388059701492538,1.0671641791044777 +77,0.7522123893805309,0.9823008849557522 +78,0.9175257731958762,1.3278350515463917 +79,0.7898550724637681,1.1594202898550725 +80,0.7419354838709677,1.0725806451612903 +81,0.7698412698412699,1.1984126984126984 +82,0.7647058823529411,1.0 +83,0.7479674796747967,0.991869918699187 +84,0.7651515151515151,1.1818181818181819 +85,0.8385650224215246,1.3183856502242153 +86,0.7698412698412699,1.1666666666666667 +87,0.7203389830508474,0.9915254237288136 +88,0.8981723237597912,1.5221932114882506 +89,0.7647058823529411,1.1102941176470589 +90,0.7540983606557377,1.1885245901639345 +91,0.71900826446281,0.9338842975206612 +92,0.9186991869918699,1.4146341463414633 +93,0.8987012987012987,1.405194805194805 +94,0.7401574803149606,1.1732283464566928 +95,0.7348484848484849,1.0606060606060606 +96,0.9923719578641482,1.4139120958953868 +97,0.7047619047619048,1.0285714285714285 +98,0.8620689655172413,1.2950191570881227 +99,0.9002624671916011,1.220472440944882 +100,0.7264957264957265,1.1452991452991452 diff --git a/experiments/No_Refresh_3_0s_ttl/lambda_distribution.pdf b/experiments/No_Refresh_3_0s_ttl/lambda_distribution.pdf index 8d4ae759fd02f284daebdc177dcea7a32e469c7d..4316f94b964c42718f63b9d6ead30a93206f1a4d 100644 GIT binary patch delta 16 XcmcZ3{_YFLbV2d delta 16 XcmcbWeJgvzWQeIRQeIR;S>`LCiti1pLdj< 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 gR@s0|Jd$1~7pmH2FIbSMHja3G; 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%0DQG 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 aDcJEibzc9_nL{MIB76MwvBV=6Zu}oOJ8aDW literal 38923 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μ-hd*xw|V|<>UIF~TlmdGTR5F?ye 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 Oc^Rc&Q%?ML:63: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`). Consider using `matplotlib.pyplot.close()`.\n", - "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:09<00:00, 10.44it/s]\n", - "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:07<00:00, 13.35it/s]\n", - "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:05<00:00, 18.12it/s]\n", - "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:03<00:00, 28.29it/s]\n", - "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:02<00:00, 38.90it/s]\n" + "Progress: 99%|██████████████████████████████████████████████████████▍| 99/100 [00:00<00:00, 102.27it/s]\u001b[A\u001b[A\u001b[A\u001b[A\u001b[A:63: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`). Consider using `matplotlib.pyplot.close()`.\n", + "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:09<00:00, 10.59it/s]\n", + "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:07<00:00, 13.75it/s]\n", + "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:05<00:00, 19.03it/s]\n", + "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:03<00:00, 28.73it/s]\n", + "Progress: 99%|███████████████████████████████████████████████████████▍| 99/100 [00:02<00:00, 39.40it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 9.38 s, sys: 4.9 s, total: 14.3 s\n", - "Wall time: 9.6 s\n" + "CPU times: user 9.09 s, sys: 3.93 s, total: 13 s\n", + "Wall time: 9.48 s\n" ] }, { @@ -2526,7 +2526,7 @@ " 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.hits[obj_id]) # Only average over hits\n", + " avg_age = cache.cumulative_age[obj_id] / max(1, cache.access_count[obj_id]) # Average over access_count\n", " statistics.append({\"obj_id\": obj_id,\"hit_rate\": hit_rate,\"avg_age\": avg_age})\n", "\n", " stats = pd.DataFrame(statistics)\n",