From b8a1a5d83d6879eb648657299b517e5f3dbdd282 Mon Sep 17 00:00:00 2001 From: sk-g Date: Mon, 2 Jul 2018 13:24:22 -0700 Subject: [PATCH] small update --- .../MSNStorageCFS/Parsed Traces/explore.py | 117 +++ Data/restart.ipynb | 753 ++++++++++++++++++ 2 files changed, 870 insertions(+) create mode 100644 Data/Microsoft/MSNStorageCFS/Parsed Traces/explore.py create mode 100644 Data/restart.ipynb diff --git a/Data/Microsoft/MSNStorageCFS/Parsed Traces/explore.py b/Data/Microsoft/MSNStorageCFS/Parsed Traces/explore.py new file mode 100644 index 0000000..a0136d1 --- /dev/null +++ b/Data/Microsoft/MSNStorageCFS/Parsed Traces/explore.py @@ -0,0 +1,117 @@ +import os +import sys +import collections +import random +import gc +import bisect +import time +from math import sqrt + +import pandas as pd +import numpy as np + +from multiprocessing import Process, Pool +def loader(fname): + data = pd.read_csv(fname, + index_col = False, + usecols = [ 'TimeStamp', + 'Disk Operation', + 'Process Name ( PID)']) + return data + +def drawProgressBar(percent, barLen = 50): + sys.stdout.write("\r") + progress = "" + for i in range(barLen): + if i\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Disk OperationTimeStampProcess Name ( PID)
0DiskRead209710p0
1DiskRead224548p1
2DiskRead224909p1
3DiskRead226255p2
4DiskRead226834p2
\n", + "" + ], + "text/plain": [ + " Disk Operation TimeStamp Process Name ( PID)\n", + "0 DiskRead 209710 p0 \n", + "1 DiskRead 224548 p1 \n", + "2 DiskRead 224909 p1 \n", + "3 DiskRead 226255 p2 \n", + "4 DiskRead 226834 p2 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cfs = loader( 'MSNStorageCFS_sortedFrame.csv')\n", + "cfs.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def convert(df):\n", + " ops = df.loc[:,'Disk Operation'].unique()\n", + " ops_dict = {ops[i]: 0 if 'Read' in ops[i] else 1 for i in range(len(ops))}\n", + " pids = df.loc[:,'Process Name ( PID)'].unique()\n", + " pids_dict = {pids[i]: i for i in range(len(pids))}\n", + " # DataFrame.replace() can take nested dictionaries\n", + " # For a DataFrame nested dictionaries, e.g., {'a': {'b': np.nan}}, \n", + " # are read as follows: look in column ‘a’ for the value ‘b’ and replace \n", + " # it with NaN. The value parameter should be None to use a nested dict\n", + " # in this way. \n", + " # You can nest regular expressions as well. \n", + " \n", + " df.replace({'Disk Operation': ops_dict,\n", + " 'Process Name ( PID)':pids_dict},\n", + " inplace = True)\n", + " del ops,ops_dict,pids,pids_dict\n", + " gc.collect()\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{' DiskRead': 0, ' DiskWrite': 1, 'DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, ' DiskRead': 0, 'DiskWrite': 1, ' DiskWrite': 1, ' DiskRead': 0, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1, ' DiskWrite': 1} {' p0 ': 0, ' p1 ': 1, ' p2 ': 2, ' p3 ': 3, ' p4 ': 4, ' p5 ': 5, ' p6 ': 6, ' p7 ': 7, ' p8 ': 8, ' p9 ': 9, ' p10 ': 10, ' p11 ': 11, ' p12 ': 12, ' p13 ': 13, ' p14 ': 14, ' p15 ': 15, ' p16 ': 16}\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Disk OperationTimeStampProcess Name ( PID)
002097100
102245481
202249091
302262552
402268342
\n", + "
" + ], + "text/plain": [ + " Disk Operation TimeStamp Process Name ( PID)\n", + "0 0 209710 0\n", + "1 0 224548 1\n", + "2 0 224909 1\n", + "3 0 226255 2\n", + "4 0 226834 2" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cfs = convert(cfs)\n", + "cfs.head()" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "{' DiskRead': 0,\n", + " ' DiskWrite': 1, \n", + " 'DiskRead': 2,\n", + " ' DiskRead': 3,\n", + " ' DiskRead': 4,\n", + " ' DiskRead': 5,\n", + " ' DiskRead': 6,\n", + " ' DiskRead': 7,\n", + " ' DiskRead': 8,\n", + " ' DiskRead': 9,\n", + " ' DiskRead': 10,\n", + " ' DiskRead': 11,\n", + " ' DiskRead': 12,\n", + " ' DiskRead': 13,\n", + " ' DiskRead': 14,\n", + " ' DiskRead': 15,\n", + " 'DiskWrite': 16,\n", + " ' DiskWrite': 17,\n", + " ' DiskRead': 18,\n", + " ' DiskWrite': 19,\n", + " ' DiskWrite': 20,\n", + " ' DiskWrite': 21,\n", + " ' DiskWrite': 22, \n", + " ' DiskWrite': 23,\n", + " ' DiskWrite': 24,\n", + " ' DiskWrite': 25,\n", + " ' DiskWrite': 26,\n", + " ' DiskWrite': 27,\n", + " ' DiskWrite': 28,\n", + " ' DiskWrite': 29,\n", + " ' DiskWrite': 30\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Disk OperationTimeStampProcess Name ( PID)
002097100
102245481
202249091
302262552
402268342
503010933
603060823
713118963
803144173
903173763
1013202993
1103228533
1203240483
1313307323
1403341733
1513351143
1603368553
1713435803
1803443163
1903495133
\n", + "
" + ], + "text/plain": [ + " Disk Operation TimeStamp Process Name ( PID)\n", + "0 0 209710 0\n", + "1 0 224548 1\n", + "2 0 224909 1\n", + "3 0 226255 2\n", + "4 0 226834 2\n", + "5 0 301093 3\n", + "6 0 306082 3\n", + "7 1 311896 3\n", + "8 0 314417 3\n", + "9 0 317376 3\n", + "10 1 320299 3\n", + "11 0 322853 3\n", + "12 0 324048 3\n", + "13 1 330732 3\n", + "14 0 334173 3\n", + "15 1 335114 3\n", + "16 0 336855 3\n", + "17 1 343580 3\n", + "18 0 344316 3\n", + "19 0 349513 3" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cfs.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4477226" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(cfs)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "start = min(cfs['TimeStamp'])\n", + "end = max(cfs['TimeStamp'])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "duration of traces: 604.517407 s\n" + ] + } + ], + "source": [ + "## everything is in micro seconds\n", + "## converting the duration from us to s\n", + "duration = (end-start)/(10**6)\n", + "print(\"duration of traces: {} s\".format(duration))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "cfs.sort_values(by='TimeStamp',kind='mergesort',inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "deltas = []\n", + "for i in range(len(cfs)):\n", + " if i <= 1:\n", + " continue\n", + " deltas += (cfs.loc[i,'TimeStamp']-cfs.loc[i-1,'TimeStamp'])," + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot([i for i in range(len(deltas))],deltas)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4477224" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(deltas)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot([i for i in range(1000)],deltas[:1000])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot([i for i in range(10000)],deltas[-10000:])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2116819616910], dtype=int64)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.correlate(deltas[:-100],deltas[100:])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}