Meeting Performance Goals for Azure Deployments: Listing 2.

Adding performance counters.

public override bool OnStart()
        {
            bool collectCountersForLoad = default(bool);
            collectCountersForLoad = bool.Parse(RoleEnvironment.GetConfigurationSettingValue("LoadTesting"));
            List<string> countersToWatch = new List<string>();

            if (collectCountersForLoad)
            {
                TimeSpan sampleInterval = TimeSpan.FromSeconds(5);
                countersToWatch.Add(@"\Processor(_Total)\% Processor Time");
                countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 0 heap size");
                countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 1 heap size");
                countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 2 heap size");

            }

            // To enable the AzureLocalStorageTraceListner, uncomment relevent section in the web.config  
            DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
            diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
            diagnosticConfig.Directories.DataSources.Add(AzureLocalStorageTraceListener.GetLogDirectory());

            foreach(string counter in countersToWatch)
            {
                diagnosticConfig.PerformanceCounters.DataSources.Add(new PerformanceCounterConfiguration
                                                                        {   CounterSpecifier = counter,
                                                                            SampleRate = TimeSpan.FromSeconds(5)
                                                                        }
                                                                    );
            }

            DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagnosticConfig);
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            return base.OnStart();
        }

About the Author

Joseph Fultz is a cloud solution architect at Microsoft. He works with Microsoft customers developing architectures for solving business problems leveraging Microsoft Azure. Formerly, Fultz was responsible for the development and architecture of GM's car-sharing program (mavendrive.com). Contact him on Twitter: @JosephRFultz or via e-mail at [email protected].

comments powered by Disqus

Featured

  • VS Code 1.123 Adds Agent Session Sync, 1M Context Windows

    Microsoft released Visual Studio Code 1.123 on June 3, adding agent-focused features, larger model context support, integrated browser updates and a new delay for some automatic extension updates.

  • Copilot Billing Shock Hits Developers

    Developer complaints about GitHub Copilot's new usage-based billing model have centered on unexpectedly rapid AI credit consumption, and neither GitHub nor Microsoft has responded directly to the backlash, though they have previously published guidance to lessen model usage costs.

  • Hands On with GitHub Copilot App Technical Preview: Turning a Blazor Issue into a PR

    GitHub's brand-new Copilot desktop app, in technical preview, handled a small Blazor issue from planning through pull request creation, but the hands-on test also showed why developers still need to verify agent work in the running app before merging.

  • At Build 2026, Microsoft Sets Up Windows as an OS for AI Agents

    Microsoft's Build 2026 Windows developer announcements point to a broader platform strategy for agentic AI, spanning terminal workflows, local models, app-building skills, Cloud PCs and operating system-level containment.

Subscribe on YouTube