[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [RFC PATCH 5/6] Increase concurrent calls to StartIo
By increasing concurrent StartIo calls, storage requests should be better distributed over CPUs, and utilize multiple queues better. Signed-off-by: owensm <owen.smith@xxxxxxxxxx> --- src/xenvbd/adapter.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/xenvbd/adapter.c b/src/xenvbd/adapter.c index 7753388..b5e6e25 100644 --- a/src/xenvbd/adapter.c +++ b/src/xenvbd/adapter.c @@ -2139,6 +2139,47 @@ AdapterHwInitialize( IN PVOID DevExt ) { + PERF_CONFIGURATION_DATA PerfData; + ULONG CpuCount; + ULONG status; + + RtlZeroMemory(&PerfData, sizeof(PERF_CONFIGURATION_DATA)); + PerfData.Version = STOR_PERF_VERSION; + PerfData.Size = sizeof(PERF_CONFIGURATION_DATA); + + status = StorPortInitializePerfOpts(DevExt, TRUE, &PerfData); + if (status == STOR_STATUS_SUCCESS) { + // display available options + Trace("PERF_CONFIGURATION_DATA = \n"); + if (PerfData.Flags & STOR_PERF_DPC_REDIRECTION) + Trace("\tSTOR_PERF_DPC_REDIRECTION \n"); + if (PerfData.Flags & STOR_PERF_CONCURRENT_CHANNELS) + Trace("\tSTOR_PERF_CONCURRENT_CHANNELS\n"); + if (PerfData.Flags & STOR_PERF_INTERRUPT_MESSAGE_RANGES) + Trace("\tSTOR_PERF_INTERRUPT_MESSAGE_RANGES \n"); + if (PerfData.Flags & STOR_PERF_ADV_CONFIG_LOCALITY) + Trace("\tSTOR_PERF_ADV_CONFIG_LOCALITY \n"); + if (PerfData.Flags & STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO) + Trace("\tSTOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO \n"); + if (PerfData.Flags & STOR_PERF_DPC_REDIRECTION_CURRENT_CPU) + Trace("\tSTOR_PERF_DPC_REDIRECTION_CURRENT_CPU \n"); + if (PerfData.Flags & STOR_PERF_NO_SGL) + Trace("\tSTOR_PERF_NO_SGL \n"); + } + + CpuCount = KeQueryActiveProcessorCount(NULL); + + RtlZeroMemory(&PerfData, sizeof(PERF_CONFIGURATION_DATA)); + PerfData.Version = STOR_PERF_VERSION; + PerfData.Size = sizeof(PERF_CONFIGURATION_DATA); + PerfData.Flags = STOR_PERF_CONCURRENT_CHANNELS; + PerfData.ConcurrentChannels = CpuCount; + + status = StorPortInitializePerfOpts(DevExt, FALSE, &PerfData); + if (status != STOR_STATUS_SUCCESS) { + Error("StorPortInitializePerfOpts failed (%08x)\n", status); + } + return StorPortEnablePassiveInitialization(DevExt, AdapterHwPassiveInitialize); } -- 2.16.2.windows.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |