Bonjour Citrixiens et Citrixiennes en herbe,

Je profite d’un court intermède pour revenir sur un point qui est toujours d’actualité.

Citrix Provisioning Services (PVS)

Quand vous utilisez Citrix Provisioning Services (PVS), pensez à utiliser DisableTaskOffLoad sur vos serveurs Citrix Provisioning Services et vos Target Device. Surtout si vous n’aimez pas attendre pendant des minutes interminables que votre Target Device démarre, n’est-ce pas…

Pour ceux qui débuteraient sur cette technologie, accordez moi un peu de votre temps pour vous expliquer qu’en environnement virtuel, il est tout à fait primordial de faire du tunning de vos serveurs ou poste(s) de travail dans vos masters ou autre. Vos utilisateurs vous en remercieront davantage.

Pour vous donner une idée ou des envies d’aller à fond dans ce sujet,  je vous invite à jeter un oeil sur le script que j’ai créé pour vous, basé sur un article Amazon.

Toutes mes automatisations sont faites en PowerShell. Si vous avez des questions n’hésitez pas, je vous répondrais dans les plus brefs délais.

Copiez-collez le script qui suit dans un fichier .ps1. Pour ma part, je viens juste de le tester sur un Windows 2012R2 en mode Citrix Provisioning Services 7.6.

N’oubliez pas de mettre aussi DisableTaskOffload sur votre serveur Citrix Provisioning Services, à minima.

Le script PowerShell

<#
script powershell : optimisation réseau Citrix Provisionning Services
auteur : patrice jacques-gustave
société : immajg-consult
date : 11 12 2015
Description : script à exécuter coté Citrix PVS Target Device
source : https://aws.amazon.com/fr/premiumsupport/knowledge-center/network-performance-windows/
#>

# TCP Chimney Offloading
<#
TCP chimney offloading is a networking technology that
allows the system to transfer network-related workload
from the system’s processor to a network adapter.
#>
$time = date
write-host “$time : TCP Chimney Offloading désactivation”
netsh int tcp set global chimney=disabled
sleep -Seconds 1
netsh int tcp show global

# Receive-Side Scaling (RSS)
<#
RSS is designed to spread receive-side or inbound network
load across multiple processors to take advantage of
multi-core and/or multi processor hardware environments.
#>
$time = date
write-host “$time : Receive-Side Scaling (RSS) désactivation”
netsh int tcp set global rss=disabled
sleep -Seconds 1
netsh int tcp show global

# NetDMA
<#
NetDMA, or Network Direct Memory Access, allows network
traffic to be moved into memory. When network traffic is
received by the network adapter, it uses DMA to move the
information directly into memory, alleviating the load on
the processor.
#>
$time = date
write-host “$time : NetDMA désactivation”
Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -name EnableTCPA -ErrorAction SilentlyContinue
New-ItemProperty “HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\” -Name EnableTCPA -Value “0” -PropertyType DWord -ErrorAction SilentlyContinue

# Network Task Offload
<#
Network task offload parameters are known to cause
network performance issues in a Xen virtualization
environment, and network task offload should be
disabled to ensure optimal performance.
#>
$time = date
write-host “$time : Network Task Offload désactivation”
Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters –name DisableTaskOffload
New-ItemProperty “HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\” -Name DisableTaskOffload -Value 1 -PropertyType DWord -ErrorAction SilentlyContinue

# Receive Window Auto-Tuning
<#
Auto-tuning is related to TCP window scaling in
Windows Server. Some network devices do not support
TCP window scaling. For example, this feature is not
supported by most Cisco, Sonicwall, and Check Point
firewalls as well as certain NG R55 and NetGear
routers, among others. Disabling receive window
auto-tuning may improve network performance.
#>
$time = date
write-host “$time : Receive Window Auto-Tuning désactivation”
netsh int tcp set global autotuninglevel=disabled
netsh int tcp show global

# IPV6
<#
Consider disabling IPv6 if it is not required for your
environment.

IPv6 can place unnecessary load on the Windows Server
networking stack, which may degrade performance. Disabling
IPv6 can improve network performance.

Note: Performing this change will affect IPv6 on all network
interfaces on the system.
#>
$time = date
write-host “$time : IPV6 désactivation”
Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters –name DisableComponents
New-ItemProperty “HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters” -Name DisableComponents -Value 17 -PropertyType DWord -ErrorAction SilentlyContinue

$time = date
netstat -es
write-host “$time : Fin de section”

Bonne continuation,
Patrice Jacques-gustave

4 thoughts on “Troubleshooting – Citrix PVS 7.6 optimisation

    1. Salut Jonathan, au moment où j’ai écris l’article oui, en effet, cela c’est fait ressentir, d’autant plus que nous étions dans une infra vraiment pas terrible en terme de capacité. On a bien bidouillé 😉

Laisser un commentaire