Skip to content

Commit

Permalink
Added some configuration to Cpustres (look at cpustres.ini)
Browse files Browse the repository at this point in the history
  • Loading branch information
zodiacon committed May 2, 2018
1 parent bb046ca commit f6660c8
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 10 deletions.
9 changes: 4 additions & 5 deletions CPUSTRES/CPUStressEx.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#pragma once

#ifndef __AFXWIN_H__
#error "include 'stdafx.h' before including this file for PCH"
#error "include 'stdafx.h' before including this file for PCH"
#endif

#include "resource.h" // main symbols
Expand All @@ -14,18 +14,17 @@
// See CPUStressEx.cpp for the implementation of this class
//

class CCPUStressExApp : public CWinApp
{
class CCPUStressExApp : public CWinApp {
public:
CCPUStressExApp();


// Overrides
// Overrides
public:
virtual BOOL InitInstance();
virtual int ExitInstance();

// Implementation
// Implementation

public:
afx_msg void OnAppAbout();
Expand Down
13 changes: 13 additions & 0 deletions CPUSTRES/CPUStressEx.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
<Command>copy cpustres.ini $(TargetDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
Expand All @@ -132,6 +135,9 @@
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
<Command>copy cpustres.ini $(TargetDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
Expand Down Expand Up @@ -159,6 +165,9 @@
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
<Command>copy cpustres.ini $(TargetDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
Expand Down Expand Up @@ -186,6 +195,9 @@
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<PostBuildEvent>
<Command>copy cpustres.ini $(TargetDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="AffinityDlg.h" />
Expand Down Expand Up @@ -224,6 +236,7 @@
<ResourceCompile Include="CPUStressEx.rc" />
</ItemGroup>
<ItemGroup>
<None Include="CpuStres.ini" />
<None Include="publish_config.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
1 change: 1 addition & 0 deletions CPUSTRES/CPUStressEx.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@
<Filter>Resource Files</Filter>
</None>
<None Include="publish_config.json" />
<None Include="CpuStres.ini" />
</ItemGroup>
<ItemGroup>
<Image Include="res\CPUStressEx.ico">
Expand Down
33 changes: 31 additions & 2 deletions CPUSTRES/ChildView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,39 @@ int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) {
return 0;
}

AppSettings CChildView::ReadConfiguration() {
AppSettings config { 4, 1, ActivityLevel::Low };
wchar_t path[MAX_PATH];
if (0 == ::GetModuleFileName(nullptr, path, MAX_PATH))
return config;

*::wcsrchr(path, L'.') = L'\0';
::wcscat_s(path, L".ini");

const wchar_t AppName[] = L"Config";

config.InitialThreads = ::GetPrivateProfileInt(AppName, L"InitialThreads", 4, path);
if (config.InitialThreads < 1 || config.InitialThreads > 128)
config.InitialThreads = 1;

config.ActiveThreads = ::GetPrivateProfileInt(AppName, L"ActiveThreads", 1, path);
if (config.ActiveThreads < 0)
config.ActiveThreads = 0;

config.ActivityLevel = static_cast<ActivityLevel>(::GetPrivateProfileInt(AppName, L"ActivityLevel", 1, path));
if (config.ActivityLevel < ActivityLevel::Low || config.ActivityLevel > ActivityLevel::Maximum)
config.ActivityLevel = ActivityLevel::Low;

return config;
}

void CChildView::CreateThreads() {
for (int i = 0; i < 4; i++) {
auto config = ReadConfiguration();

for (int i = 0; i < config.InitialThreads; i++) {
auto thread = CreateThread();
if (i == 0)
thread->SetActivityLevel(config.ActivityLevel);
if (i < config.ActiveThreads)
thread->Resume();
AddThread(thread);
}
Expand Down
7 changes: 7 additions & 0 deletions CPUSTRES/ChildView.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
#include "Thread.h"
#include "ThreadsListCtrl.h"

struct AppSettings {
int InitialThreads;
int ActiveThreads;
ActivityLevel ActivityLevel;
};

// CChildView window

class CChildView : public CWnd {
Expand Down Expand Up @@ -49,6 +55,7 @@ class CChildView : public CWnd {
BOOL QueueItemForThreadPool(int busyPercent);
static DWORD CALLBACK BurnSomeCycles(int percent);
void UpdateCPUTimes();
AppSettings ReadConfiguration();

// Generated message map functions
protected:
Expand Down
7 changes: 7 additions & 0 deletions CPUSTRES/CpuStres.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[Config]
; initial number of threads (default=4)
InitialThreads=4
; initial active threads (default=1)
ActiveThreads=1
; default activity level (1=Low,2=Medium,3=Busy,4=Maximum) (default=1)
ActivityLevel=1
6 changes: 3 additions & 3 deletions CpuLimit/CpuLimit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ int Error(DWORD code) {
return code;
}

int main(int argc, char* argv[]) {
int main(int argc, const char* argv[]) {
if (argc < 3)
return PrintUsage();

// parse process ID

int pid = std::stoi(argv[1]);
int pid = atoi(argv[1]);

HANDLE hProcess = ::OpenProcess(PROCESS_SET_QUOTA | PROCESS_TERMINATE, FALSE, pid);
if (!hProcess)
Expand All @@ -35,7 +35,7 @@ int main(int argc, char* argv[]) {
return Error(::GetLastError());

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION info = { JOB_OBJECT_CPU_RATE_CONTROL_ENABLE | JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP };
info.CpuRate = std::stoi(argv[2]) * 100;
info.CpuRate = atoi(argv[2]) * 100;

if (!::SetInformationJobObject(hJob, JobObjectCpuRateControlInformation, &info, sizeof(info)))
return Error(::GetLastError());
Expand Down

0 comments on commit f6660c8

Please sign in to comment.