sFlow for desktop virtualization

131 views
Skip to first unread message

Peter Phaal

unread,
Feb 6, 2012, 1:56:34 AM2/6/12
to sf...@googlegroups.com
We have been experimenting with using sFlow to export desktop
virtualization quality of service metrics:

http://blog.sflow.com/2012/02/desktop-virtualization.html

Useful metrics are easily obtained for the PCoIP protocol since they
are exposed through the Windows WMI interface:

http://pubs.vmware.com/view-50/index.jsp?topic=/com.vmware.view.integration.doc/view_integration_pcoipstats.8.6.html

The following sFlow structure is based on the PCoIP WMI counters:

struct vdi_stats {
unsigned int sessions_current; /* number of current sessions */
unsigned int sessions_total; /* total sessions started */
unsigned int sessions_duration; /* cumulative session time (in seconds)
across all sessions, such that average
session duration = sessions_duration
/ sessions_total */
unsigned int rx_bytes; /* total bytes received */
unsigned int tx_bytes; /* total bytes sent */
unsigned int rx_packets; /* total packet received */
unsigned int tx_packets; /* total packets sent */
unsigned int rx_packets_lost; /* total received packets lost */
unsigned int tx_packets_lost; /* total sent packets lost */
unsigned int rtt_min_ms; /* minimum round trip latency with client
across all current sessions
measured in milliseconds */
unsigned int rtt_max_ms; /* maximum round trip latency with client
across all current sessions
measured in millisecond */
unsigned int rtt_avg_ms; /* average round trip latency with client
across all current sessions
measured in milliseconds */
unsigned int audio_rx_bytes; /* total bytes of audio data received */
unsigned int audio_tx_bytes; /* total bytes of audio data sent */
unsigned int audio_tx_limit; /* administrative limit on audio transmission
bandwidth (in bits per second) */
unsigned int img_rx_bytes; /* total bytes of imaging data recieved */
unsigned int img_tx_bytes; /* total bytes of imaging data sent */
unsigned int img_frames; /* total image frames encoded */
unsigned int img_qual_min; /* minimum image encoding quality across
current sessions, on a scale of 0 to 100 */
unsigned int img_qual_max; /* best image encoding quality across
current sessions, on a scale of 0 to 100 */
unsigned int img_qual_avg; /* average image encoding quality across
current sessions, on a scale of 0 to 100 */
unsigned int usb_rx_bytes; /* total bytes of usb data received */
unsigned int usb_tx_bytes; /* total bytes of usb data sent */
}

It would be useful to generalize the metrics to cover the full range
of desktop virtualization protocols.

Peter

rick jones

unread,
Feb 6, 2012, 10:53:33 AM2/6/12
to sf...@googlegroups.com

On Feb 5, 2012, at 10:56 PM, Peter Phaal wrote:

> We have been experimenting with using sFlow to export desktop
> virtualization quality of service metrics:
>
> http://blog.sflow.com/2012/02/desktop-virtualization.html
>
> Useful metrics are easily obtained for the PCoIP protocol since they
> are exposed through the Windows WMI interface:
>
> http://pubs.vmware.com/view-50/index.jsp?topic=/com.vmware.view.integration.doc/view_integration_pcoipstats.8.6.html

It seems odd that they are dividing bits by 1024 to arrive at kilobits. I think this may be one of the first times I've encountered someone promoting power-of-two bits per second.

> The following sFlow structure is based on the PCoIP WMI counters:
>
> struct vdi_stats {
> unsigned int sessions_current; /* number of current sessions */
> unsigned int sessions_total; /* total sessions started */
> unsigned int sessions_duration; /* cumulative session time (in seconds)
> across all sessions, such that average
> session duration = sessions_duration
> / sessions_total */
> unsigned int rx_bytes; /* total bytes received */
> unsigned int tx_bytes; /* total bytes sent */

Rare is the 32 bit byte counter that doesn't wrap too soon?

rick jones

Peter Phaal

unread,
Feb 6, 2012, 1:52:00 PM2/6/12
to sf...@googlegroups.com
On Feb 6, 2012, at 7:53 AM, rick jones wrote:


On Feb 5, 2012, at 10:56 PM, Peter Phaal wrote:

We have been experimenting with using sFlow to export desktop
virtualization quality of service metrics:

http://blog.sflow.com/2012/02/desktop-virtualization.html

Useful metrics are easily obtained for the PCoIP protocol since they
are exposed through the Windows WMI interface:

http://pubs.vmware.com/view-50/index.jsp?topic=/com.vmware.view.integration.doc/view_integration_pcoipstats.8.6.html

It seems odd that they are dividing bits by 1024 to arrive at kilobits.  I think this may be one of the first times I've encountered someone promoting power-of-two bits per second.

There does seem to be a real mixture of units when you get into system and storage management. Defining counters in bytes in the sFlow structures avoids any confusion at the receiving end.


The following sFlow structure is based on the PCoIP WMI counters:

struct vdi_stats {
unsigned int sessions_current;  /* number of current sessions */
unsigned int sessions_total;    /* total sessions started */
unsigned int sessions_duration; /* cumulative session time (in seconds)
                                   across all sessions, such that average
                                   session duration = sessions_duration
                                                      / sessions_total */
unsigned int rx_bytes;          /* total bytes received */
unsigned int tx_bytes;          /* total bytes sent */

Rare is the 32 bit byte counter that doesn't wrap too soon?

Good point - the rx_bytes and tx_bytes should probably be 64 counters.

I found some documentation on Citrix ICA Session Counters and they have very similar metrics:


For QoS measurements, Session Compression ratio looks like an analog for img_quality and the Latency metrics look like a close match for the rtt gauges. 

If anyone has references for metrics maintained by additional desktop virtualization protocols (e.g. SPICE, RDP/RemoteFX, etc)., please contribute links.

Peter


Peter Phaal

unread,
Jul 3, 2012, 1:55:38 PM7/3/12
to sf...@googlegroups.com
I ran up a copy of the Windows Server 2012 release candidate and the following Perfmon metrics are available:

RemoteFX Network

Base TCP RTT
Base UDP RTT
Current TCP Bandwidth
Current TCP RTT
Current UDP Bandwidth
Current UDP RTT
FEC Rate
Loss Rate
Retransmission Rate
Sent Rate P0
Sent Rate P1
Sent Rate P2
Sent Rate P3
TCP Received Rate
TCP Sent Rate
Total Received Rate
Total Sent Rate
UDP Packets Received/sec
UDP Packets Sent/sec
UDP Received Rate
UDP Sent Rate

Remote FX Graphics

Average Encoding Time
Frame Quality
Frames Skipped/Second - Insufficient Client Resources
Frames Skipped/Second - Insufficient Network Resources
Frames Skipped/Second - Insufficient Server Resources
Graphics Compression ratio
Input Frames/Second
Output Frames/Second
Source Frames/Second

Round trip times look like they are available from all the major remote desktop protocols (PCoIP, ICA and RDP). RTT should be a good indication of the responsiveness of the remote desktop experience and would be a good candidate for inclusion in a standard set of metrics. The app_workers structure from the draft sFlow Application Structures could be used to report the number of active sessions (http://sflow.org/draft_sflow_application_2.txt). Bandwidth (byte counters) also look to be available across the different protocols.
Reply all
Reply to author
Forward
0 new messages