Hi Sushan Lama,
At this point, the behavior we are seeing indicates kernel‑level or storage‑level contention after the migration from VMware to Hyper‑V. Since the CPU usage is coming from the System process rather than SQL Server itself, configuration changes alone are no longer sufficient.
To proceed safely and identify the root cause, I need to collect diagnostic data while the issue is occurring. This will allow me to confirm whether the CPU spikes are caused by storage latency, VSS activity, or Hyper‑V integration components.
Could you please provide:
- Task Manager screenshots (Processes, Details, and Performance tabs) captured while the issue is happening. These screenshots help confirm how CPU usage correlates with disk activity.
- PerfMon Collect the PerfMon log regarding the high CPU issue on the affected server:
- Open an administrator Command Prompt.
- Run this command to set up the log collection:
Logman.exe create counter PerfLog-Long -o "c:\perflogs\PerfLog-Long.blg" -f csv -v mmddhhmm -max 500 -c "\Cache\*" "\LogicalDisk(*)\*" "\Memory\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Process(*)\*" "\Redirector\*" "\Server\*" "\Server Work Queues\*" "\System\*" -si 00:01:00- Run this command when the issue start:
Logman.exe start PerfLog-Long- Run this command after 5 minutes from the start command in step 3:
After you finish the above command, there will be a file nameLogman.exe stop PerfLog-LongPerfLog-Long.blgcreated inC:\perflogsfolder. This allows me to verify whether CPU spikes are caused by disk latency or kernel waits. - TSS logs
- Please open the below link https://aka.ms/getTSS
- Download the zip file and move file on all the nodes, so that we can collect logs offline.
- Open Admin PowerShell on the server.
- Browse to the location where file name as TSS.ps1 is present (present in TSS folder)
- And run
.\TSS.ps1 -SDP:Perf[Run this command in PowerShell window as Administrator]
Set-ExecutionPolicy -ExecutionPolicy Bypass -force -Scope Processand verify with 'Get-ExecutionPolicy -List' that no ExecutionPolicy with higher precedence is blocking execution of this script. Then run ".\TSS.ps1 -SDP:Perf" again.- Upload resulting compressed data (TSS *.zip file).
Please note: I do not recommend stopping any system or kernel services, as this can cause instability or data issues. Log collection is the safest and most effective next step.
In addition, I have some quick questions to correlate the spike:
- Does it happen at a specific time in the day (e.g., backups/maintenance/AV scan window)?
- Does it happen when starting a certain application or job (e.g., SQL Agent job, ETL, backup task, scheduled task)?
After collecting these logs, kindly upload it to OneDrive and share the link. Once you share the screenshots and logs, I’ll analyze them and advise on the next steps as quickly as possible to minimize further impact on your production operations.
Thank you for your cooperation.
Ivy Bui