diff --git a/agent/api/task_windows.go b/agent/api/task_windows.go index 97d1c47b6ff..e4cdd3e5191 100644 --- a/agent/api/task_windows.go +++ b/agent/api/task_windows.go @@ -17,6 +17,7 @@ package api import ( "path/filepath" + "runtime" "strings" "github.com/aws/amazon-ecs-agent/agent/config" @@ -28,6 +29,8 @@ const ( memorySwappinessDefault = -1 ) +var cpus = runtime.NumCPU() * 1024 + // adjustForPlatform makes Windows-specific changes to the task after unmarshal func (task *Task) adjustForPlatform(cfg *config.Config) { task.downcaseAllVolumePaths() @@ -59,6 +62,7 @@ func getCanonicalPath(path string) string { // passed to Docker API. func (task *Task) platformHostConfigOverride(hostConfig *docker.HostConfig) error { task.overrideDefaultMemorySwappiness(hostConfig) + hostConfig.CPUPercent = hostConfig.CPUShares / int64(cpus) return nil } diff --git a/agent/api/task_windows_test.go b/agent/api/task_windows_test.go index 4d879e540cc..d97d576a386 100644 --- a/agent/api/task_windows_test.go +++ b/agent/api/task_windows_test.go @@ -112,10 +112,10 @@ func TestWindowsPlatformHostConfigOverride(t *testing.T) { task := &Task{} - hostConfig := &docker.HostConfig{} + hostConfig := &docker.HostConfig{CPUShares: 1024} task.platformHostConfigOverride(hostConfig) - + assert.Equal(t, int64(1024)/int64(cpus), hostConfig.CPUPercent) assert.EqualValues(t, expectedMemorySwappinessDefault, hostConfig.MemorySwappiness) }