PVS Servers Test

This test auto-discovers the Provisioning servers in the Provisioning server farm that is being monitored, and reports the following for each server in that farm.

  • The server status
  • Whether target devices are connected to the server or not
  • Whether/not the server has been configured with the right amount of ports and threads per port to handle streaming requests from targets

Target of the test : Citrix Provisioning server

Agent deploying the test : An internal agent

Outputs of the test : By default, the test reports one set of results for each server in the Citrix Provisional server farm being monitored

Configurable parameters for the test
  1. TEST PERIOD – How often should the test be executed
  2. Host – The host for which the test is to be configured
  3. Port – Refers to the port used by the Citrix Provisioning server. By default, this is 54321.
  4. mcli path – This test executes commands using the Management Command Line Interface (MCLI) of the Provisioning server to collect the required metrics. To enable the test to execute the commands, the eG agent, by default, auto-discovers the full path MCLI.exe on the target Provisioning server. This is why, the mcli path is set to none by default. If, for some reason, the eG agent is unable to auto-discover the mcli path, then you will have to manually specify the path here using the following pointers:

    • Typically, in a 32-bit Windows system, the MCLI.exe will be available in the following location by default: <System_Root>\Program Files\Citrix\Provisioning Services Console
    • In a 64-bit Windows system on the other hand, the MCLI.exe will be available in the following location by default: <System_Root>\Program Files (x86)\Citrix\Provisioning Services Console
  5. domain name, domain user and domain password – To report farm-related metrics, this test should run using the credentials of a user who fulfills the following requirements:

    • Should belong to the Security group with 'Farm Administrator' access.
    • Should be assigned the Allow log on locally security privilege on the Citrix Provisioning Server host.

    The steps for assigning such privileges to a user are detailed in the Pre-requisites for monitoring the Citrix Provisioning Server topic.

    Once you assigned the aforesaid privileges to the user, then configure this test with the domain name, domain user, and domain password of the same user.

  6. local host only - By default, this flag is set to Yes. This implies that, by default, the test reports metrics for the target server that is being monitored. Setting the flag to No ensures that the test auto-discovers all the servers that are part of the PVS farm, and reports metrics for each server in the PVS farm.

  7. detailed diagnosis - To make diagnosis more efficient and accurate, the eG Enterprise suite embeds an optional detailed diagnostic capability. With this capability, the eG agents can be configured to run detailed, more elaborate tests as and when specific problems are detected. To enable the detailed diagnosis capability of this test for a particular server, choose the On option. To disable the capability, click on the Off option.

    The option to selectively enable/disable the detailed diagnosis capability will be available only if the following conditions are fulfilled:

    • The eG manager license should allow the detailed diagnosis capability;
    • Both the normal and abnormal frequencies configured for the detailed diagnosis measures should not be 0.
Measurements made by the test
Measurement Description Measurement Unit Interpretation

Server status:

Indicates the current status of this server.

 

This measure reports the value Active if the Provisioning server is currently available for providing Provisioning services. If the server is not available, then this measure will report the value Inactive.

The numeric values that correspond to the states mentioned above are as follows:

Numeric Value Measure Value
0

Otherwise

1

Active

2

Unknown

Note:

By default, this measure reports the values Measure Values listed in the table above to indicate the status of a Provisioning server. The graph of this measure however, represents the status of a server using the numeric equivalents only - 0 - 2.

Total target devices:

Indicates the number of target devices that are currently connected to this server.

Number

Use the detailed diagnosis of this measure to know which target devices are connected to the server. The device information provided by the detailed diagnosis include the name of the target device, the vDisk associated with the device, the IP address of the server to which the device is connected, the port at which the server listens, and the number of retries.

Threads per port Vs Logical processors:

Indicates whether this server is configured in optimal or sub-optimal manner.

Number

On a PVS server, the Threads Per Port configuration governs the quality of communication between the Stream service and target devices. This setting indicates the number of threads in the thread pool that service UDP packets received on a given UDP port. Larger number of threads allow more target device requests to be processed simultaneously, but it consumes more system resources. If there are more threads, but less system resources, request processing is bound to suffer, as the excess threads will simply block waiting for I/O. This is why, the optimal configuration is to have more cores and less threads - i.e., the number of threads per port should be lesser than the number of cores. A sub-optimal configuration would be to have less cores and more threads per port.

To quickly indicate to administrators whether a threads per port configuration is optimal / not, this measure reports the following values:

  • Optimal Configuration,if the number of cores is greater than the number of threads per port.
  • Sub-optimal Configuration, if the cores on the server is lesser than the threads per port.

The numeric values that correspond to these measure values are as follows:

Measure value Numeric Value

Optimal Configuration

1

Sub-optimal Configuration

2

By bringing a sub-optimal configuration to the immediate attention of administrators, this measure prompts them to quickly fine-tune the Threads Per Port setting, so that potential processing bottlenecks can be eliminated.

Note:

By default, this measure reports the Measure Values listed in the table above to indicate the threads per port configuration of a Provisioning server. The graph of this measure however, represents the same using the numeric equivalents only.

Active target device connections:

Indicates the number of streaming requests from target devices currently serviced by this server.

Number

This measure serves as a good indicator of the current workload of the Citrix PVS server.

Threads per port:

Indicates the number of threads in the thread pool that this server should use to service UDP packets received on a given UDP port.

Number

The value of these two measures are in fact server configurations, which if not set correctly, can adversely impact the performance of the PVS server.

The Ports measure for instance denotes the number of ports in the Port Range set for the server. The Port Range is nothing but a range of ports used by the Stream Service for target device communications. By default, 20 ports are configured for target device communications.

You can also configure the number of threads that each of the configured ports can use to service requests. This is configured using the Threads per port server setting and the same is reported by the Threads per port measure. Larger numbers of threads allow more target device requests to be processed simultaneously, but it consumes more system resources.

Together, the two settings discussed above help compute the number of concurrent requests that the PVS server can service. By default, this will be 160 concurrent requests (20 ports * 8 threads per port = 160 requests).

In an optimal scenario, you should configure a ports / threads combination that equals the amount of active target devices. So in short, for best performance,

 “# of ports” x “# of threads/port” = “max clients”.

Also, make sure that your Threads per port setting is not greater than the number of cores available on the PVS server.

Ports:

Indicates the difference between last port and first port in the port range configured for the Provisioning server.

Number

Maximum target device connections:

Indicates the maximum number of target device connections this server can handle.

Number

This measure indicates the maximum number of concurrent requests that the PVS server can handle.

This is expressed as a product of the value of the Ports measure and that of the Threads per port measure. For instance, if the Ports measure reports the value 20, and Threads per port is 8, then this measure will report the value 160.

Percentage of active device connections:

Indicates what percentage of the Maximum target device connections setting is currently utilized by this server.

Percent

A value close to 100% indicates that the server is currently operating at peak capacity. If the value of this measure crosses 100%, you may end up in a situation where the streaming service cannot process incoming requests right away, as all ports and threads are used by other targets.

In this case the rejected target will continue to work without any issue, but you will see a higher read latency for that target as the target has to resend the request and the performance will suffer.

In an optimal scenario, you should configure a ports / threads combination that equals the amount of active target devices. So in short, for best performance,

 “# of ports” x “# of threads/port” = “max clients”.

Also, make sure that your Threads per port setting is not greater than the number of cores available on the PVS server.

Remaining target devices connections:

Indicates how many more requests this server can handle.

Number

The value of this measure is calculated using the following formula:

Maximum target device connections – [(Connections * Maximum target device connections)/100]

For example, if the Maximum target device connections measure reports the value 160 and the Target device connections measure reports the value 20%, then the value of this measure will be:

160 – (20/100 * 160) = 128

Ideally, the value of this measure should be high. A low value or a negative value for this measure implies that all/most of the threads and ports of the server are already in use. Subsequent streaming requests will hence not be serviced right away by the port. This will increase the read latency of the target and cause performance to suffer. You may hence want to allocate more threads and ports to the server using the Port range and Threads per port server properties.