From 3d5f0bf452f6eaf7ea9371721bab5417089a8716 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Sun, 8 Dec 2024 09:36:54 +0000 Subject: [PATCH 1/2] fix: allow more powershell command running at same time on Windows node --- pkg/util/util.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/util/util.go b/pkg/util/util.go index 734bbeea88..3531d2efa9 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -21,7 +21,6 @@ import ( "os" "os/exec" "strings" - "sync" "time" "k8s.io/klog/v2" @@ -41,7 +40,8 @@ const ( AzcopyJobCompleted AzcopyJobState = "Completed" ) -var powershellCmdMutex = &sync.Mutex{} +// control the number of concurrent powershell commands running on Windows node +var powershellCmdSem = make(chan struct{}, 3) // RoundUpBytes rounds up the volume size in bytes up to multiplications of GiB // in the unit of Bytes @@ -79,13 +79,13 @@ func roundUpSize(volumeSizeBytes int64, allocationUnitBytes int64) int64 { } func RunPowershellCmd(command string, envs ...string) ([]byte, error) { - // only one powershell command can be executed at a time to avoid OOM - powershellCmdMutex.Lock() - defer powershellCmdMutex.Unlock() + // acquire a semaphore to limit the number of concurrent operations + powershellCmdSem <- struct{}{} + defer func() { <-powershellCmdSem }() cmd := exec.Command("powershell", "-Mta", "-NoProfile", "-Command", command) cmd.Env = append(os.Environ(), envs...) - klog.V(8).Infof("Executing command: %q", cmd.String()) + klog.V(6).Infof("Executing command: %q", cmd.String()) return cmd.CombinedOutput() } From 2e9da25a6730900671504ddf25a6224c9a2736a5 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Sun, 8 Dec 2024 09:37:50 +0000 Subject: [PATCH 2/2] fix: increase azurefile container memory limit on Windows node --- charts/README.md | 2 +- .../latest/azurefile-csi-driver-v1.30.6.tgz | Bin 13460 -> 13461 bytes .../latest/azurefile-csi-driver/values.yaml | 2 +- ...si-azurefile-node-windows-hostprocess.yaml | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/charts/README.md b/charts/README.md index 9f12a04aca..5bb382ce64 100644 --- a/charts/README.md +++ b/charts/README.md @@ -183,7 +183,7 @@ The following table lists the configurable parameters of the latest Azure File C | `windows.resources.nodeDriverRegistrar.limits.memory` | csi-node-driver-registrar memory limits | 150Mi | | `windows.resources.nodeDriverRegistrar.requests.cpu` | csi-node-driver-registrar cpu requests | 10m | | `windows.resources.nodeDriverRegistrar.requests.memory` | csi-node-driver-registrar memory requests | 40Mi | -| `windows.resources.azurefile.limits.memory` | azurefile memory limits | 200Mi | +| `windows.resources.azurefile.limits.memory` | azurefile memory limits | 600Mi | | `windows.resources.azurefile.requests.cpu` | azurefile cpu requests | 10m | | `windows.resources.azurefile.requests.memory` | azurefile memory requests | 40Mi | | `workloadIdentity.clientID` | client ID of workload identity | '' diff --git a/charts/latest/azurefile-csi-driver-v1.30.6.tgz b/charts/latest/azurefile-csi-driver-v1.30.6.tgz index 4edab07ad0a5f731366d0446e62dcef0eb05f1df..cf99fb5de7e457141d6cb203aae80579e492e42d 100644 GIT binary patch delta 13325 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 X&-(cmp8p#F0RIX9={veS0OA1vbVYKD delta 13276 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