Skip to content

Instantly share code, notes, and snippets.

@smidm
Created January 19, 2014 21:34
Show Gist options
  • Save smidm/8511272 to your computer and use it in GitHub Desktop.
Save smidm/8511272 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "strace frequent freezes"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline\n",
"import matplotlib.pylab as pylab\n",
"import pandas as pd\n",
"import StringIO\n",
"import matplotlib.pylab as plt\n",
"import numpy as np\n",
"pylab.rcParams['figure.figsize'] = 8, 8 # that's default image size for this interactive session\n",
"pd.options.display.width = 200\n",
"from datetime import datetime, timedelta"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
"For more information, type 'help(pylab)'.\n"
]
}
],
"prompt_number": 56
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df = pd.read_fwf('wc.log', colspecs=[(0,14),(15,173)], header=None, parse_dates=[0])\n",
"df[0] = pd.to_datetime(df[0])\n",
"df"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<pre>\n",
"&lt;class 'pandas.core.frame.DataFrame'&gt;\n",
"Int64Index: 1948 entries, 0 to 1947\n",
"Data columns (total 2 columns):\n",
"0 1948 non-null values\n",
"1 1948 non-null values\n",
"dtypes: datetime64[ns](1), object(1)\n",
"</pre>"
],
"output_type": "pyout",
"prompt_number": 187,
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 1948 entries, 0 to 1947\n",
"Data columns (total 2 columns):\n",
"0 1948 non-null values\n",
"1 1948 non-null values\n",
"dtypes: datetime64[ns](1), object(1)"
]
}
],
"prompt_number": 187
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# calls taking more than 1 second\n",
"\n",
"idxs = (df[0].diff() > np.timedelta64(1,'s')).values\n",
"df.iloc[idxs.nonzero()[0] - 1]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>390 </th>\n",
" <td>2014-01-19 19:56:05.754720</td>\n",
" <td> read(3, \"u|\\375i\\272h\\3308\\216\\371\\370\\17\\333\\...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>742 </th>\n",
" <td>2014-01-19 19:56:12.388820</td>\n",
" <td> read(3, \"\\352x\\351\\347&lt;\\315-Xb\\273\\22\\275\\r\\22...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>966 </th>\n",
" <td>2014-01-19 19:56:16.738680</td>\n",
" <td> read(3, \"h\\215\\273U\\316xL\\f\\177[-BE#\\356\\2D\\36...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1382</th>\n",
" <td>2014-01-19 19:56:23.086230</td>\n",
" <td> read(3, \"8}\\204\\271i\\254\\330\\313\\227\\242%]\\215...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1638</th>\n",
" <td>2014-01-19 19:56:28.103210</td>\n",
" <td> read(3, \"\\2!\\30\\275\\232\\f\\26\\265\\320@\\343O\\371...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1670</th>\n",
" <td>2014-01-19 19:56:29.487310</td>\n",
" <td> read(3, \"\\226\\3442%\\240L \\203[\\327\\347\\312\\365...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 189,
"text": [
" 0 1\n",
"390 2014-01-19 19:56:05.754720 read(3, \"u|\\375i\\272h\\3308\\216\\371\\370\\17\\333\\...\n",
"742 2014-01-19 19:56:12.388820 read(3, \"\\352x\\351\\347<\\315-Xb\\273\\22\\275\\r\\22...\n",
"966 2014-01-19 19:56:16.738680 read(3, \"h\\215\\273U\\316xL\\f\\177[-BE#\\356\\2D\\36...\n",
"1382 2014-01-19 19:56:23.086230 read(3, \"8}\\204\\271i\\254\\330\\313\\227\\242%]\\215...\n",
"1638 2014-01-19 19:56:28.103210 read(3, \"\\2!\\30\\275\\232\\f\\26\\265\\320@\\343O\\371...\n",
"1670 2014-01-19 19:56:29.487310 read(3, \"\\226\\3442%\\240L \\203[\\327\\347\\312\\365..."
]
}
],
"prompt_number": 189
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# overall time\n",
"print df[0].max()-df[0].min()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0:00:30.884950\n"
]
}
],
"prompt_number": 190
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df[0].plot()\n",
"plt.title('Calls vs timestamp')\n",
"plt.ylabel('time (s)')\n",
"# y axis max is 35 seconds\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 191,
"text": [
"<matplotlib.text.Text at 0x7f667d0>"
]
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAfoAAAHnCAYAAABQXZ8MAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VOXZ//HvJEQgEBJQEkKCBBNAwpIEEXCDUFEWBVHK\nI7bKIn1EtK4tVp9qXapWFHGHSltRam1dqpX2B7hUg4pCRINYUFkDAQLIEgwkIdv9++N0hgxJIMCc\nOXNmPu/X67xmTuZkciUX4co5133fx2OMMQIAAGEpyukAAACAfSj0AACEMQo9AABhjEIPAEAYo9AD\nABDGKPQAAIQxCj3gkKioKG3cuFGSNGnSJN1zzz0OR3RYr1699NFHHzkdBoAAoNADJ+GVV15Rv379\nFBcXp44dO2rkyJFaunTpcb+Px+ORx+OxIcJja+iPjP/85z8aNGhQUOOo+4cPgMCh0AMnaNasWbrt\nttt09913a9euXSoqKtKNN96oBQsWnND7sXYVPwPADhR64ATs379f9957r2bPnq0xY8aoZcuWio6O\n1iWXXKIZM2ZIkvLz83XOOeeobdu26tixo2666SZVVVUd8713796tSy+9VG3bttWpp56qQYMGNVgA\np02bpunTp/t97LLLLtOTTz4pSZoxY4ZSU1PVpk0bnXnmmfrggw/qvcfcuXP1yiuv6NFHH1VcXJwu\nu+wySVJaWprv+Pvuu0/jxo3TNddcozZt2qhPnz5at26dfve73ykpKUmdO3fWe++95/ezmTJlijp2\n7KjU1FTdc889qq2tlSStX79egwcPVkJCgtq3b6+rrrpKknxXD7KyshQXF6fXX39dJSUluvTSS5WY\nmKh27dpp1KhR2rZtm+/r5Obm6p577tF5552nuLg4jR49Wrt379ZPf/pTxcfHq3///tq8ebPv+Kio\nKD3zzDNKT09X+/btdccdd/CHBSKDCXGTJ082iYmJplevXsc8dsmSJSYnJ8c0a9bMvPHGG36vvfji\ni6Zr166ma9eu5qWXXmry1//mm2/MwIEDTfPmzc3MmTMbPe7aa681WVlZpnfv3mbMmDGmpKTEGGPM\n3r17zZgxY0yfPn1M//79zX/+8x/f5yxatMh0797dZGRkmEceecT38ddee81kZmaaqKgo88UXX/h9\nna+++soMHDjQ9OzZ0/Tu3dscOnTIGGPM//3f/5lOnTqZ1q1b+x0/Z84c07t3b5OdnW0GDhxoVq5c\n6Xtt8+bN5qKLLjI9evQwmZmZprCw8Kg/i8biKi8vN+PHjze9e/c2PXr0ML/73e+O+j7hYNGiRaZZ\ns2ampqam0WO++OILs3z5clNTU2MKCwtNjx49zJNPPul73ePxmA0bNhhjjJk0aZK55557jDHG3Hnn\nneb666831dXVprq62nzyyScNvv9HH31kOnXq5Nvfu3evadmypSkuLjbffvut6dSpkykuLjbGWLn2\nfq0j1f3aXmlpaebf//63McaYe++917Ro0cK8++67prq62kyYMMF07tzZPPzww6a6utr84Q9/MF26\ndPF97pgxY8z1119vysrKzK5du0z//v3N888/b4wxZvz48ebhhx82xhhz6NAhs3Tp0gZ/HsYYs2fP\nHvPmm2+a8vJyU1paasaNG2fGjBnje33w4MGma9euZuPGjWb//v0mMzPTZGRkmH//+9++OCdPnuz3\n/j/60Y/Mvn37zJYtW0y3bt3MH//4xwZ/JkA4CflC/9FHH5kvv/yySYW+sLDQrFq1ykyYMMGv0O/Z\ns8ecccYZZt++fWbfvn2+50fq3LlzvY/t2rXLfP755+bXv/71UQv9Dz/84Ht+++23m9/+9rfGGGN+\n+ctfmgceeMAYY8y3335rLrzwQmOMMdXV1SY9Pd1s2rTJVFZWmqysLLNmzRpjjPXHxXfffWdyc3P9\nCmpVVZXp06ePWbVqlTHG+o/dW2iWL19uiouL6xX6unEtWLDA9/WNsf6jfP/9940xxhw8eNCUlZU1\n+v0dLa558+aZ8ePHG2OMKSsrM2lpaWbz5s1HfS+3e/nll02HDh2O63OeeOIJc/nll/v2Gyv0v/nN\nb8xll11m1q9ff9T3q62tNaeffrr56KOPjDHGzJ0715ffdevWmcTERPP++++bysrKo77PpEmTzN13\n3+33sSML/cUXX+x7bcGCBaZ169amtrbWGGP9G/N4PGb//v1mx44dpnnz5qa8vNx3/CuvvGKGDBli\njDFmwoQJ5rrrrjNbt26tF8eRhf5IBQUFpm3btr793Nxc3x8Nxhjzi1/8wowcOdK3/89//tNkZ2f7\nvf8777zj2589e7bf7wMQrkL+0v0FF1ygtm3b+n1sw4YNGjFihPr166dBgwbpu+++kyR17txZvXv3\nVlSU/7f1zjvv6OKLL1ZCQoISEhJ00UUXafHixfW+VkODodq3b69+/fopJibmqHHGxcVJsnqMZWVl\nOu200yRJ33zzjYYMGSJJ6t69uwoLC7Vr1y7l5+crIyNDaWlpiomJ0fjx4/X2229Lks4880x169at\n3td499131adPH/Xu3VuS1LZtW9/32r9/f3Xo0KHRuCTpwIEDvrjWrFmjmpoaXXjhhZKk2NhYtWzZ\nUpL0xRdfKDc3V/369dPw4cO1Y8eOo8aVnJysgwcPqqamRgcPHtQpp5yiNm3aHPXn5Xannnqqdu/e\n7bsk3ZC1a9fq0ksvVXJysuLj4/XrX/9ae/bsafR489/LyNOnT1dGRoYuvvhipaen+1oBR/J4PBo/\nfrz++te/SrIGBv70pz+VJGVkZOjJJ5/Ufffdp6SkJF111VUqLi4+0W9XiYmJvuctW7bUaaed5vt9\n8f67OXDggDZv3qyqqiolJyerbdu2atu2ra6//np9//33kqRHH31Uxhj1799fvXr10rx58xr9mmVl\nZZo6darS0tIUHx+vwYMHa//+/X6X25OSknzPW7Ro4RdnixYtdODAAb/37NSpk+/56aefru3bt5/I\njwNwlZAv9A257rrr9Mwzz2jFihV67LHHdMMNNxz1+O3btys1NdW3n5qa6tfrC5TJkycrOTlZX3/9\ntf73f/9XktVzfPPNNyVZPdvNmzdr69at2rZtm99/Ok2Jad26dfJ4PBo+fLjOOussPfbYY02Ka/bs\n2crIyNDtt9+u3/3ud5KsIpSQkKCxY8eqb9++uuOOO1RbW6uqqirddNNN+vvf/64VK1Zo8uTJ+vWv\nf33U9x82bJjatGmj5ORkpaWlafr06UpISGhSbG51zjnnqHnz5nrrrbcaPWbatGnKzMzU+vXrtX//\nfj300ENH/cPAq3Xr1po5c6Y2bNigBQsWaNasWQ321yXpqquu0htvvKHNmzcrPz9fY8eO9Xvt448/\n1ubNm+XxePSrX/2qwfcI5Gj/Tp06qXnz5tqzZ4/27dunffv2af/+/fr6668lWYV57ty52rZtm55/\n/nndcMMNjY60f/zxx7V27Vrl5+dr//79WrJkiYx1FfKEv48tW7b4PU9JSTmB7xJwF9cV+gMHDuiz\nzz7TuHHjlJOTo+uvv953xnk8vP8p3HjjjcrJyVFOTo62b9/ue+4tiMdj3rx52r59u/r06aMHH3xQ\nknTnnXeqpKREOTk5evbZZ5WTk6Po6OgT+s+1qqpKn3zyiV555RV98skneuuttxotAHXdcMMNWr9+\nvWbNmqVrr71WklRdXa2PP/5Yjz/+uD7//HNt3LhRL774or777jutXr1aQ4cOVU5Ojh566KFj/gHy\n8ssvq7y8XMXFxdq0aZNmzpypTZs2Hff35ybx8fF64IEHdOONN+rtt99WWVmZqqqqtGjRIl9BPXDg\ngOLi4hQbG6tvv/1Wc+bMafT96havf/3rX1q/fr2MMWrTpo2io6MVHR3d4OdlZ2frtNNO089+9jMN\nHz7cdyVl7dq1+uCDD3To0CE1b95cLVq0aPQ9kpKSAjatLTk5WRdffLFuv/12lZaWqra2Vhs2bPDN\nyX/99de1detWSVJCQoI8Ho/vqlRSUpI2bNjge68DBw6oZcuWio+P1969e3X//ffX+3p1f26N/QFQ\n18yZM1VSUqKioiI9/fTTuvLKK0/q+wXcwHWFvra2VgkJCSooKPBtq1evrndc3UKakpKioqIi335R\nUZHvL/nnnnvO9z4dO3b0Pb/rrrtOKL6oqCiNHz9en3/+uSTr0vkLL7yggoICzZ8/X99//73S09Mb\njKnuVYeGdOrUSYMGDVK7du3UsmVLjRw5Ul9++WWTY7vyyit9x6empio7O1tpaWmKjo7WmDFjfK/1\n7NnT93NYtWpVg22Ouj799FNdfvnlio6OVvv27XXeeedpxYoVTY7LrW6//XbNmjVLDz74oBITE3X6\n6adr9uzZuvzyyyVZReWVV15RmzZtdN1112n8+PF+/y6PfO7dX79+vS666CLFxcXp3HPP1Y033qjB\ngwc3GsdPfvITffDBB/rJT37i+9ihQ4d01113qX379kpOTtbu3bsb/eN1ypQpWrNmjdq2basrrrii\n3usNzfE/2v78+fNVWVmpzMxMtWvXTuPGjfP9Mb5ixQoNHDjQN8L/6aefVlpamiRrdP/EiRPVtm1b\nvfHGG7r11ltVXl6u0047Teeee65GjBhx1K/blDgvu+wynXXWWcrJydGll17q+8MXCGtODQ44Hps2\nbfIbjHfuueea119/3RhjDUj66quv/I6fOHGi32C8vXv3mi5duph9+/b5PT9SWlpaozHce++9Rx2M\nt27dOl88v/jFL3yDm0pKSnwj4+fOnWsmTpxojLEG1p1xxhlm06ZN5tChQ36D8bxyc3PNihUrfPv7\n9u0zffv2NWVlZaaqqsoMHTrULFy40O9zjhyM543LGGsQ1fnnn2+MsQYDZmVlme+//94YYw3Imj17\n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\n"
}
],
"prompt_number": 191
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment