Login performance

Overview

Login performance is a critical metric in evaluating any system's efficiency and user experience. Whether conducting Continuous or Load Tests, monitoring how quickly users can access their sessions and applications is essential for optimizing system performance and user satisfaction.

Continuous Testing provides detailed session-level insights, allowing for precise analysis of metrics like total login time, display protocol connection, profile load, and synchronous GPO processing impact. This approach enables proactive identification and resolution of performance issues within individual user sessions.

In contrast, Load Testing offers a broader perspective by aggregating performance data across multiple sessions, focusing on overall average metrics to assess system scalability and robustness under peak loads. This method provides crucial insights into system performance trends and identifies potential bottlenecks that may affect user experience during periods of high demand.

This article outlines the key metrics used to assess login efficiency and explains how these metrics vary between Continuous and Load Test scenarios. By understanding these differences, teams can better interpret and improve login performance across various operational conditions.

Key metrics for Login performance

Both Continuous and Load Tests utilize the following key metrics to measure login performance:

  • Display Protocol Connection: Measures the time from when the launcher starts the session to when profile loading begins. This metric is found in Windows Event Logs.
  • Profile Load: Measured using User Profile events from the Windows Event Viewer.
  • GPO Processing: Only measures synchronous group policies. Asynchronous ones have minimal impact on user experience and are therefore not measured.
  • Total Login Time: Measures how quickly a user account can log in, load the user profile, and become fully interactive. The time is calculated from the session start at the launcher to the start of the user's shell, e.g. explorer.exe. For more detailed information, see Measuring total login time.

For GPO processing, start and end times are pulled from the registry using the following key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\S-1-5-21-1642230215-40016302-1263235327-14012\Extension-List\{00000000-0000-0000-0000-000000000000}

The SID value (S-1-5-21-1642230215-40016302-1263235327-14012) varies per session and is used to retrieve the following four values from the registry:

  • StartTimeLo
  • StartTimeHi
  • EndTimeLo
  • EndTimeHi

Combining these values provides the start and end times for group policies. Data is discarded if the GPO measurement start timestamp is before the session start time.

Login times

Why measure login time?

  • Improved user experience: Swift login times play a vital role in creating a positive user experience. In the competitive world of applications and virtual environments, a rapid and responsive login process forms the foundation for engaging user interactions.
  • Performance optimization: Measuring login time provides valuable insights into system efficiency. Identifying bottlenecks or delays enables you to make informed decisions for optimizing performance, ultimately speeding up users' access to their resources.
  • Scalability planning: Understanding login times is critical for scalability planning. As your user base expands, it becomes essential to maintain efficient login processes. Accurate measurement helps anticipate and address potential challenges that may arise due to rising demand.
  • Availability assurance: The login process typically marks users' first interaction with your system. Monitoring and optimizing login times contribute to overall system availability, mitigating the risk of user frustration due to delays or interruptions.

Common definitions

  • UserSession.LoginStartTime:
    • This is calculated in the loginenterprise container when the Launcher sends the UserSessionEvents.ConnectionStarted event right before starting the connector process.

  • UserSession.LoginEndTime:
    • This is calculated in the loginenterprise container when the Engine registers itself as started.
    • This happens right at the beginning while bootstrapping. After discovering the session and before reading logintimes.
    • This has nothing to do with the calculation of the loginsteps.

  • ProfileLoadStart and ProfileLoadEnd:
    • This is calculated by the Engine querying the WindowsEvents:

      "Event[EventData[Data[@Name='Session'] and (Data='{sessionId}')]]/System[Provider[@Name='Microsoft-Windows-User Profiles Service'] and (EventID={ProfileLoadStartEventId} or EventID={ProfileLoadEndEventId}) and Security[@UserID='{WindowsIdentityService.UserSid.Value}']]"

    • ProfileLoadStartEventId = 1
    • ProfileLoadEndEventId = 2
    • The Engine looks at the TimeCreated property of the events

  • GroupPolicyStart and GroupPolicyEnd:
    • The Engine reads the following registry key:

      "SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\{WindowsIdentityService.WindowsIdentityService.UserSid.Value}\Extension-List\{{00000000-0000-0000-0000-000000000000}}"

    • GroupPolicyStart is calculated from the StartTimeLo and StartTimeHi properties of the registry key.
    • GroupPolicyEnd is calculated from the EndTimeLo and EndTimeHi properties of the registry key.

  • LogonTimeTrackingProcessStart:
    • The Engine fetches the running processes on the machine looking for the LogonTimeTrackingProcess (different based on the platform and configured in the test). For more information, see How measuring total login time works with Login Enterprise

      LogonTimeTrackingProcessStart = process.StartTime

Login steps calculations

  • connection (session initialization)
    • ProfileLoadStart - UserSession.LoginStartTime
  • user_profile
    • ProfileLoadEnd - ProfileLoadStart
  • group_policies
    • GroupPolicyEnd - GroupPolicyStart
  • total_login_time:
    • LogonTimeTrackingProcessStart - UserSession.LoginStartTime

Measuring total login time

To achieve peak performance for your application and virtual desktop environments, it’s crucial to measure total login time. Login Enterprise assesses not only the application functionality but also the efficiency of user interactions, including the login process. The login time, measuring the duration it takes for a user to access an application or virtual desktop, is a significant performance metric influencing user satisfaction and overall system efficiency.

How it works with Login Enterprise

When a session initiates, the Engine looks for a process named 'explorer.exe'. The Engine captures the start time of this process and communicates this data to the appliance. This observation forms the foundation for the appliance to determine the total login time—the duration spanning from the moment a session is started by the Launcher until the initiation of the 'explorer.exe' process. The total login time metric is then available from one of the charts in the Test results.

Currently, the behavior for deciding what process to use to measure total login time is as follows:

  • Citrix Storefront and NetScaler Connector (published desktop/app) = wfshell or picashell
  • All other connector types = explorer

Considerations for Published Apps

In scenarios involving published apps, the presence of 'explorer.exe' in the Engine's session may not apply, as these apps operate differently. The appliance may face challenges locating 'explorer.exe' during the login process for published apps, potentially impacting the accuracy of total login time measurements.

Custom process of measuring total login time

To address the challenges posed by published apps, Login Enterprise allows you to overwrite the default process with a process of your choice. This flexibility ensures that, regardless of the intricacies of your environment, you can tailor the login time measurement to align precisely with your specific configurations and requirements.

You can customize the process of measuring total login time in one of the following ways:

The process of measuring total login time is backward compatible. That is, if you already changed the process through the internal API, you don’t have to change the setting again.

Regardless of whether the property was named 'shell-executable' or 'shellExecutable' during the new process setup, both names will be displayed in the new field after the upgrade to 5.7.

In Login Enterprise UI

The following steps are only relevant if you’ve created your Test. If you haven’t already, please do so, and then proceed to customize the process of measuring total login time as outlined below.

  1. Log in to the Login Enterprise with your credentials.
  2. In the Sidebar menu, navigate to Configuration > Manage Tests, and select the desired Test, e.g. Continuous Test.

    Frame 658.png

  3. Click on the particular Test, scroll down, and find the Test settings.

    d1fe59ca-9606-49be-994e-58c5500cd5c3.png

  4. In the Logon time tracking process, select 'Custom'. (Note that the 'Default' radio button is selected by default).
  5. In the popup window, enter the value for the new process, and save the changes. The value must be without extension. That is, for explorer.exe, the value is 'explorer'.

The default values for Citrix StoreFront and NetScaler Connector are 'wfshell' or 'picashell.' For other connector types, the default value is 'explorer'. You can customize it based on your platform, such as 'wfshell' for Citrix, 'vmware-view-usbd' for VMware, or 'rdpshell' for Microsoft RDP.


ebe732f3-84f4-4762-8b09-21c4af6d0b15.png

Cancelling the popup selects the 'Default' radio button again. Saving the popup value chooses the custom value, updating the field. If you'd like to make further changes, initiate the popup once more.

0aa02f1a-faca-4196-97c4-0850560ec71b.png


The process of customizing the measurement of total login time is the same for all types of Tests, including Load Tests and Application Tests.

In the API

For steps on accessing the API, see Accessing Public API.

Creating a GET request in the Public API

To ensure your Test is configured correctly, you might want to start with creating a GET request. To do this:

  1. In the OpenAPI Specification, scroll down and find Test.
  2. In Test, click GET /v7-preview/tests/{testId}.

    41a8b8a7-bd9a-4096-b1a1-65947959a36e.png

  3. In the top-right corner, click Try it out.
  4. In testId, paste the ID of your Test, and then Execute.

    e6938dbb-85b1-4d45-9f28-0638cf83efb4.png

Looking for the Id in the URL

In the Login Enterprise > Configuration > Manage Tests > (e.g. Continuous Test) address bar, you will see the URL. Locate a part of the URL that contains the Test Id. It often appears as a series of letters, numbers, or a combination of both. Highlight the entire Id in the URL, right-click, and select 'Copy'.

If the server responds with a 200 status code, indicating that the GET request was successful, it will return the requested information in JSON format in the response body. Copy the JSON text from the response body as you will need it when creating a PUT request.

9c4cf24d-e6a6-48e9-a087-40e73faecb25.png

Creating a PUT request in the Public API

To customize the process of measuring total login time in the Public API, you need to create a PUT request. For this:

  1. In the OpenAPI Specification > Test, click PUT /v7-preview/tests/{testId}.

    5e494ea7-db56-4292-80e7-7e681d57abb5.png

  2. In the top-right corner, click Try it out (The Request body field will open).
  3. In testId, paste the ID of your Test.
  4. In the Request body, paste the JSON text you copied from the response body in the GET request.
    In the "logonTimeTrackingProcess" property, specify the value for the new process. For example, if it’s explorer.exe, enter "explorer".
  5. Click Execute.

914348a3-1b91-4fae-999e-7928b5a37132.png

If the server responds with a 200 status code, indicating that the PUT request was successful, it will return the requested information in the response headers.

01e7ba93-f630-43a6-97dc-7b81dd03e7e9.png

When you select the ' Custom ' radio button, the new process field will appear in the Test settings.

Overall, the Login Enterprise login time measurement feature provides a nuanced understanding of user experience, allowing you to make informed decisions for optimizing performance and enhancing the efficiency of your applications and virtual desktop environments.

Continuous Testing scenario

For Continuous Testing, Login performance is measured within each session. In the Test dashboard, each environment configured displays relevant metrics. For example, this this bar indicates when 1 out of 2 measurements have crossed the configured logon threshold.

Frame 377.png

Navigating deeper into the environment allows you to see detailed information about each metric. For this, click on the Login Performance title.

Frame 380.png

The following window reveals additional insights into measurements, including detailed information, such as timestamp, duration, launcher used, remoting protocol, target host and OS, and user account.

Frame 382.png

  • Timestamp: Logging moment.
  • Duration: Logon time at logging moment.
  • Threshold: Defined threshold.
  • Launcher: Launcher used during measurement.
  • Remoting Protocol: Remoting protocol used.
  • Target Host: VM hostname generating measurement.
  • Target OS: OS version of target VM.
  • User Account: Account used for measurement.

The Continuous testing charts allow you to view measurements, providing raw data points with detailed hover information at the hour level. To view the chart, in Continuous testing > Charts > Logins, select all the metrics for Logins (Display Protocol Connection, Profile Load, GPO Processing, Total Login Time).

Frame 385.png

When you change the view to Day, Week, or Month, the charts will show aggregated data. Specifically, the data is aggregated per hour, providing a summarized view for these longer time periods.

Frame 386.png

Load Testing scenario

For the Load testing, when comparing up to 5 tests, Logon performance data is represented as a table in Load Testing results > Overview > Logon time, showing the overall average for the entire test duration. This average is calculated across all sessions in the test.

Frame 363.png

The Charts display aggregated data points per minute, showcasing average measurements across all sessions during the test period.

Frame 387.png

By leveraging insights from both Continuous and Load Test scenarios, organizations can adopt a comprehensive optimization strategy. This strategy involves continuous monitoring and iterative improvements based on session-level details from Continuous Testing and validation of overall performance stability from Load Testing. This approach ensures that login processes remain efficient, reliable, and responsive to the dynamic needs of users and business operations.

Additional resources