mirror of
https://github.com/logos-storage/logos-storage-research.git
synced 2026-01-02 13:33:07 +00:00
181 lines
22 KiB
Plaintext
181 lines
22 KiB
Plaintext
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0,
|
|
"metadata": {
|
|
"colab": {
|
|
"name": "Codex",
|
|
"provenance": []
|
|
},
|
|
"kernelspec": {
|
|
"name": "python3",
|
|
"display_name": "Python 3"
|
|
},
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"id": "LzbZW-vg0z9S"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Model Codex Platform Structure\n",
|
|
"\n",
|
|
"This work attemps to simulate as many details as possible of the Codex platform. The details about the aspects we want to model can be found in the following notes: https://hackmd.io/yTRlMInIRi6fG-nk984ULQ\n",
|
|
"\n",
|
|
"First, we want to build a model of what we expect the Codex platform to look like, in terms of number of nodes, storage used and available, file size distribution, among others."
|
|
],
|
|
"metadata": {
|
|
"id": "BT9ssm0WZkZL"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import random as random\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"plt.rcParams['figure.figsize'] = [15, 8]\n",
|
|
"\n",
|
|
"\n",
|
|
"#@title Platform parameters\n",
|
|
"\n",
|
|
"#@markdown Number of peers in the network\n",
|
|
"NetworkSize = 5000 #@param {type:\"slider\", min:1, max:10000, step:1}\n",
|
|
"#@markdown Total storage provided in the system (Petabytes)\n",
|
|
"StorageProvided = 5 #@param {type:\"slider\", min:1, max:100, step:1}\n",
|
|
"#@markdown Total storage in use (Petabytes)\n",
|
|
"StorageUsed = 2 #@param {type:\"slider\", min:1, max:100, step:1}\n",
|
|
"#@markdown Variance in storage offered by nodes (%)\n",
|
|
"StorageVariance = 40 #@param {type:\"slider\", min:1, max:50, step:1}\n",
|
|
"#@markdown Mean file size (Kilobytes)\n",
|
|
"MeanFileSize = 4096 #@param {type:\"slider\", min:1, max:1048576, step:128}\n",
|
|
"#@markdown Block size for erasure coding (Kilobytes)\n",
|
|
"BlockSize = 4 #@param {type:\"slider\", min:1, max:32, step:1}\n",
|
|
"\n",
|
|
"totalUsed = 0\n",
|
|
"totalFree = 0\n",
|
|
"nodesProvided = [0]*NetworkSize\n",
|
|
"nodesUsed = [0]*NetworkSize\n",
|
|
"nodesFree = [0]*NetworkSize\n",
|
|
"for i in range(NetworkSize):\n",
|
|
" sign = random.randint(-1,1)\n",
|
|
" variance = random.random() * StorageVariance / 100\n",
|
|
" nodesProvided[i] = (StorageProvided*1024/NetworkSize)+(sign*variance*(StorageProvided*1024/NetworkSize))\n",
|
|
" nodesUsed[i] = (StorageUsed*1024/NetworkSize)+(sign*variance*(StorageUsed*1024/NetworkSize))\n",
|
|
" nodesFree[i] = nodesProvided[i] - nodesUsed[i]\n",
|
|
" totalUsed += nodesUsed[i]\n",
|
|
" totalFree += nodesFree[i]\n",
|
|
"\n",
|
|
"def plotDist(nodesUsed, nodesFree):\n",
|
|
" x = np.arange(len(nodesFree))\n",
|
|
" plt.rcParams['figure.figsize'] = [15, 8]\n",
|
|
" plt.subplot(211)\n",
|
|
" plt.xlabel(\"Nodes\")\n",
|
|
" plt.ylabel(\"Storage Provided (Terabytes)\")\n",
|
|
" plt.bar(x-1, nodesUsed, label=\"Used\")\n",
|
|
" plt.bar(x-1, nodesFree, label=\"Free\", bottom=nodesUsed)\n",
|
|
" plt.legend(loc=\"upper left\")\n",
|
|
"\n",
|
|
" \n",
|
|
"print(\"Total storage used: %f Terabytes\" % totalUsed)\n",
|
|
"print(\"Total storage free: %f Terabytes\" % totalFree)\n",
|
|
"print(\"Total number of blocks in the system: %i\" % (totalUsed*1024*1024/BlockSize)) \n",
|
|
"print(\"Total number of files in the system: %i\" % (totalUsed*1024*1024/MeanFileSize)) \n",
|
|
"plotDist(nodesUsed, nodesFree)"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 329
|
|
},
|
|
"id": "1mfYz2oeaWZS",
|
|
"outputId": "5617edd4-99a7-4822-c916-2292d965793d"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"Total storage used: 2054.255442 Terabytes\n",
|
|
"Total storage free: 3081.383163 Terabytes\n",
|
|
"Total number of blocks in the system: 538510738\n",
|
|
"Total number of files in the system: 525889\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 1080x576 with 1 Axes>"
|
|
],
|
|
"image/png": "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\n"
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"# Failure Model\n",
|
|
"\n",
|
|
"Here we try to capture the most common type of failures and their impact in the system."
|
|
],
|
|
"metadata": {
|
|
"id": "0BdiiYaXNpnR"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"#@title Failure model parameters\n",
|
|
"\n",
|
|
"#@markdown Annual Failure Rate (% of network nodes down per year)\n",
|
|
"AnnualFailureRate = 3 #@param {type:\"slider\", min:1, max:10, step:1}\n",
|
|
"#@markdown Number of correlated failures event per year\n",
|
|
"CorrelatedFailureEvents = 1 #@param {type:\"slider\", min:0, max:10, step:1}\n",
|
|
"#@markdown Number of nodes affected by correlated failures \n",
|
|
"CorrelatedFailureImpact = 100 #@param {type:\"slider\", min:2, max:1000, step:1}\n",
|
|
"\n",
|
|
"AnnualNodesFailed = NetworkSize*AnnualFailureRate/100\n",
|
|
"MeanTimeBetweenFailures = 365*24/AnnualNodesFailed\n",
|
|
"\n",
|
|
"print(\"Number of nodes failed per year: %i\" % AnnualNodesFailed)\n",
|
|
"print(\"Mean time between failures: %i hours\" % MeanTimeBetweenFailures)"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "75TtMGepOxl7",
|
|
"outputId": "72c29478-8c72-4eb9-fc1a-bb5cc637f553"
|
|
},
|
|
"execution_count": null,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"Number of nodes failed per year: 150\n",
|
|
"Mean time between failures: 58 hours\n"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |