Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
b35250d
Fit latModel to 4KiB requests
carlosmalt Feb 24, 2020
4eade8b
Add K-S test scores
carlosmalt Feb 25, 2020
cc425dc
add new latency_model data and everything is based on the raw data
Feb 25, 2020
0d5f9bf
Skipped first 1000 in difference plot
carlosmalt Feb 26, 2020
96bc862
add CDF to txc_size plots
Feb 26, 2020
77d722d
adjust latmodel to match bluestore observation
Mar 2, 2020
6157470
add pypet automation to find the best prediction of latency model
Mar 2, 2020
e662dbf
add latency model graph with txc_size and kv_sync_lat
Mar 3, 2020
8e445c1
add simulation script for CoDel and blocking function
Mar 5, 2020
f9338c3
add codel test result with txn printed with prioirty
Mar 5, 2020
8df4d0e
add nre rules for blocking mechanism
Mar 8, 2020
d13e8d3
update codel simulation code for different blocking rules
Mar 9, 2020
51095c4
add CDF for txc size and binned kv_sync_lat for batch01 experiment
Mar 10, 2020
7203c0b
update the batch01/analysis.ipynb for minor change
Mar 10, 2020
7d6e2b0
modify CDF x-axis view limits and one more plot with all latencies in…
Mar 10, 2020
bfab01e
add labels to CDF of kv_sync_lat
Mar 10, 2020
e3fcb8e
add latency model for RocksDB-memtable-increased BlueStore
Mar 12, 2020
ee46194
add codel-simulation data
Mar 23, 2020
ab77a09
add plot script
Mar 23, 2020
9685516
add bluestore latency model(with aio + kv)
Mar 25, 2020
229ad16
add raw data comparing seqwrite and randwrite
Mar 25, 2020
02dcfa8
add simple_writes experiment result
Apr 20, 2020
0b15803
update the jupyter notbook
Apr 20, 2020
516f965
add latency model strategy
carlosmalt Jun 30, 2020
2b8b3cc
add curve fitting of data (out-of-date)
carlosmalt Jun 30, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
79 changes: 79 additions & 0 deletions experiments/CoDelTest/Untitled.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 log PriorityItem(priority=4, item='#0000')\n",
"2 log PriorityItem(priority=3, item='#0001')\n",
"3 log PriorityItem(priority=2, item='#0002')\n",
"3 repair PriorityItem(priority=3, item='#0001')\n",
"4 log PriorityItem(priority=1, item='#0003')\n",
"6 repair PriorityItem(priority=1, item='#0003')\n",
"9 repair PriorityItem(priority=2, item='#0002')\n",
"12 repair PriorityItem(priority=4, item='#0000')\n"
]
}
],
"source": [
"import simpy\n",
"import random\n",
"import math\n",
"\n",
"env = simpy.Environment()\n",
"issues = simpy.PriorityStore(env)\n",
"def inspector(env, issues):\n",
" for issue in [simpy.PriorityItem(4, '#0000'),\n",
" simpy.PriorityItem(3, '#0001'),\n",
" simpy.PriorityItem(2, '#0002'),\n",
" simpy.PriorityItem(1, '#0003')]:\n",
" yield env.timeout(1)\n",
" print(env.now, 'log', issue)\n",
" yield issues.put(issue)\n",
"\n",
"def maintainer(env, issues):\n",
" while True:\n",
" yield env.timeout(3)\n",
" issue = yield issues.get()\n",
" print(env.now, 'repair', issue)\n",
"\n",
"_ = env.process(inspector(env, issues))\n",
"_ = env.process(maintainer(env, issues))\n",
"env.run()"
]
},
{
"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.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
334 changes: 334 additions & 0 deletions experiments/CoDelTest/codel-rule01-res.ipynb

Large diffs are not rendered by default.

203 changes: 203 additions & 0 deletions experiments/CoDelTest/codel-rule02-res.ipynb

Large diffs are not rendered by default.

193 changes: 193 additions & 0 deletions experiments/CoDelTest/codel-rule03-res.ipynb

Large diffs are not rendered by default.

193 changes: 193 additions & 0 deletions experiments/CoDelTest/codel-rule04-res.ipynb

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions experiments/CoDelTest/plot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import matplotlib.pyplot as plt
from statistics import mean

# get average bs_lat(bs_lat is the latency in bluestore)
bs_lat_list = [x[1] for x in bs_lat_vec]
total_lat_list = [x[1] for x in total_lat_vec]

priInv = 0 # number of priority inversion
txn_numbers = len(bs_lat_vec)
for i in range(txn_numbers - 1):
if bs_lat_vec[i][0] < bs_lat_vec[i+1][0]:
priInv = priInv + 1
print("number of priority inversion =",priInv, "number of txcs =", txn_numbers)

fig, ax = plt.subplots()
#ax.set_yscale('log')
ax.plot(blocking_dur_vec, 'b-')
ax.set(xlabel='time', ylabel='blocking_duration[us]', title='blocking duration over time')

print("average bluestore latency(s) =",mean(bs_lat_list)/1000000)
print("average total latency(s) =",mean(total_lat_list)/1000000)

print("average osd queue size =",mean(osd_queue_size_vec))
fig, ax = plt.subplots()
ax.plot(osd_queue_size_vec, 'r-')
ax.set_ylim(0,14)
ax.set(xlabel='time', ylabel='osd_queue size', title='osd queue size')

print("average kv queue size =",mean(kv_queue_size_vec))
fig, ax = plt.subplots()
ax.plot(kv_queue_size_vec, 'c-')
ax.set(xlabel='time', ylabel='kv_queue size', title='bluestore kv queue size')
10,755 changes: 10,755 additions & 0 deletions experiments/CoDelTest/simulation-codel-out.ipynb

Large diffs are not rendered by default.

944 changes: 944 additions & 0 deletions experiments/CoDelTest/simulation-codel.ipynb

Large diffs are not rendered by default.

Binary file not shown.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
## The experiment in Ceph with BlueStore

`base-batch-1`:
`first-exp-batch01`:
1. CoDel is disabled
2. committing batch in BlueStore is set to 1
3. except `dump-codel-tests.csv`, all other data are raw data
4. `dump-codel-tests.csv` is generated in BlueStore. The first and last 5 data points are removed for steady state. This file is used in the plot script.
5. The data is getting from my branch: https://github.com/yzhan298/ceph.git, research\_rs\_mg
6. In order to dump these csvs, you need to call ceph admin socket commnad: `bin/ceph daemon osd.0 dump kvq vector`
This is the first experiment to get the latency model, so many of the files are not optimized for data process.

The `batch01`, `batch02`, `batch05` are new experiments. All csv files are raw data.
The cooking script is in the jupyter notebook.
`batch01`: commiting batch size = 1
`batch02`: commiting batch size = 2
`batch05`: commiting batch size = 5

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading