acquistare viagra cialis prijs generische viagra levitra en ligne commande cialis viagra quanto costa posologia viagra achat levitra commande viagra cialis sur ordonnance levitra prijs cialis france viagra prezzo viagra vendita on line pastilla viagra levitra pharmacie zithromax prix cialis kauf viagra preis viagra alternativo vendo viagra levitra generico comprar viagra generico levitra italia compra levitra cialis prix sildenafil generico curare impotenza viagra versand cialis sur internet levitra precio vendo cialis acheter du levitra acquistare cialis viagra suisse vardenafil generico cialis indien kamagra vente vardenafil bestellen farmaci impotenza cialis rezeptfrei acheter cialis france vendo levitra accutane generique vendo viagra cialis pharmacie acheter kamagra generique cialis acheter cialis sans ordonnance achat kamagra cialis generico 10 mg sildenafil venta libre viagra kosten cialis en ligne venta de levitra compro cialis levitra te koop achat cialis 20mg viagra 50 mg vente cialis kamagra te koop levitra ohne rezept dysfonction erectile viagra europe comprar vardenafil viagra vendita italia pharmacie en ligne acheter zyban impotenza rimedi pastilla levitra koop viagra citrato di sildenafil viagra senza ricetta levitra generico viagra 100 mg viagra europe acheter du cialis kamagra en france achat de levitra compro sildenafil kamagra pas cher medicament impuissance cialis precio acheter du kamagra cialis generique acheter finasteride sildenafil rezeptfrei acheter clomid en france propecia generique comprar viagra em portugal viagra ordonnance generique du cialis disfunzione erettile rimedi remede impuissance cialis generique acheter vendita levitra commander cialis tadalafil venta trouver du levitra impuissance homme cialis generico kamagra rezeptfrei costo levitra acheter cialis 20mg probleme erection costo viagra achete cialis achat de viagra viagra donna comprar sildenafil receta viagra cialis bon prix prix du cialis traitement impuissance sildenafil moins cher procurer du cialis levitra sans ordonnance compro levitra levitra prescrizione levitra ordonnance viagra acquisto online levitra france cialis livraison rapide acheter cialis levitra effet secondaire acheter prozac internet apotheke cialis effetti collaterali viagra sans prescription cialis receta comprar cialis generico sildenafil precio cialis ricetta medica
Home > Uncategorized > XenApp cmdlets VS MFCOM – Performance Test

XenApp cmdlets VS MFCOM – Performance Test

I have been using MFCOM since I began with MetaFrameXP and have always been a huge fan of the SDKs.  I loved the fact that Citrix created an API that was pretty simple to learn, for the most part ‘made sense’ and gave you enough power to actually be functional.

When I first heard about the cmdlets at Synergy 2008 I was a bit confused on how useful they would be and if they would offer the power that MFCOM does.  I do a lot of coding in C# and I leverage MFCOM there all of the time.  Not knowing enough (and still don’t) about Powershell I was not quite sure how well the cmdlets would work.

I had been part of the beta for the cmdlets but wanted to wait until I had the finalized version to run a few benchmarks between it and MFCOM.  MFCOM has always had a few performance issues since it is COM based.  I won’t go into the details here except to say that whenever performing actions on large groups of data MFCOM could take forever.  For example trying to loop through a large number of sessions (8,000+) would take a while if you were pulling back all of the session properties. This is due to MFCOM making a few different calls to get all of the info.  While I don’t have the ability to test session enumeration benchmarks in my lab here at home I can benchmark gathering application properties on large groups of apps.

I used 3 different scripts to perform the tests.

1. MFCOM with VbScript

2. MFCOM within Powershell to rule out VBScript as a performance factor

3. XenApp cmdlets within Powershell

  • I used the XAcmdlet to create applications in increments of 100.  I did this and ran the scripts to gather data.  I then went to 200,300,400,500.

$i = 1; do {New-XAApplication Notepad$i -ApplicationType ServerInstalled -CommandLine notepad.exe -ServerNames Server1 -Accounts Domain/UserName; $i +=1} while ($i -le 100)

  • All of the tests were ran locally on a XenApp 4.5 server that is also the Data Collector.
  • This server is a VM running on XenServer 5.0.  The hardware is not server class.
  • Each script was ran 3 times to get an average.
  • I used Get-XAApplicationReport as it actually pulls back all of the app properties.  This is comparable to the LoadData function in MFCOM (From what I can tell anyway).
  • I had originally been exporting the data to a csv but this added significant amounts of time for each test so I scrapped it and just went with a LoadData for MFCOM (this gets all properties anyway).  For the cmdlet test to avoid having the output dumped to the console (which adds time to the script execution) I assign it to an object.

And now for the results:

mfcomvsxacmdlet-results

The results shocked me so much I ran through a bunch of random tests again.  Every single time MFCOM via VBScript came out ahead by a few seconds.  I am sure on a more powerful machine the numbers would be lower in general but for the most part they stay pretty consistant. I truly expected the cmdlets to blow MFCOM out of the water because from what I can tell they communicate directly with unmanaged IMA calls via the managed .net wrapper.  While MFCOM via VBScript seems to come out ahead in this specific performance test the XACmdlets are still far and away easier to use.

I may perform these tests again with Pwershell V2 so I can test WinRM vs COM.

Please let me know if you think I’ve got something completely wrong here.  I would also like to see numbers from others running these scripts and would truly like to here from the XA cmdlet developers to see what their internal tests (performance wise) show.

No TweetBacks yet. (Be the first to Tweet this post)

Uncategorized

  1. Felipe Leon
    June 3rd, 2009 at 07:22 | #1

    I think to make the comparison a bit more fair, you would have to output all the properties from the mfcom objects.
    Also, instead of Get-XAApplicationReport, try using Get-XAApplication, which does not have to resolve the accounts, server names, and pull all the icon data for every app.
    But still, this release is a CTP and it has not been optimized. Even thought it connects to the backend directly, the interoperability with unmanaged code provides a lot of opportunities for optimization.
    Thanks.

  2. Nick Holmquist
    June 3rd, 2009 at 15:38 | #2

    LoadData() does just that though, does it not? I thought a LoadData call in MFCOM pulls back servers and accounts and enumerating through them does not make a separate call to the Server/Account objects?

    I agree it isn’t a fair comparison since it is a CTP and I am looking forward to what you guys can do to improve it!

  3. Felipe Leon
    June 4th, 2009 at 15:04 | #3

    LoadData loads the app specific data (according to the app type), not its associations, which are more expensive to read (accounts, servers, etc).
    This is why I suggested to compare it to Get-XAApplication.

  4. Nick Holmquist
    June 4th, 2009 at 20:21 | #4

    I honestly thought that when a LoadData was performed it went ahead and pulled the servers and accounts (along with all of the other data). I will run some more tests to get a better comparison.
    Thanks for the info!

  1. July 1st, 2009 at 13:43 | #1
  2. July 3rd, 2009 at 05:06 | #2

google