Skip to content

Instantly share code, notes, and snippets.

@smidm
Created January 19, 2014 21:45
Show Gist options
  • Select an option

  • Save smidm/8511370 to your computer and use it in GitHub Desktop.

Select an option

Save smidm/8511370 to your computer and use it in GitHub Desktop.
strace analysis of correct behaviour for the bug https://bugzilla.redhat.com/show_bug.cgi?id=1055234
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "strace frequent freezes"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Strace of correct behaviour"
]
},
{
"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": 192
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df = pd.read_fwf('wc_normal.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: 1911 entries, 0 to 1910\n",
"Data columns (total 2 columns):\n",
"0 1911 non-null values\n",
"1 1911 non-null values\n",
"dtypes: datetime64[ns](1), object(1)\n",
"</pre>"
],
"output_type": "pyout",
"prompt_number": 193,
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 1911 entries, 0 to 1910\n",
"Data columns (total 2 columns):\n",
"0 1911 non-null values\n",
"1 1911 non-null values\n",
"dtypes: datetime64[ns](1), object(1)"
]
}
],
"prompt_number": 193
},
{
"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",
" <tbody>\n",
" <tr>\n",
" <td>Int64Index([], dtype=int64)</td>\n",
" <td>Empty DataFrame</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 194,
"text": [
"Empty DataFrame\n",
"Columns: [0, 1]\n",
"Index: []"
]
}
],
"prompt_number": 194
},
{
"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:00.550690\n"
]
}
],
"prompt_number": 195
},
{
"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 0.6 seconds\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 196,
"text": [
"<matplotlib.text.Text at 0x803c450>"
]
},
{
"output_type": "display_data",
"png": "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\ngg==\n"
}
],
"prompt_number": 196
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 196
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment