0
Efficient interdomain transmission of 
performance data 
John Else 
john.else@citrix.com
XAPI project 
XenAPI 
XAPI 
XCP/XenServer toolstack
XAPI project 
High level OO API around Xen 
HTTP interface 
Collects performance data from dom0/guests
Performance data 
Numeric 
Changes regularly - requires sampling 
If we sometimes lose a sample - that's OK
Interdomain performance data 
Currently one metric per domU: free memory 
Transmitted via xenstore 
Even this has been eno...
Improvements so far 
Data collection caused laggy API response from XAPI 
-> XAPI disaggregation: rrdd, networkd and xenop...
Improvements so far 
High xenstore load reduced bootstorm performance 
-> Watch xenstore instead of polling
What next? 
Take xenstore out of the data path 
Create a generic API for: 
Driver domain monitoring 
Application monitorin...
rrdd plugins - dom0
rrdd plugins - interdomain
rrdd plugins - protocol v1 
header 10 bytes 
data length (ASCII) 8 bytes 
md5sum (ASCII) 32 bytes 
json data inc. timestam...
rrdd plugins - protocol v1 
DATASOURCES <- header 
00000a79 <- data length 
6cc0472a94896d245dcea04a37c26474 <- data md5su...
rrdd plugins - protocol v1 
DATASOURCES <- header 
00000a79 <- data length 
6cc0472a94896d245dcea04a37c26474 <- data md5su...
rrdd plugins - protocol v2 
Separate data from metadata 
Pack as much as possible as binary
rrdd plugins - protocol v2 
header 10 bytes 
data crc32 4 bytes 
metadata crc32 4 bytes 
datasource count (int32) 4 bytes ...
rrdd plugins - protocol v2 
header 10 bytes 
data crc32 4 bytes 
metadata crc32 4 bytes 
datasource count (int32) 4 bytes ...
rrdd plugins - protocol v2 
DATASOURCES <- header 
.... <- data CRC 
.... <- metadata CRC 
.... <- datasource count 
........
rrdd plugins - protocol v2 
DATASOURCES <- header 
.... <- data CRC 
.... <- metadata CRC 
.... <- datasource count 
........
rrdd plugins - protocol v2 
V2 protocol gives about a 10x speedup in the "usual" case, i.e. set of 
exported datasources d...
Demo
Further info 
Protocol: 
Frontend: 
Slides: 
IRC: freenode #xen-api 
Email: john.else@citrix.com 
github.com/xapi-project/...
Upcoming SlideShare
Loading in...5
×

XPDS14: Efficient Interdomain Transmission of Performance Data - John Else, Citrix

623

Published on

As users demand greater scalability from Citrix XenServer, the transmission of performance data from guests via xenstore is increasingly becoming a bottleneck. Future use of service domains is likely to make this problem worse. A simple, efficient way of transmitting time-varying datasets between userspace components in different domains is required. This talk will propose a lock-free mechanism to allow interdomain reporting of performance data without relying on continuous xenstore usage, and describe how it fits into the XAPI toolstack.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
623
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "XPDS14: Efficient Interdomain Transmission of Performance Data - John Else, Citrix"

  1. 1. Efficient interdomain transmission of performance data John Else john.else@citrix.com
  2. 2. XAPI project XenAPI XAPI XCP/XenServer toolstack
  3. 3. XAPI project High level OO API around Xen HTTP interface Collects performance data from dom0/guests
  4. 4. Performance data Numeric Changes regularly - requires sampling If we sometimes lose a sample - that's OK
  5. 5. Interdomain performance data Currently one metric per domU: free memory Transmitted via xenstore Even this has been enough to cause performance problems!
  6. 6. Improvements so far Data collection caused laggy API response from XAPI -> XAPI disaggregation: rrdd, networkd and xenopsd
  7. 7. Improvements so far High xenstore load reduced bootstorm performance -> Watch xenstore instead of polling
  8. 8. What next? Take xenstore out of the data path Create a generic API for: Driver domain monitoring Application monitoring ...
  9. 9. rrdd plugins - dom0
  10. 10. rrdd plugins - interdomain
  11. 11. rrdd plugins - protocol v1 header 10 bytes data length (ASCII) 8 bytes md5sum (ASCII) 32 bytes json data inc. timestamp ? bytes
  12. 12. rrdd plugins - protocol v1 DATASOURCES <- header 00000a79 <- data length 6cc0472a94896d245dcea04a37c26474 <- data md5sum { "timestamp": 1407715758, "datasources": { "io_throughput_read_9d0e83ec": { "description": "Data read from the SR, in MiB/s", "owner": "host", "value": "0.55", "value_type": "float", "type": "absolute_to_rate", "units": "MiB/s", "min": "0.00", "max": "inf" } } }
  13. 13. rrdd plugins - protocol v1 DATASOURCES <- header 00000a79 <- data length 6cc0472a94896d245dcea04a37c26474 <- data md5sum { "timestamp": 1407715758, "datasources": { "io_throughput_read_9d0e83ec": { "description": "Data read from the SR, in MiB/s", "owner": "host", "value": "0.55", "value_type": "float", "type": "absolute_to_rate", "units": "MiB/s", "min": "0.00", "max": "inf" } } }
  14. 14. rrdd plugins - protocol v2 Separate data from metadata Pack as much as possible as binary
  15. 15. rrdd plugins - protocol v2 header 10 bytes data crc32 4 bytes metadata crc32 4 bytes datasource count (int32) 4 bytes timestamp (int64) 8 bytes datasource values n * 8 bytes metadata length (int32) 4 bytes json metadata ? bytes
  16. 16. rrdd plugins - protocol v2 header 10 bytes data crc32 4 bytes metadata crc32 4 bytes datasource count (int32) 4 bytes timestamp (int64) 8 bytes datasource values n * 8 bytes metadata length (int32) 4 bytes json metadata ? bytes
  17. 17. rrdd plugins - protocol v2 DATASOURCES <- header .... <- data CRC .... <- metadata CRC .... <- datasource count ........ <- timestamp ........ <- datasource value .... <- metadata length { "datasources": { "io_throughput_read_9d0e83ec": { "description": "Data read from the SR, in MiB/s", "owner": "host", "value_type": "float", "type": "absolute_to_rate", "units": "MiB/s", "min": "0.00", "max": "inf" } } }
  18. 18. rrdd plugins - protocol v2 DATASOURCES <- header .... <- data CRC .... <- metadata CRC .... <- datasource count ........ <- timestamp ........ <- datasource value .... <- metadata length { "datasources": { "io_throughput_read_9d0e83ec": { "description": "Data read from the SR, in MiB/s", "owner": "host", "value_type": "float", "type": "absolute_to_rate", "units": "MiB/s", "min": "0.00", "max": "inf" } } }
  19. 19. rrdd plugins - protocol v2 V2 protocol gives about a 10x speedup in the "usual" case, i.e. set of exported datasources doesn't change.
  20. 20. Demo
  21. 21. Further info Protocol: Frontend: Slides: IRC: freenode #xen-api Email: john.else@citrix.com github.com/xapi-project/rrd-transport github.com/xapi-project/ocaml-rrdd-plugin johnelse.github.io/xen-summit-2014
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×