Added algorithm selection
This commit is contained in:
parent
7aea07f4c1
commit
cf4c02496e
|
@ -90,7 +90,7 @@ class SessionForm(forms.ModelForm):
|
||||||
model = Session
|
model = Session
|
||||||
|
|
||||||
fields = ('name', 'description', 'tuning_session', 'dbms', 'cpu', 'memory', 'storage',
|
fields = ('name', 'description', 'tuning_session', 'dbms', 'cpu', 'memory', 'storage',
|
||||||
'target_objective')
|
'algorithm', 'target_objective')
|
||||||
|
|
||||||
widgets = {
|
widgets = {
|
||||||
'name': forms.TextInput(attrs={'required': True}),
|
'name': forms.TextInput(attrs={'required': True}),
|
||||||
|
|
|
@ -12,7 +12,7 @@ from django.utils.timezone import now
|
||||||
|
|
||||||
from .types import (DBMSType, LabelStyleType, MetricType, KnobUnitType,
|
from .types import (DBMSType, LabelStyleType, MetricType, KnobUnitType,
|
||||||
PipelineTaskType, VarType, KnobResourceType,
|
PipelineTaskType, VarType, KnobResourceType,
|
||||||
WorkloadStatusType)
|
WorkloadStatusType, AlgorithmType)
|
||||||
|
|
||||||
|
|
||||||
class BaseModel(models.Model):
|
class BaseModel(models.Model):
|
||||||
|
@ -179,13 +179,13 @@ class Hardware(BaseModel):
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return 'CPU:{}, RAM:{}, Storage:{}'.format(self.cpu, self.memory, self.storage)
|
return 'CPU:{}, RAM:{}, Storage:{}'.format(self.cpu, self.memory, self.storage)
|
||||||
|
|
||||||
|
|
||||||
class Session(BaseModel):
|
class Session(BaseModel):
|
||||||
user = models.ForeignKey(User)
|
user = models.ForeignKey(User)
|
||||||
name = models.CharField(max_length=64, verbose_name="session name")
|
name = models.CharField(max_length=64, verbose_name="session name")
|
||||||
description = models.TextField(null=True, blank=True)
|
description = models.TextField(null=True, blank=True)
|
||||||
dbms = models.ForeignKey(DBMSCatalog)
|
dbms = models.ForeignKey(DBMSCatalog)
|
||||||
hardware = models.ForeignKey(Hardware)
|
hardware = models.ForeignKey(Hardware)
|
||||||
|
algorithm = models.IntegerField(choices=AlgorithmType.choices())
|
||||||
|
|
||||||
project = models.ForeignKey(Project)
|
project = models.ForeignKey(Project)
|
||||||
creation_time = models.DateTimeField()
|
creation_time = models.DateTimeField()
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
<td>{{ form.dbms.label_tag }}</td>
|
<td>{{ form.dbms.label_tag }}</td>
|
||||||
<td>{{ form.dbms }}</td>
|
<td>{{ form.dbms }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr id="cpu_row">
|
<tr id="cpu_row">
|
||||||
<td>{{ form.cpu.label_tag }}</td>
|
<td>{{ form.cpu.label_tag }}</td>
|
||||||
<td>{{ form.cpu }}</td>
|
<td>{{ form.cpu }}</td>
|
||||||
|
@ -34,7 +33,10 @@
|
||||||
<td>{{ form.storage.label_tag }}</td>
|
<td>{{ form.storage.label_tag }}</td>
|
||||||
<td>{{ form.storage }}</td>
|
<td>{{ form.storage }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr id="algorithm_row">
|
||||||
|
<td>{{ form.algorithm.label_tag }}</td>
|
||||||
|
<td>{{ form.algorithm }}</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ form.tuning_session.label_tag }}</td>
|
<td>{{ form.tuning_session.label_tag }}</td>
|
||||||
<td>{{ form.tuning_session }}</td>
|
<td>{{ form.tuning_session }}</td>
|
||||||
|
|
|
@ -32,6 +32,10 @@
|
||||||
<td><div class="text-right">{{ labels.hardware }}</div></td>
|
<td><div class="text-right">{{ labels.hardware }}</div></td>
|
||||||
<td>{{ session.hardware }}</td>
|
<td>{{ session.hardware }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><div class="text-right">{{ labels.algorithm }}</div></td>
|
||||||
|
<td>{{ algorithm_name }}</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><div class="text-right">{{ labels.creation_time }}</div></td>
|
<td><div class="text-right">{{ labels.creation_time }}</div></td>
|
||||||
<td>{{ session.creation_time }}</td>
|
<td>{{ session.creation_time }}</td>
|
||||||
|
|
|
@ -170,3 +170,16 @@ class LabelStyleType(BaseType):
|
||||||
CAPFIRST: 'capfirst',
|
CAPFIRST: 'capfirst',
|
||||||
LOWER: 'lower'
|
LOWER: 'lower'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class AlgorithmType(BaseType):
|
||||||
|
OTTERTUNE = 1
|
||||||
|
ALGORITHM1 = 2
|
||||||
|
ALGORITHM2 = 3
|
||||||
|
ALGORITHM3 = 4
|
||||||
|
|
||||||
|
TYPE_NAMES = {
|
||||||
|
OTTERTUNE: 'Ottertune Default',
|
||||||
|
ALGORITHM1: 'Algorithm 1',
|
||||||
|
ALGORITHM2: 'Algorithm 2',
|
||||||
|
ALGORITHM3: 'Algorithm 3'
|
||||||
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ from .parser import Parser
|
||||||
from .tasks import (aggregate_target_results, map_workload,
|
from .tasks import (aggregate_target_results, map_workload,
|
||||||
configuration_recommendation)
|
configuration_recommendation)
|
||||||
from .types import (DBMSType, KnobUnitType, MetricType,
|
from .types import (DBMSType, KnobUnitType, MetricType,
|
||||||
TaskType, VarType, WorkloadStatusType)
|
TaskType, VarType, WorkloadStatusType, AlgorithmType)
|
||||||
from .utils import JSONUtil, LabelUtil, MediaUtil, TaskUtil
|
from .utils import JSONUtil, LabelUtil, MediaUtil, TaskUtil
|
||||||
from .settings import TIME_ZONE
|
from .settings import TIME_ZONE
|
||||||
|
|
||||||
|
@ -261,6 +261,7 @@ def session_view(request, project_id, session_id):
|
||||||
'knob_names': knob_names,
|
'knob_names': knob_names,
|
||||||
'filters': [],
|
'filters': [],
|
||||||
'session': session,
|
'session': session,
|
||||||
|
'algorithm_name': AlgorithmType.TYPE_NAMES[session.algorithm],
|
||||||
'results': results,
|
'results': results,
|
||||||
'labels': form_labels,
|
'labels': form_labels,
|
||||||
}
|
}
|
||||||
|
@ -313,6 +314,7 @@ def create_or_edit_session(request, project_id, session_id=''):
|
||||||
initial={
|
initial={
|
||||||
'dbms': DBMSCatalog.objects.get(
|
'dbms': DBMSCatalog.objects.get(
|
||||||
type=DBMSType.POSTGRES, version='9.6'),
|
type=DBMSType.POSTGRES, version='9.6'),
|
||||||
|
'algorithm': AlgorithmType.OTTERTUNE,
|
||||||
'target_objective': 'throughput_txn_per_sec',
|
'target_objective': 'throughput_txn_per_sec',
|
||||||
})
|
})
|
||||||
context = {
|
context = {
|
||||||
|
|
Loading…
Reference in New Issue