summaryrefslogtreecommitdiff
path: root/Simulator
diff options
context:
space:
mode:
Diffstat (limited to 'Simulator')
-rw-r--r--Simulator/Simulator.vcxproj18
-rw-r--r--Simulator/Simulator.vcxproj.filters93
-rw-r--r--Simulator/include/Simulator.h1
-rw-r--r--Simulator/include/database/Database.h4
-rw-r--r--Simulator/include/database/Queries.h15
-rw-r--r--Simulator/src/database/Database.cpp17
6 files changed, 92 insertions, 56 deletions
diff --git a/Simulator/Simulator.vcxproj b/Simulator/Simulator.vcxproj
index 8f852ecf..aba44dba 100644
--- a/Simulator/Simulator.vcxproj
+++ b/Simulator/Simulator.vcxproj
@@ -30,7 +30,7 @@
<ProjectGuid>{7CF8EE44-A898-46CC-9F6C-1245D1F893BF}</ProjectGuid>
<RootNamespace>Simulator</RootNamespace>
<ProjectName>Simulator</ProjectName>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -109,7 +109,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)external\sqlite3;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -121,12 +121,12 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>$(SolutionDir)external\sqlite3;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>sqlite3.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(SolutionDir)external\sqlite3;</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -135,7 +135,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>$(SolutionDir)external\sqlite3;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@@ -151,14 +151,14 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>$(SolutionDir)external\sqlite3;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>sqlite3.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(SolutionDir)external\sqlite3;</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LibGen|x64'">
@@ -199,7 +199,7 @@
<AdditionalLibraryDirectories>$(SolutionDir)external\sqlite3;</AdditionalLibraryDirectories>
</Link>
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)external\sqlite3;$(SolutionDir)external\gtest;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite;$(SolutionDir)external\gtest;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
</ItemDefinitionGroup>
@@ -209,7 +209,7 @@
<AdditionalLibraryDirectories>$(SolutionDir)external\sqlite3;</AdditionalLibraryDirectories>
</Link>
<ClCompile>
- <AdditionalIncludeDirectories>$(SolutionDir)external\sqlite3;$(SolutionDir)external\gtest;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(SolutionDir)opendc-simulator-dependencies\sqlite;$(SolutionDir)external\gtest;$(ProjectDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
</ItemDefinitionGroup>
diff --git a/Simulator/Simulator.vcxproj.filters b/Simulator/Simulator.vcxproj.filters
index 62867ed7..cd94ae30 100644
--- a/Simulator/Simulator.vcxproj.filters
+++ b/Simulator/Simulator.vcxproj.filters
@@ -21,9 +21,6 @@
<Filter Include="Source Files\Database">
<UniqueIdentifier>{d9c26546-3166-46e6-ac93-5559d5ab32b8}</UniqueIdentifier>
</Filter>
- <Filter Include="Header Files\Math">
- <UniqueIdentifier>{0717ffeb-69ab-4832-904c-3041b3b86ac5}</UniqueIdentifier>
- </Filter>
<Filter Include="Source Files\Simulation\Workloads">
<UniqueIdentifier>{f9450bee-6bd3-4870-ae67-d4e1a5c5c800}</UniqueIdentifier>
</Filter>
@@ -36,6 +33,18 @@
<Filter Include="Header Files\Simulation\Workloads">
<UniqueIdentifier>{ec05c495-e179-4db3-b21c-fd2292482f95}</UniqueIdentifier>
</Filter>
+ <Filter Include="Source Files\Modeling\Machine">
+ <UniqueIdentifier>{f691ce9e-8a17-4f0a-b661-7e8734ce37b6}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\Simulation\Schedulers">
+ <UniqueIdentifier>{a5b36e44-8d0c-477b-a833-55467dc0cad1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\Simulation\History">
+ <UniqueIdentifier>{70aa99d9-c949-42b9-905a-6fcb59c259a5}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\Modeling\Machine">
+ <UniqueIdentifier>{0bbea619-1ef1-4e50-b32e-fe9a4099a23a}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\database\Database.cpp">
@@ -50,29 +59,26 @@
<ClCompile Include="src\modeling\Entity.cpp">
<Filter>Source Files\Modeling</Filter>
</ClCompile>
- <ClCompile Include="src\modeling\machine\CPU.cpp">
+ <ClCompile Include="src\Simulator.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="src\modeling\machine\Machine.cpp">
- <Filter>Source Files\Modeling</Filter>
+ <ClCompile Include="src\simulation\workloads\WorkloadPool.cpp">
+ <Filter>Source Files\Simulation\Workloads</Filter>
</ClCompile>
- <ClCompile Include="src\modeling\machine\GPU.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="src\modeling\machine\Machine.cpp">
+ <Filter>Source Files\Modeling\Machine</Filter>
</ClCompile>
- <ClCompile Include="src\simulation\workloads\WorkloadPool.cpp">
- <Filter>Source Files</Filter>
+ <ClCompile Include="src\modeling\machine\CPU.cpp">
+ <Filter>Source Files\Modeling\Machine</Filter>
</ClCompile>
- <ClCompile Include="src\Simulator.cpp">
- <Filter>Source Files\Simulation</Filter>
+ <ClCompile Include="src\modeling\machine\GPU.cpp">
+ <Filter>Source Files\Modeling\Machine</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\database\Database.h">
<Filter>Header Files\Database</Filter>
</ClInclude>
- <ClInclude Include="include\Simulator.h">
- <Filter>Header Files\Simulation</Filter>
- </ClInclude>
<ClInclude Include="include\simulation\workloads\Workload.h">
<Filter>Header Files\Simulation\Workloads</Filter>
</ClInclude>
@@ -91,62 +97,65 @@
<ClInclude Include="include\modeling\Datacenter.h">
<Filter>Header Files\Modeling</Filter>
</ClInclude>
- <ClInclude Include="include\modeling\ModelingTypes.h">
- <Filter>Header Files\Modeling</Filter>
- </ClInclude>
<ClInclude Include="include\modeling\Room.h">
<Filter>Header Files\Modeling</Filter>
</ClInclude>
<ClInclude Include="include\modeling\TypeIndex.h">
<Filter>Header Files\Modeling</Filter>
</ClInclude>
- <ClInclude Include="include\modeling\machine\CPU.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="include\modeling\machine\Machine.h">
- <Filter>Header Files\Modeling</Filter>
- </ClInclude>
<ClInclude Include="include\modeling\Entity.h">
<Filter>Header Files\Modeling</Filter>
</ClInclude>
<ClInclude Include="include\modeling\Rack.h">
<Filter>Header Files\Modeling</Filter>
</ClInclude>
- <ClInclude Include="include\modeling\machine\GPU.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="include\simulation\Section.h">
+ <Filter>Header Files\Simulation</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\workloads\WorkloadPool.h">
+ <ClInclude Include="include\Simulator.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\schedulers\FirstInFirstOutScheduler.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="include\simulation\Path.h">
+ <Filter>Header Files\Simulation</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\schedulers\Scheduler.h">
- <Filter>Header Files\Simulation\Workloads</Filter>
+ <ClInclude Include="include\simulation\Experiment.h">
+ <Filter>Header Files\Simulation</Filter>
+ </ClInclude>
+ <ClInclude Include="include\simulation\schedulers\FirstInFirstOutScheduler.h">
+ <Filter>Header Files\Simulation\Schedulers</Filter>
</ClInclude>
<ClInclude Include="include\simulation\schedulers\ShortestRemainingTimeScheduler.h">
- <Filter>Header Files</Filter>
+ <Filter>Header Files\Simulation\Schedulers</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\history\SimulationHistory.h">
- <Filter>Header Files\Simulation</Filter>
+ <ClInclude Include="include\simulation\schedulers\Scheduler.h">
+ <Filter>Header Files\Simulation\Schedulers</Filter>
</ClInclude>
<ClInclude Include="include\simulation\history\History.h">
- <Filter>Header Files</Filter>
+ <Filter>Header Files\Simulation\History</Filter>
</ClInclude>
<ClInclude Include="include\simulation\history\MachineSnapshot.h">
- <Filter>Header Files</Filter>
+ <Filter>Header Files\Simulation\History</Filter>
+ </ClInclude>
+ <ClInclude Include="include\simulation\history\SimulationHistory.h">
+ <Filter>Header Files\Simulation\History</Filter>
</ClInclude>
<ClInclude Include="include\simulation\history\WorkloadSnapshot.h">
+ <Filter>Header Files\Simulation\History</Filter>
+ </ClInclude>
+ <ClInclude Include="include\simulation\workloads\WorkloadPool.h">
<Filter>Header Files\Simulation\Workloads</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\Section.h">
- <Filter>Header Files\Simulation</Filter>
+ <ClInclude Include="include\modeling\machine\CPU.h">
+ <Filter>Header Files\Modeling\Machine</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\Path.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="include\modeling\machine\GPU.h">
+ <Filter>Header Files\Modeling\Machine</Filter>
</ClInclude>
- <ClInclude Include="include\simulation\Experiment.h">
- <Filter>Header Files</Filter>
+ <ClInclude Include="include\modeling\ModelingTypes.h">
+ <Filter>Header Files\Modeling</Filter>
+ </ClInclude>
+ <ClInclude Include="include\modeling\machine\Machine.h">
+ <Filter>Header Files\Modeling\Machine</Filter>
</ClInclude>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/Simulator/include/Simulator.h b/Simulator/include/Simulator.h
index 381639af..1e0aaeb6 100644
--- a/Simulator/include/Simulator.h
+++ b/Simulator/include/Simulator.h
@@ -72,6 +72,7 @@ namespace Simulation
if ((*it).second.isFinished())
{
std::cout << "Finished simulation." << std::endl;
+ database.finishExperiment((*it).first);
it = experiments.erase(it);
}
else
diff --git a/Simulator/include/database/Database.h b/Simulator/include/database/Database.h
index 6e8bfeef..7f867d6c 100644
--- a/Simulator/include/database/Database.h
+++ b/Simulator/include/database/Database.h
@@ -49,6 +49,10 @@ namespace Database
*/
void dequeueExperiment(int id) const;
+ /*
+ Marks the given experiment as finished in the database.
+ */
+ void finishExperiment(int id) const;
/*
Creates a simulation object from a simulation in the database.
diff --git a/Simulator/include/database/Queries.h b/Simulator/include/database/Queries.h
index 73afc1a1..33e8cdb9 100644
--- a/Simulator/include/database/Queries.h
+++ b/Simulator/include/database/Queries.h
@@ -6,11 +6,15 @@ namespace Database
namespace Queries
{
Query<int> GET_QUEUED_EXPERIMENTS(std::string(R"query(
- SELECT experiment_id FROM queued_experiments;
+ SELECT id FROM experiments WHERE state LIKE 'QUEUED';
)query"));
- Query<> REMOVE_QUEUED_EXPERIMENT(std::string(R"query(
- DELETE FROM queued_experiments WHERE experiment_id = $id;
+ Query<> SET_EXPERIMENT_STATE_SIMULATING(std::string(R"query(
+ UPDATE experiments SET state='SIMULATING' WHERE id=$id;
+ )query"));
+
+ Query<> SET_EXPERIMENT_STATE_FINISHED(std::string(R"query(
+ UPDATE experiments SET state='FINISHED' WHERE id=$id;
)query"));
Query<int, int, int, int, std::string, std::string> GET_EXPERIMENT_BY_ID(std::string(R"query(
@@ -25,7 +29,10 @@ namespace Database
SELECT id, path_id, datacenter_id, start_tick FROM sections WHERE path_id = $id;
)query"));
-
+ Query<> WRITE_EXPERIMENT_LAST_SIMULATED_TICK(std::string(R"query(
+ UPDATE experiments SET last_simulated_tick = $val WHERE id = $id;
+ )query"));
+
/*
Returns the type of the scheduler of the given simulation section.
Returns: <std::string : scheduler_name>
diff --git a/Simulator/src/database/Database.cpp b/Simulator/src/database/Database.cpp
index bb76abda..b953bc73 100644
--- a/Simulator/src/database/Database.cpp
+++ b/Simulator/src/database/Database.cpp
@@ -76,6 +76,12 @@ namespace Database
});
history.clearHistory();
+
+ uint32_t lastSimulatedTick = experiment.getCurrentTick() - 1;
+ QueryExecuter<> writeLastSimulatedTick(db);
+ writeLastSimulatedTick.setQuery(Queries::WRITE_EXPERIMENT_LAST_SIMULATED_TICK)
+ .bindParams<int, int>(lastSimulatedTick, experiment.getId())
+ .executeOnce();
}
int Database::pollQueuedExperiments() const
@@ -91,11 +97,20 @@ namespace Database
void Database::dequeueExperiment(int experimentId) const
{
QueryExecuter<> q(db);
- q.setQuery(Queries::REMOVE_QUEUED_EXPERIMENT)
+ q.setQuery(Queries::SET_EXPERIMENT_STATE_SIMULATING)
.bindParams<int>(experimentId)
.executeOnce();
}
+ void Database::finishExperiment(int id) const
+ {
+ QueryExecuter<> q(db);
+ q.setQuery(Queries::SET_EXPERIMENT_STATE_FINISHED)
+ .bindParams<int>(id)
+ .executeOnce();
+ }
+
+
Simulation::Experiment Database::createExperiment(uint32_t experimentId)
{
// Retrieves the experiment data by ID