PLA_E_INVALID_SESSION_NAME (0X8030010F) fix for Performance Monitor
This error hits when Performance Logs and Alerts can't start a trace session because the name's too long or has invalid chars. Real trigger: Data Collector Set with a name over 50 chars.
When this error shows up
You're running Performance Monitor on Windows 10 or Windows Server 2016/2019/2022. You create a custom Data Collector Set with a descriptive name like "Network Monitor - Production Servers - Latency Check". You hit Start, and instead of collecting data, you get a red popup: PLA_E_INVALID_SESSION_NAME (0X8030010F) — "The session name provided is invalid."
This also happens when you import a Data Collector Set from another machine, or when a scheduled task tries to kick off a trace session. The error stops collection dead. I've seen it most on Windows 10 21H2 and Server 2019 after someone got creative with naming.
What's actually happening here
The Performance Logs and Alerts service (PLA) uses Event Tracing for Windows (ETW) under the hood. ETW has a hard limit on session names: 50 characters, including the null terminator. That means you get 49 usable characters. The Data Collector Set's name maps directly to the ETW session name. If your set name is longer than 49 characters, ETW rejects it with PLA_E_INVALID_SESSION_NAME.
But it's not just length. ETW session names also can't contain these characters: < > : " / \ | ? *, plus leading or trailing spaces. And they must be unique per system — two sessions can't share the same name.
Some tools like logman.exe or the Windows Performance Toolkit let you specify a shorter session name separately from the Data Collector Set's display name, but the native GUI doesn't. So the root cause is almost always a Data Collector Set name exceeding 49 characters.
The fix
Step 1: Check the current session name length
Open PowerShell as administrator and run:
Get-CounterSet | Where-Object { $_.CounterSetName -like "YourDataCollectorSetName*" } | Format-ListOr use logman.exe query to list all active trace sessions. The session name will match your Data Collector Set name exactly.
Step 2: Shorten the Data Collector Set name
- Open Performance Monitor (
perfmon.msc). - Go to Data Collector Sets > User Defined or Event Trace Sessions.
- Right-click the failing set and choose Properties.
- Under the General tab, rename it to something under 49 characters. Drop adjectives, use abbreviations. E.g., "NetMon-Prod-Latency" instead of "Network Monitor - Production Servers - Latency Check".
- Click OK, then right-click and Start again.
The reason step 3 works is that the PLA service recreates the ETW session with the new short name. But wait — if you already have a running session with the old name, you might get a conflict. So stop the set first (right-click > Stop) before renaming.
Step 3: If renaming doesn't work — delete and recreate
Sometimes the set's XML definition or registry cache still holds the long name. Delete the Data Collector Set entirely (right-click > Delete), then create a new one with a short name. Use the same performance counters — just give it a name like "ProdLatency4".
Step 4: Check for hidden space characters
If you copy-pasted the name from a document, you might have a non-breaking space (U+00A0) or trailing space. Run this in PowerShell to detect it:
$name = "YourDataCollectorSetName"; $name.ToCharArray() | ForEach-Object { [int]$_ }Look for 32 (space) at the end, or 160 (non-breaking space) anywhere. If you find one, rename the set from scratch — type the name manually.
Step 5: For command-line or scripted starts — use logman with a short alias
If you're using logman.exe start or a scheduled task, you can decouple the session name from the set name. Create the set with a short name, then start it with:
logman start "ShortName" -s "YourMachine"Don't use -n with a different name — that'll create a second session and confuse things.
What to check if it still fails
- Check ETW session limits. Windows has a hard cap of 64 concurrent ETW sessions. Run
logman query -etsand count. If you're near the limit, stop unused sessions (e.g., circular kernel traces left from debugging). - Check for corrupted PLA state. Stop the Performance Logs & Alerts service (
pla.dll), renameC:\Windows\System32\LogFiles\PLA\toPLA.old, restart the service. This rebuilds the session cache, but you'll lose saved Data Collector Sets — export them first. - Check the registry. Some long-lived scheduled tasks store session names in
HKLM\SYSTEM\CurrentControlSet\Services\pla\Parameters\. A bad entry there can persist past a rename. Delete the key matching your old session name, then restart PLA. - Last resort: run the set as a different user. If the PLA service runs as LocalSystem but the set tries to access network drives, it could fail with a misleading error. Test under Run As with a domain account that has Log on as a batch job rights.
Pro tip: from now on, keep all Data Collector Set names under 30 characters. That leaves room for prefixes or suffixes if you need to version them. I use a naming convention like
Category-Host-Role— e.g., "Perf-DB01-Latency". Fits comfortably under 49 chars.
Was this solution helpful?