From 82dabdfc7576ae7c331125856678f80ecaba3901 Mon Sep 17 00:00:00 2001 From: saibulusu Date: Wed, 21 Jan 2026 18:36:48 -0800 Subject: [PATCH 1/2] fio verify file path is not the test file path --- .../VirtualClient.Actions/FIO/FioExecutor.cs | 26 ++++++------------- .../profiles/PERF-IO-FIO.json | 8 +++--- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs index 25395a181b..df192d57f8 100644 --- a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs @@ -369,7 +369,10 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel foreach (DiskWorkloadProcess workload in this.WorkloadProcesses) { - await this.DeleteTestVerificationFilesAsync(workload.TestFiles); + if (workload.CommandArguments.Contains("do_verify=1")) + { + await this.DeleteTestVerificationFilesAsync(); + } if (this.DeleteTestFilesOnFinish) { @@ -484,27 +487,14 @@ protected override async Task CleanupAsync(EventContext telemetryContext, Cancel /// Override allows FIO to handle the delete of additional files used in data integrity verification /// tests (e.g. *-verify.state files). /// - /// The test files to delete. /// A retry policy to apply to file deletions to handle transient issues. - protected Task DeleteTestVerificationFilesAsync(IEnumerable testFiles, IAsyncPolicy retryPolicy = null) + protected Task DeleteTestVerificationFilesAsync(IAsyncPolicy retryPolicy = null) { List filesToDelete = new List(); - if (testFiles?.Any() == true) + string[] verificationStateFiles = this.FileSystem.Directory.GetFiles("*verify.state"); + if (verificationStateFiles?.Any() == true) { - foreach (string file in testFiles) - { - string fileDirectory = Path.GetDirectoryName(file); - if (string.IsNullOrEmpty(fileDirectory)) - { - continue; - } - - string[] verificationStateFiles = this.FileSystem.Directory.GetFiles(fileDirectory, "*verify.state"); - if (verificationStateFiles?.Any() == true) - { - filesToDelete.AddRange(verificationStateFiles); - } - } + filesToDelete.AddRange(verificationStateFiles); } return this.DeleteTestFilesAsync(filesToDelete, retryPolicy); diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json index 281d72f2fb..a63a2bd324 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json @@ -6,11 +6,11 @@ "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" }, "Parameters": { - "DiskFillSize": "500G", - "FileSize": "496G", + "DiskFillSize": "100G", + "FileSize": "96G", "DataIntegrityFileSize": "4G", "DiskFilter": "BiggestSize", - "Duration": "00:05:00", + "Duration": "00:01:00", "Engine": "{calculate(\"{Platform}\".StartsWith(\"linux\") ? \"libaio\" : \"windowsaio\")}", "ThreadCount": "{calculate({LogicalCoreCount}/2)}", "QueueDepth": "{calculate(512/{ThreadCount})}", @@ -39,7 +39,7 @@ "MetricScenario": "fio_randwrite_{FileSize}_4k_d{QueueDepth}_th{ThreadCount}", "PackageName": "fio", "DiskFilter": "$.Parameters.DiskFilter", - "CommandLine": "--name=fio_randwrite_{FileSize}_4k_d{QueueDepth}_th{ThreadCount} --size={FileSize} --numjobs={ThreadCount} --rw=randwrite --bs=4k --iodepth={QueueDepth} --ioengine={Engine} --direct=1 --ramp_time=30 --runtime={Duration.TotalSeconds} --time_based --overwrite=1 --thread --group_reporting --output-format=json", + "CommandLine": "--name=fio_randwrite_{FileSize}_4k_d{QueueDepth}_th{ThreadCount} --size={FileSize} --numjobs={ThreadCount} --rw=randwrite --bs=4k --iodepth={QueueDepth} --ioengine={Engine} --direct=1 --ramp_time=1 --runtime={Duration.TotalSeconds} --time_based --overwrite=1 --thread --group_reporting --output-format=json", "ThreadCount": "$.Parameters.ThreadCount", "QueueDepth": "$.Parameters.QueueDepth", "Engine": "$.Parameters.Engine", From a5753348af61c3fc068e2b314a04529e20834773 Mon Sep 17 00:00:00 2001 From: saibulusu Date: Wed, 21 Jan 2026 20:19:37 -0800 Subject: [PATCH 2/2] restoring PERF-IO-FIO.json main content & using current directory for file path of verify-state file --- .../VirtualClient.Actions/FIO/FioExecutor.cs | 3 +-- .../VirtualClient.Main/profiles/PERF-IO-FIO.json | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs index df192d57f8..def866dd7a 100644 --- a/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/FIO/FioExecutor.cs @@ -491,7 +491,7 @@ protected override async Task CleanupAsync(EventContext telemetryContext, Cancel protected Task DeleteTestVerificationFilesAsync(IAsyncPolicy retryPolicy = null) { List filesToDelete = new List(); - string[] verificationStateFiles = this.FileSystem.Directory.GetFiles("*verify.state"); + string[] verificationStateFiles = this.FileSystem.Directory.GetFiles(this.FileSystem.Directory.GetCurrentDirectory(), "*verify.state"); if (verificationStateFiles?.Any() == true) { filesToDelete.AddRange(verificationStateFiles); @@ -723,7 +723,6 @@ protected async Task ExecuteWorkloadAsync(DiskWorkloadProcess workload, string t await this.Logger.LogMessageAsync($"{nameof(FioExecutor)}.ExecuteProcess", relatedContext, async () => { await workload.Process.StartAndWaitAsync(cancellationToken).ConfigureAwait(); - if (!cancellationToken.IsCancellationRequested) { await this.LogProcessDetailsAsync(workload.Process, telemetryContext, "FIO", logToFile: true); diff --git a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json index a63a2bd324..281d72f2fb 100644 --- a/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json +++ b/src/VirtualClient/VirtualClient.Main/profiles/PERF-IO-FIO.json @@ -6,11 +6,11 @@ "SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows" }, "Parameters": { - "DiskFillSize": "100G", - "FileSize": "96G", + "DiskFillSize": "500G", + "FileSize": "496G", "DataIntegrityFileSize": "4G", "DiskFilter": "BiggestSize", - "Duration": "00:01:00", + "Duration": "00:05:00", "Engine": "{calculate(\"{Platform}\".StartsWith(\"linux\") ? \"libaio\" : \"windowsaio\")}", "ThreadCount": "{calculate({LogicalCoreCount}/2)}", "QueueDepth": "{calculate(512/{ThreadCount})}", @@ -39,7 +39,7 @@ "MetricScenario": "fio_randwrite_{FileSize}_4k_d{QueueDepth}_th{ThreadCount}", "PackageName": "fio", "DiskFilter": "$.Parameters.DiskFilter", - "CommandLine": "--name=fio_randwrite_{FileSize}_4k_d{QueueDepth}_th{ThreadCount} --size={FileSize} --numjobs={ThreadCount} --rw=randwrite --bs=4k --iodepth={QueueDepth} --ioengine={Engine} --direct=1 --ramp_time=1 --runtime={Duration.TotalSeconds} --time_based --overwrite=1 --thread --group_reporting --output-format=json", + "CommandLine": "--name=fio_randwrite_{FileSize}_4k_d{QueueDepth}_th{ThreadCount} --size={FileSize} --numjobs={ThreadCount} --rw=randwrite --bs=4k --iodepth={QueueDepth} --ioengine={Engine} --direct=1 --ramp_time=30 --runtime={Duration.TotalSeconds} --time_based --overwrite=1 --thread --group_reporting --output-format=json", "ThreadCount": "$.Parameters.ThreadCount", "QueueDepth": "$.Parameters.QueueDepth", "Engine": "$.Parameters.Engine",