Skip to content

[Request] Release a new version with the open performance PRs and fixes (#412–#421) #418

Open

Description

Is your feature request related to a problem? Please describe.
Large tenants run slowly and use a lot of memory. Each processing job parses the full resource set (the cause described in #407), per-resource REST calls run one after another, and several modules scan large lists for every resource. The PowerShell Gallery version is still 3.6.15, so none of the fixes since then (#409, #410) reach users who install from the Gallery.

Describe the solution you'd like
Review and merge the open performance PRs and bug fixes below, then bump ModuleVersion and publish to the PowerShell Gallery. Each PR is independent unless noted, and each one was checked for identical report output against the current code.

PR Change Measured gain
#412 One row per resource unless -IncludeTags (bug: duplicate rows per tag) 50k synthetic: processing −34%, report −77%, cache 173 → 43 MB
#413 Parallel REST calls with retry for API inventory, VM quotas, storage capacity and soft delete Live tenant: total run 7:41 → 3:51
#414 Each job receives only its own resource types Live tenant: pwsh memory 9.4 → 3.7 GB
#415 Retirement lookup indexed in 78 modules 10k synthetic: 23.2 → 7.0 s across modules
#416 VM module lookups indexed (builds on #412) 50k synthetic: VM module 874 → 10.5 s
#417 No fixed sleeps; job waits return when jobs finish Report phase −14%; up to 5 s less per wait

Bug fixes found along the way (small, one PR each):

PR Bug Effect today
#419 Resource Graph batches hold 201 subscriptions and overlap by one Tenants with more than 200 subscriptions: subscriptions #201, #401, … are queried twice, so their resources appear twice
#420 Quota data removed before it is returned; -QuotaUsage unused The Quota Usage sheet is never produced (now behind the documented -QuotaUsage)
#421 AutomationAccounts reads a leftover runbook ($1) instead of the account ($0) Wrong tags, retirements never shown, and accounts without runbooks show another account's runbook ID

Merge order: #412 before #416 and #421 (both build on it); #415 touches lines next to #412 and #416, and I'll rebase it after either lands. #413, #414, #417, #419 and #420 can go in any order.

Additional context
Live numbers come from one tenant: 4 subscriptions, ~3,200 resources, 97 storage accounts. Synthetic numbers come from a generated 10k / 50k-resource tenant. #414 should also help with the OutOfMemoryException in #407, which comes from the same full-JSON-per-job pattern. I'm happy to adjust any of the PRs.

Activity

  1. changed the title [-][Request] Release a new version with the open performance PRs (#412–#417)[/-] [+][Request] Release a new version with the open performance PRs and fixes (#412–#421)[/+] on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions