<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andrew Morgan &#187; SBC</title>
	<atom:link href="http://andrewmorgan.ie/tag/sbc/feed/" rel="self" type="application/rss+xml" />
	<link>http://andrewmorgan.ie</link>
	<description>Grumpy ramblings</description>
	<lastBuildDate>Fri, 30 Jun 2017 09:24:25 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>ThinIO facts and figures, Part 4: Storage design and dangerous assumptions.   </title>
		<link>http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-4-storage-design-and-dangerous-assumptions/</link>
		<comments>http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-4-storage-design-and-dangerous-assumptions/#comments</comments>
		<pubDate>Thu, 30 Oct 2014 20:53:13 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Remote Desktop Services (RDS)]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[ThinIO]]></category>
		<category><![CDATA[ThinScale]]></category>
		<category><![CDATA[VDI in a Box]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[VMware View]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[End User Computing]]></category>
		<category><![CDATA[IOPS]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[VMware Horizon]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3222</guid>
		<description><![CDATA[Welcome back to this blog series discussing our new product ThinIO. Please find the below three earlier articles in this series: ThinIO facts and figures, Part 1: VDI and Ram caching. ThinIO facts and figures, Part 2: The Bootstorm chestnut. ThinIO facts and figures, Part 3: RDS and Ram caching. In the final blog post in this series, we’re going to discuss storage design and a frequent problem face when sizing storage. Lets get right into it: “Designing for average, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" src="http://andrewmorgan.ie/wp-content/uploads/2014/04/logo.png" alt="" width="216" height="41" />Welcome back to this blog series discussing our new product ThinIO. Please find the below three earlier articles in this series:</p>
<ul>
<li><a href="http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-1-vdi-and-ram-caching/">ThinIO facts and figures, Part 1: VDI and Ram caching.</a></li>
<li><a href="http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-2-the-bootstorm-chestnut/">ThinIO facts and figures, Part 2: The Bootstorm chestnut.</a></li>
<li><a href="http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-3-rds-and-ram-caching/">ThinIO facts and figures, Part 3: RDS and Ram caching.</a></li>
</ul>
<p>In the final blog post in this series, we’re going to discuss storage design and a frequent problem face when sizing storage. Lets get right into it:</p>
<p><span id="more-3222"></span></p>
<h3><strong>“Designing for average, is designing for failure”</strong></h3>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0011.png"><img class="aligncenter size-large wp-image-3223" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0011-1024x626.png" alt="image001" width="625" height="382" /></a></p>
<p style="text-align: center;"><em>Peak IOPS:1015, Average IOPS: 78</em></p>
<p>A frequent mistake I see customers and consultants alike make is taking an average of a sizing requirement and using that as a baseline for sizing environments.</p>
<p>Looking at the figures produced from our internal load tests, we saw just an average of 78 IOPS required on write from a vanilla server without ThinIO to provide storage from this XenApp server.</p>
<p>Now frequently, people will take a figure like that, throw in 25% for growth and bob’s your uncle, ‘order the hardware Mr SAN man’. When I have questioned them about that assumption, they’ll often respond “oh it will be a bit slow if theres contention but it’ll even itself out”.</p>
<p><strong>Right? Wrong. </strong></p>
<p><strong>Things don’t go slow when they are over subscribed, they stop.</strong></p>
<p>Don’t take my word for it! Lets do some simple theoretical math:<img class="alignright  wp-image-3227" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/calculator-150x150.png" alt="calculator" width="98" height="98" /></p>
<p>If you take a storage device and allocate 100 IOPS to this machine, what’s going to happen when a peak like 1000 IOPS is requested? <strong>A lot of queuing.</strong><strong> </strong></p>
<p>In theory, keeping to the 100 IOPS figure, that 1 second burst IO is now taking over 10 seconds to satisfy (1000 / 10).</p>
<p>But it gets worse, all subsequent IO that is requested after that spike occurred is going to also be haulted waiting for this task to occur.</p>
<p>Assuming you’re now mid spike and 10 seconds later the request is finished&#8230; taking your average figure, you now have 10 seconds worth of 100 IO’s per second potentially queued up behind…</p>
<p>Low and behold another login occurs and? <strong>STOP.</strong> Storage timeouts, twirly whirlies, application crashes, hour glasses and the good old <strong>“logins are slow”.</strong></p>
<h2><strong>Oh ok, So how do I size to accommodate this?</strong><strong> </strong></h2>
<p>Well you’re between a rock and a hard place aren’t you. You can’t tell users when to login, the price tag of a SAN sized for peak activity + 20% is going to cost you more than your entire desktop estate. And as you can see, it’s never safe to assume it will run slow.<strong> </strong></p>
<h3><strong>Buying into shared storage is a tricky business</strong><strong> <img class="alignright  wp-image-3228" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/119460-117532-150x150.jpg" alt="119460-117532" width="115" height="115" /></strong></h3>
<p>Storage is expensive. Very expensive. It always annoys me when you hear vendors in this space refering to themselves as ‘reassuringly expensive’. To me this directly translates to ‘We can charge what we want, so we will and you can be reassured we feel the price tag is worth it.’</p>
<p>Storage was never written with desktop workloads in mind, it was written for ‘steady state’ server workloads and was in the progress of going the way of the ‘dodo’ (extinct) up until that first release of vMotion requiring shared storage, which some say was the saving of the market.</p>
<p>Many vendors are going with software or hardware intelligent tiering. This is a great feature, but the real question to ask is how frequently data is moved from the hot tier to lower tier? Press your vendor on this as they more than likely wont know! Microsoft storage spaces is a prime example of this with a really poor optimisation process of just once a day!</p>
<p>Then ask yourself what happens when a base image update occurs and changes the disk layout of the base golden image? Further, stateless technologies from the bigger vendors delete the differencing disk on restart, can you be sure the new disk is going to end up in the smaller, faster SSD or RAM tier? Or is data up there already in contention?</p>
<h3><strong>RAM is far less tricky<img class="alignright size-thumbnail wp-image-3224" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/ram_icon-1-150x150.jpg" alt="ram_icon (1)" width="150" height="150" /></strong></h3>
<p>RAM is commodity, available in abundance and throughout every virtual desktop project I’ve architected and deployed, you run out of CPU resources in a ‘fully loaded’ host way before you will run out of RAM. RAM has no running maintenance cost, Ram is an upfront CAPEX cost and requires little to no maintenance.</p>
<p>The beauty of what ThinIO does with the little resources you assign it, is turn that <strong>desktop workload</strong> into a healthier and happier <strong>server workload</strong> of minimal burst IO and a low steady state IO requirement.</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0033.png"><img class="alignright size-large wp-image-3225" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0033-1024x626.png" alt="image003" width="625" height="382" /></a></p>
<p style="text-align: center;"><em>Note the peak of just 40.5 IOPS and average IOPS of less than 2.</em></p>
<p>with as little as just 200mb cache for each of the 10 users logging in, within an aggressive 3 minute window, we reduced the peak from 1000 to 40. That’s a <strong>96% reduction</strong> in burst IO.</p>
<h3><strong>With ThinIO, you:</strong></h3>
<ul>
<li>reduce your exposure to massive IO spikes.</li>
<li>Improve user logon times.</li>
<li>significantly reduce your daily IOPS run rate.</li>
<li>Increase user productivity by spending less time waiting for the storage.</li>
<li>Commit to nothing up front, test it and see how well it works. If you are happy, then buy in.</li>
</ul>
<h3><strong>Lots of Intelligence baked in:</strong></h3>
<p>ThinIO is acutely aware of key operating system events that will cause these kind of spikes and react accordingly to reduce the spikes in IOPS created. ThinIO constantly watches the behavior and IO pattern of the storage and tunes itself accordingly.</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0053.png"><img class="aligncenter wp-image-3229 size-full" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0053.png" alt="image005" width="1024" height="468" /></a></p>
<p>Unlike other technologies, ThinIO is a true caching and performance solution. We do not move useful data in and out of the cache on demand when cache availability is contencious. We track patterns and frequency of block access to respond accordingly, delivering all the benefits we have mentioned, even with the tiniest cache, without EVER reducing the capability of the storage when overwhelmed.</p>
<p>And on the opposite side of the scale, when underworked, we leverage our cache to deliver deeper read savings as above.</p>
<p>ThinIO also has a powerful API and PowerShell interface to allow you to report and interact with the cache on demand.</p>
<h2><strong>Wrap up:</strong></h2>
<p>And with the end of the series looming, allow me to finish on some easy points:</p>
<p><strong> ThinIO Allows you to:</strong></p>
<ul>
<li>size your SAN outside of the Lamborghini category &amp; price tag for your desktop estate.</li>
<li>rapidly achieve far deeper density on your current hardware when you are feeling the Pinch.</li>
<li>guarantee a level of performance by assigning cache per VM, disallowing other users to steal or hamper caching resources.</li>
<li>Improve user experience and login times immediately.</li>
<li>Reduce the impact of boot storms and similar IO storm scenarios.</li>
</ul>
<p>No other vendor can offer as quick a turn around time with their product. ThinIO installs in seconds and offers a huge range of compatibility.</p>
<p><strong>One more thing:</strong></p>
<p><a href="http://thinscaletechnology.com/download-thinio/"><img class="aligncenter" src="http://thinscaletechnology.com/wp-content/uploads/Download-ThinIO.jpg" alt="" width="300" height="116" /></a></p>
<p>In case you missed ThinIO’s launch day at <a href="http://www.e2evc.com/home/" target="_blank">E2EVC </a>Barcelona, <strong>ThinIO is now in GA</strong>, available from our website and production ready! More marketing to follow! But grab your copy now and get playing!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-4-storage-design-and-dangerous-assumptions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThinIO facts and figures, Part 3: RDS and Ram caching.</title>
		<link>http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-3-rds-and-ram-caching/</link>
		<comments>http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-3-rds-and-ram-caching/#comments</comments>
		<pubDate>Wed, 22 Oct 2014 21:30:41 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Remote Desktop Services (RDS)]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[ThinIO]]></category>
		<category><![CDATA[ThinScale]]></category>
		<category><![CDATA[VDI in a Box]]></category>
		<category><![CDATA[Windows Server]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Horizon View]]></category>
		<category><![CDATA[IOPS]]></category>
		<category><![CDATA[Remote Desktop services]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[Vmware]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3202</guid>
		<description><![CDATA[Welcome back to the third instalment of this blog series focusing on our new technology ThinIO! To recap, below you will find the previous articles: ThinIO facts and figures, Part 1: VDI and Ram caching. ThinIO facts and figures, Part 2: The Bootstorm chestnut. Off topic note: two years ago at an E2EVC event, the concept behind ThinIO was born with just a mad scientist idea amongst peers. If you are lucky enough to be attending E2EVC this weekend, David [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/04/logo.png"><img class="alignright  wp-image-2865" src="http://andrewmorgan.ie/wp-content/uploads/2014/04/logo.png" alt="logo" width="189" height="36" /></a>Welcome back to the third instalment of this blog series focusing on our new technology ThinIO!</p>
<p>To recap, below you will find the previous articles:</p>
<ul>
<li class="entry-title"><a href="http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-1-vdi-and-ram-caching/" target="_blank">ThinIO facts and figures, Part 1: VDI and Ram caching.</a></li>
<li class="entry-title"><a href="http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-2-the-bootstorm-chestnut/" rel="bookmark">ThinIO facts and figures, Part 2: The Bootstorm chestnut.</a></li>
</ul>
<h3>Off topic note:</h3>
<p><img class="aligncenter" src="http://www.e2evc.com/home/Portals/0/E2EVC_header.jpg" alt="" width="408" height="51" /></p>
<p>two years ago at an E2EVC event, the concept behind ThinIO was born with just a mad scientist idea amongst peers.</p>
<p>If you are lucky enough to be attending <a href="http://www.e2evc.com/home/Agenda.aspx">E2EVC</a> this weekend, David and I will be there presenting ThinIO and maybe, just maybe there will be an announcement. Our session is on Saturday at 15:30 so pop by, you won&#8217;t be disappointed.</p>
<h3>Back on topic:</h3>
<p>So here&#8217;s a really interesting blog post. Remote Desktop Services (XenApp / XenDesktop hosted shared) or whatever you like to call it. RDS really presents a fun caching platform for us, as it allows us to deal with a much higher IO volume and achieve deeper savings.</p>
<p>We’ve really tested the heck out of this platform for how we perform on Microsoft RDS, Horizon View RDS integration and Citrix XenSplitPersonality with Machine Creation Services.</p>
<p>The figures we are sharing today are based on the following configuration and load test:</p>
<ul>
<li><img class="alignright  wp-image-3174" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/Logo_Login_VSI_Transparent.png" alt="Logo_Login_VSI_Transparent" width="250" height="42" />Citrix XenDesktop 7.6</li>
<li>Windows Server 2012 r2</li>
<li>Citrix User Profile Manager.</li>
<li>16gb of Ram.</li>
<li>4 vCpu.</li>
<li>LoginVSI 4.1 medium workload 1 hour test.</li>
<li>10 users.</li>
<li>VMFS 5 volume.</li>
</ul>
<h3>Fun figures!</h3>
<p>Diving straight in, lets start by looking at the volume of savings across three cache types.</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image001.png"><img class="aligncenter size-large wp-image-3203" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image001-1024x468.png" alt="image001" width="625" height="285" /></a></p>
<p>&nbsp;</p>
<p><span id="more-3202"></span></p>
<h4>Reviewing the details for a moment:</h4>
<p>Running repetitive tests of at least 3 per cache type, we found even at the lowest entry point we would support (50mb per user) we saw phenomenal savings of over 70% on write IO.</p>
<h5>No pressure no diamonds!</h5>
<p>To put that into perspective, at a 512 MB cache for 10 users, our cache reached maximum capacity at the second user login. With 8 users still left to login, cache full and still an hours worth of load testing left, our ThinIO technology was under serious pressure.</p>
<p>This is key to why ThinIO is such a great solution. We won’t just perform great until we fill our cache, we don’t require architecture changes or care about your storage type, we have no lead times or install days, we will carry on to work with what is available to use, to take a large ammount of pressure off storage IOPS and data throughput.</p>
<p>With the figures above, you can see just how well the intelligence behind our cache can scale even when it faces such a steep workload.</p>
<p>Below you will find a breakdown of each test:</p>
<h3>512 MB cache:</h3>
<p>Breaking down into the figures, on the 512mb cache test, it’s clear to see just how well ThinIO deals with the tiniest of caches:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0032.png"><img class="aligncenter size-large wp-image-3204" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0032-1024x590.png" alt="image003" width="625" height="360" /></a></p>
<p>When we side by side this with our baseline averages, you can see we take a huge chunk out of that Spiky login pattern and continue to  reduce the steady state IO as the test continues:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0052.png"><img class="aligncenter size-large wp-image-3205" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0052-1024x580.png" alt="image005" width="625" height="354" /></a></p>
<p>So lets move up and see how we get on!</p>
<h3>1024 mb cache:</h3>
<p>Doubling up our cache size we see a great increase in both read and write savings as you&#8217;d expect.</p>
<p>With 100mb of cache per user, and the average user profile in the test 3 times that size. We are still under pressure. As we will natively favour optimisations to write IO over read, you&#8217;ll see the bulk of improvements happen in write when we&#8217;re under pressure as illustrated in this test:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0071.png"><img class="aligncenter size-large wp-image-3207" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0071-1024x599.png" alt="image007" width="625" height="365" /></a></p>
<p>&nbsp;</p>
<p>With more cache available during the peak IO point, we make further savings on write:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0091.png"><img class="aligncenter size-large wp-image-3208" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0091-1024x586.png" alt="image009" width="625" height="357" /></a></p>
<h3>2048 mb cache:</h3>
<p>and at our recommended value of 200mb per user in Remote Desktop Services, the results are phenomenal! With this size, even still below the 300mb mark per user profile, the read IO gets a really good boost and the write IO saving well over the 95% mark!</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0111.png"><img class="aligncenter size-large wp-image-3209" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/image0111-1024x537.png" alt="image011" width="625" height="327" /></a></p>
<p>And the side by side comparison is every bit as good as the savings illustrated above, reducing that peak bursty IO to just 41 IOPS:<a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/2048.png"><img class="aligncenter size-large wp-image-3211" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/2048-1024x626.png" alt="2048" width="625" height="382" /></a></p>
<h2><span style="line-height: 1.714285714; font-size: 1rem;">But there&#8217;s more! </span></h2>
<p>As i pointed out in the previous blog, IOPS are just one side of the story. A reduction of data throughput to the disk is also a big benefit when it comes to storage optimisation, and as you can see we make a big difference:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2014/10/mbsec.png"><img class="aligncenter size-full wp-image-3212" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/mbsec.png" alt="mbsec" width="788" height="487" /></a></p>
<p>&nbsp;</p>
<h2>Wrap up:</h2>
<p>So there you have it, with ThinIO, a simple, in VM solution, you can you seriously reduce your IO footprint, boost user performance and achieve greater storage density per virtual machine or on Remote Desktop Services technology.</p>
<h4>In the mean time:</h4>
<p>If you would like a chance to test ThinIO pre-release, find access to the public beta below. Thank you for your time and happy testing!</p>
<p><a href="http://thinscaletechnology.com/download-thinio/" target="_blank"><img class="aligncenter wp-image-3171 size-medium" src="http://andrewmorgan.ie/wp-content/uploads/2014/10/Download-ThinIO-Beta-300x101.jpg" alt="Download-ThinIO-Beta" width="300" height="101" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2014/10/thinio-facts-and-figures-part-3-rds-and-ram-caching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The (not so) wonderful world of Lotus Notes in SBC &amp; VDI, Guide Updated.</title>
		<link>http://andrewmorgan.ie/2013/05/the-not-so-wonderful-world-of-lotus-notes-in-sbc-vdi-guide-updated/</link>
		<comments>http://andrewmorgan.ie/2013/05/the-not-so-wonderful-world-of-lotus-notes-in-sbc-vdi-guide-updated/#comments</comments>
		<pubDate>Wed, 29 May 2013 10:09:04 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Application Virtualisation.]]></category>
		<category><![CDATA[IBM Software]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Ibm]]></category>
		<category><![CDATA[Lotus Notes]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[xenapp]]></category>
		<category><![CDATA[XenDesktop]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=2661</guid>
		<description><![CDATA[Just a quick note to say I&#8217;ve updated the original Guide to Lotus Notes in SBC / VDI environments with another 2 years of begrudging, pain and bug fixes. A link to the updated article is here. Best of luck! A]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" alt="" src="/wp-content/uploads/2011/10/lotus_domino_modified.jpg?w=85&amp;h=84" width="85" height="85" />Just a quick note to say I&#8217;ve updated the original Guide to Lotus Notes in SBC / VDI environments with another 2 years of begrudging, pain and bug fixes.</p>
<p>A link to the updated article is <a href="http://andrewmorgan.ie/2011/10/20/lotus-notes-in-sbc-vdi-surviving-the-pitfalls-of-an-aging-client/" target="_blank">here</a>. Best of luck!</p>
<p>A</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2013/05/the-not-so-wonderful-world-of-lotus-notes-in-sbc-vdi-guide-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing SBC Printers, A simple printers interface for XenApp / VDI</title>
		<link>http://andrewmorgan.ie/2013/01/announcing-sbc-printers-a-simple-printers-interface-for-xenapp-vdi/</link>
		<comments>http://andrewmorgan.ie/2013/01/announcing-sbc-printers-a-simple-printers-interface-for-xenapp-vdi/#comments</comments>
		<pubDate>Fri, 04 Jan 2013 14:00:07 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Remote Desktop Services (RDS)]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[RDS]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=2563</guid>
		<description><![CDATA[A little irk of mine with Windows 7 and server 2008 R2 was the Devices and Printers interface. This mix of peripherals is fine for standard desktops, but in SBC / VDI the devices list generally contained items you didn&#8217;t want users seeing, or ejecting for that matter! Not happy with the Irk, and still on my app developing buzz, i decided to write SBC Printers: SBC-Printers is a simple little .net 4 application, leveraging WMI for printer enumeration and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" alt="" src="/wp-content/uploads/2012/10/andrew-logo1.png?w=75&amp;h=76" width="75" height="76" />A little irk of mine with Windows 7 and server 2008 R2 was the Devices and Printers interface. This mix of peripherals is fine for standard desktops, but in SBC / VDI the devices list generally contained items you didn&#8217;t want users seeing, or ejecting for that matter!</p>
<p><img class="aligncenter size-full wp-image-2572" alt="default interface" src="/wp-content/uploads/2013/01/default-interface.png" width="595" height="275" /></p>
<p>Not happy with the Irk, and still on my app developing buzz, i decided to write SBC Printers:</p>
<p><img class="aligncenter size-full wp-image-2564" alt="default" src="/wp-content/uploads/2013/01/default.png" width="595" height="427" /></p>
<p>SBC-Printers is a simple little .net 4 application, leveraging WMI for printer enumeration and control.Because SBC Printers is an executable, it can published as a XenApp application. Sbc Printers can also be installed as the default printers interface on the start menu:</p>
<p><img class="aligncenter size-full wp-image-2565" alt="start menu" src="/wp-content/uploads/2013/01/start-menu.png" width="414" height="553" /></p>
<p style="text-align:center;">So <em>really</em> your users won&#8217;t know the difference or care for that matter!</p>
<p>SBC-Printers also comes with securable options for adding or deleting local printers:</p>
<p><img class="aligncenter size-full wp-image-2575" alt="add" src="/wp-content/uploads/2013/01/add1.png" width="595" height="431" /></p>
<p><img class="aligncenter size-full wp-image-2567" alt="delete" src="/wp-content/uploads/2013/01/delete.png" width="595" height="430" /></p>
<p>The display of add or delete can be controlled via the settings file in the installation directory:</p>
<p><img class="aligncenter size-full wp-image-2568" alt="settings file" src="/wp-content/uploads/2013/01/settings-file.png" width="595" height="574" /></p>
<p><strong>Installation:</strong></p>
<ol>
<li>Download the following <a href="https://www.box.com/s/7gs0zth9cs92h7zszhf2" target="_blank">MSI</a></li>
<li>Install the MSI to the default directory.</li>
</ol>
<p><strong>To restrict the standard printers dialog from users, but leaving it accessible to administrators:</strong></p>
<ul>
<li>Browse to c:program files (x86)SBC-Printersbin</li>
</ul>
<p><img class="aligncenter size-full wp-image-2570" alt="powershell" src="/wp-content/uploads/2013/01/powershell1.png" width="595" height="132" /></p>
<ul>
<li>run the powershell script below,<strong> make sure to run it as an administrator!</strong></li>
</ul>
<p><em>That&#8217;s it, once the Powershell script runs. it removes the users access to the registry classes giving them access to the standard devices and printers interface. Which means we&#8217;re now ready to provision SBC-Printers to replace it.</em></p>
<p><strong>Provisioning the replacement to the user:</strong></p>
<p>Now just import the userkey.reg into the users profile on login, you can do this via your user profile manager of choice, or use Group Policy preferences.</p>
<p><strong>That&#8217;s it!</strong></p>
<p>As you can see I haven&#8217;t streamlined the install process too much, this is mostly down to the simplicity of the tool. If you like SBC-Printers but would like a better installer, just drop me a comment below.</p>
<p><strong>Roll back:</strong></p>
<p>if you need to restore the standard interface, uninstall SBC-Printers then add the (local computerusers) group back to the following registry keys ACL:</p>
<ul>
<li> HKCRsoftwareclassesCLSID{A8A91A66-3A7D-4424-8D24-04E180695C7A}</li>
<li>HKCRsoftwareWow6432NodeCLSID{A8A91A66-3A7D-4424-8D24-04E180695C7A}</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2013/01/announcing-sbc-printers-a-simple-printers-interface-for-xenapp-vdi/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Viewing open files on a file server from powershell.</title>
		<link>http://andrewmorgan.ie/2012/12/viewing-open-files-on-a-file-server-from-powershell/</link>
		<comments>http://andrewmorgan.ie/2012/12/viewing-open-files-on-a-file-server-from-powershell/#comments</comments>
		<pubDate>Wed, 05 Dec 2012 14:55:23 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Clustering]]></category>
		<category><![CDATA[PowerShell Scripting]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Server]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=2480</guid>
		<description><![CDATA[So this is a situation you should all be aware of in an SBC / VDI environment, despite all warnings, you&#8217;ve redirected folders to your network drive and your file servers are screaming in agony? Having been in this situation recently, I needed to audit and report on the types of files open on the file server, my hunch was a certain select number of users were running applications (like *gulp* lotus notes) from the network share. Disappointed with the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-full" alt="/wp-content/uploads/2011/03/windows_powershell_icon.png?w=58&amp;h=58&amp;h=58" src="/wp-content/uploads/2011/03/windows_powershell_icon.png?w=58&amp;h=58&amp;h=58" height="58" width="58" />So this is a situation you should all be aware of in an SBC / VDI environment, despite all <a href="http://helgeklein.com/blog/2011/11/folder-redirection-denial-of-service-waiting-to-happen/" target="_blank">warnings</a>, you&#8217;ve redirected folders to your network drive and your file servers are screaming in agony?</p>
<p>Having been in this situation recently, I needed to audit and report on the types of files open on the file server, my hunch was a certain select number of users were running applications (like *gulp* lotus notes) from the network share.</p>
<p>Disappointed with the powershell scripts on the interwebs, I decided to write my own function to perform this task:</p>
<p>[sourcecode language=&#8221;powershell&#8221;]<br />
function get-openfiles{<br />
param(<br />
    $computername=@($env:computername),<br />
    $verbose=$false)<br />
    $collection = @()<br />
foreach ($computer in $computername){<br />
    $netfile = [ADSI]&quot;WinNT://$computer/LanmanServer&quot;</p>
<p>        $netfile.Invoke(&quot;Resources&quot;) | foreach {<br />
            try{<br />
                $collection += New-Object PsObject -Property @{<br />
        		  Id = $_.GetType().InvokeMember(&quot;Name&quot;, &#8216;GetProperty&#8217;, $null, $_, $null)<br />
        		  itemPath = $_.GetType().InvokeMember(&quot;Path&quot;, &#8216;GetProperty&#8217;, $null, $_, $null)<br />
        		  UserName = $_.GetType().InvokeMember(&quot;User&quot;, &#8216;GetProperty&#8217;, $null, $_, $null)<br />
        		  LockCount = $_.GetType().InvokeMember(&quot;LockCount&quot;, &#8216;GetProperty&#8217;, $null, $_, $null)<br />
        		  Server = $computer<br />
        		}<br />
            }<br />
            catch{<br />
                if ($verbose){write-warning $error[0]}<br />
            }<br />
        }<br />
    }<br />
    Return $collection<br />
}<br />
[/sourcecode]</p>
<p>The function above (get-openfiles) has been written to accept an array of servers to the command line and it will return the following items:</p>
<ul>
<li>The ID of the open file.</li>
</ul>
<ul>
<li>The server it&#8217;s open from.</li>
</ul>
<ul>
<li>The username who has the file open.</li>
</ul>
<ul>
<li>The amount of locks the file has.</li>
</ul>
<p><strong>A couple of quick examples for using this command are below:<br />
<code><br />
</code><br />
</strong> <span style="text-decoration:underline;">Retrieving open files from server1:</span><br />
<code><br />
</code><br />
<img class="aligncenter" alt="full" src="/wp-content/uploads/2012/12/full.png" height="261" width="595" /><br />
<code><br />
</code></p>
<p>[sourcecode language=&#8221;powershell&#8221;]get-openfiles -computername server1 | select server,itempath,lockcount[/sourcecode]</p>
<p><code><br />
</code><br />
<span style="text-decoration:underline;">Retrieve a count of open files that end with the nsf file type (<em>Lotus Notes</em>):</span><br />
<code><br />
</code><br />
<img class="aligncenter size-full wp-image-2483" alt="count" src="/wp-content/uploads/2012/12/count.png" height="37" width="595" /><br />
<code><br />
</code></p>
<p>[sourcecode language=&#8221;powershell&#8221;](get-open files -computername server1,server2 | ? {$_.itempath -like &quot;*.nsf*&quot;}).count()[/sourcecode]</p>
<p><code><br />
</code><br />
<span style="text-decoration:underline;">Retrieve a report of total open files on a number of file servers:</span><br />
<code><br />
</code><br />
<img class="aligncenter size-full wp-image-2487" alt="report" src="/wp-content/uploads/2012/12/report.png" height="64" width="595" /></p>
<p>&nbsp;</p>
<p>[sourcecode language=&#8221;powershell&#8221;]get-openfiles -computername server1,server2,server3,server4,server5 | group -property server[/sourcecode]</p>
<p><code> </code></p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2012/12/viewing-open-files-on-a-file-server-from-powershell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing ThinKiosk 3.1</title>
		<link>http://andrewmorgan.ie/2012/11/announcing-thinkiosk-3-1/</link>
		<comments>http://andrewmorgan.ie/2012/11/announcing-thinkiosk-3-1/#comments</comments>
		<pubDate>Fri, 16 Nov 2012 16:00:47 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Access Gateway]]></category>
		<category><![CDATA[CloudGateway]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[ThinKiosk]]></category>
		<category><![CDATA[VDI in a Box]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Web Interface]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[Thin Client]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[VMware View]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=2434</guid>
		<description><![CDATA[With great pleasure I&#8217;m announcing the general availability of ThinKiosk 3.1. Quite a bit of change under the hood and some nice features added to match. New features: VMware View enhanced support: VMware View has gotten some love in this update, A big thanks to Jarian Gibson for the help. You can now enforce end of session options for VMware view: You can also now choose to wipe the last users details from the Kiosk between View sessions: FTP policy [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2012/11/fulllogo.jpeg"><img class="size-medium wp-image-2435 aligncenter" title="FullLogo" alt="" src="/wp-content/uploads/2012/11/fulllogo.jpeg?w=300" height="59" width="300" /></a></p>
<p>With great pleasure I&#8217;m announcing the general availability of ThinKiosk 3.1. Quite a bit of change under the hood and some nice features added to match.</p>
<p><span style="text-decoration:underline;"><strong>New features:</strong></span></p>
<p><strong>VMware View enhanced support:</strong></p>
<p>VMware View has gotten some love in this update, A big thanks to Jarian Gibson for the help.</p>
<p>You can now enforce end of session options for VMware view:</p>
<p><img class="aligncenter" title="viewendsession" alt="" src="/wp-content/uploads/2012/11/viewendsession.png" height="172" width="398" /><br />
You can also now choose to wipe the last users details from the Kiosk between View sessions:</p>
<p><a href="/wp-content/uploads/2012/11/clearviewusername.png"><img class="aligncenter" title="clearviewusername" alt="" src="/wp-content/uploads/2012/11/clearviewusername.png" height="96" width="404" /></a></p>
<p><strong>FTP policy management:</strong></p>
<p>With ThinKiosk 3.1, you no longer are tied to manage the thinkiosk devices by Group Policy or local registry settings, you can now also use an ftp server with a shared xml configuration file:</p>
<p><img class="aligncenter size-medium wp-image-2439" title="ftp" alt="" src="/wp-content/uploads/2012/11/ftp.png?w=300" height="140" width="300" /></p>
<p>Just configure a Device as you would like it to appear, unlock the admin menu and you can export the configuration to xml:</p>
<p><img class="aligncenter size-full wp-image-2440" title="ftpexport" alt="" src="/wp-content/uploads/2012/11/ftpexport.png" height="274" width="223" /></p>
<p>Then move it to your ftp server!</p>
<p><strong>Encryption:</strong></p>
<p>The unlock password in group policy can now be encrypted to save it appearing in plain text to anyone capable of viewing the policy. ThinKiosk 3.1 ships with a password encryption tool you can use to encrypt your password.</p>
<p><img class="aligncenter size-medium wp-image-2436" title="encryptionapp" alt="" src="/wp-content/uploads/2012/11/encryptionapp.png?w=296" height="300" width="296" /></p>
<p>You can also test reversing the password to plain text to make sure you get it right before applying it en-mass and locking yourself out!</p>
<p>This encryption functionality has now been added to both the offline configuration tool:</p>
<p><img class="aligncenter size-medium wp-image-2437" title="encroffline" alt="" src="/wp-content/uploads/2012/11/encroffline.png?w=300" height="106" width="300" /></p>
<p>And by default the FTP password will be encrypted too!</p>
<p><a href="/wp-content/uploads/2012/11/encftp.png"><img class="aligncenter size-medium wp-image-2438" title="encftp" alt="" src="/wp-content/uploads/2012/11/encftp.png?w=300" height="45" width="300" /></a><br />
<img class="alignright size-full wp-image-2441" title="batterystatus" alt="" src="/wp-content/uploads/2012/11/batterystatus.png" height="32" width="95" /><strong>Battery Awareness:</strong></p>
<p>ThinKiosk is now aware of batteries in laptop devices and will report their status.</p>
<p>When the battery begins to run out, ThinKiosk will throw a warning in the foreground as below:</p>
<p><a href="/wp-content/uploads/2012/11/lowbat.png"><img class="aligncenter size-full wp-image-2442" title="lowbat" alt="" src="/wp-content/uploads/2012/11/lowbat.png" height="181" width="410" /></a></p>
<p>You can additionally disable this functionality with the offline configuration tool.</p>
<p><strong>Pre launch Citrix Receiver:</strong></p>
<p><a href="/wp-content/uploads/2012/11/prelaunchreceiver.png"><img class="aligncenter size-full wp-image-2445" title="prelaunchreceiver" alt="" src="/wp-content/uploads/2012/11/prelaunchreceiver.png" height="229" width="397" /></a></p>
<p>A rare issue seen with the latest versions of the receiver was a bit of a hang, pause or complete lock up as receiver came to life. To combat this, you can now choose to early launch the receiver for Citrix, allowing it to gracefully start up in the background before the user requires it.</p>
<p><strong>Early launch process:</strong></p>
<p>A number of customers needed to have third party software launched as soon as ThinKiosk started each day. I&#8217;ve now added the ability to early launch a process <img class="aligncenter size-full wp-image-2446" title="early launch process" alt="" src="/wp-content/uploads/2012/11/early-launch-process.png" height="176" width="578" /></p>
<p>You can also choose to launch this process as hidden, away from the user.</p>
<p><strong>Browser navigation buttons:</strong><a href="/wp-content/uploads/2012/11/navbuttons.png"><img class="alignright size-full wp-image-2443" title="navbuttons" alt="" src="/wp-content/uploads/2012/11/navbuttons.png" height="28" width="95" /></a></p>
<p>ThinKiosk can now act as a locked down browser by adding back and forward buttons.</p>
<p><strong>AM / PM clock:</strong><img class="alignright size-full wp-image-2444" title="12 hour clock" alt="" src="/wp-content/uploads/2012/11/12-hour-clock.png" height="33" width="173" /></p>
<p>This feature was asked for quite a few times, so now you can set the clock to 12 hour.</p>
<p><strong>Debug Mode:</strong></p>
<p><img class="aligncenter size-full wp-image-2453" title="debug mode" alt="" src="/wp-content/uploads/2012/11/debug-mode.png" height="304" width="462" /></p>
<p>A fully fledged debug window has been added to help timing issues. The debug menu can be accessed via command line (-debug) or via the admin menu in ThinKiosk.</p>
<p><strong>Zorder awareness:</strong></p>
<p>In rare situations (and I&#8217;ve been unable to reproduce it) ThinKiosk can jump above the citrix session when a log off of the web interface happens or during the login process.</p>
<p>Zorder awareness will tell ThinKiosk to send itself to the back of the Zorder when the browser finishes rendering. It will also display a hide button, which will send ThinKiosk to  the back in this rare event.</p>
<p><img class="aligncenter size-full wp-image-2448" title="zorder" alt="" src="/wp-content/uploads/2012/11/zorder.png" height="99" width="136" /></p>
<p>Please use this setting as a troubleshooting tool, not a production setting. If this setting fixes the issue for you, please drop me an email and I&#8217;ll write it in. As I&#8217;ve been unable to reproduce this issue, it&#8217;s a bit rough around the edges.</p>
<p><strong>Citrix Storefront timeout screen:</strong></p>
<p><img class="aligncenter size-medium wp-image-2449" title="storefront" alt="" src="/wp-content/uploads/2012/11/storefront.png?w=300" height="110" width="300" /></p>
<p>ThinKiosk is now aware of the timeout screen and will automagically redirect back to the login screen if it see&#8217;s it.</p>
<p><strong>Hide ThinKiosk when a desktop is active:</strong></p>
<p>If you wish to outright hide ThinKiosk while a desktop is active, you can now do so!</p>
<p><img class="aligncenter size-full wp-image-2447" title="hideduringsession" alt="" src="/wp-content/uploads/2012/11/hideduringsession.png" height="172" width="387" /></p>
<p><strong>Even More sites:</strong></p>
<p>Support for up to 20 sites has been added, thanks Martijn!</p>
<p><strong>Sticky Home Page:</strong></p>
<p><strong><img class="aligncenter size-full wp-image-2450" title="stickyhome" alt="" src="/wp-content/uploads/2012/11/stickyhome.png" height="159" width="472" /></strong></p>
<p>A request came through to allow the home page always be site 1, this has now been included.</p>
<p><strong>Bug Fixes:</strong></p>
<ul>
<li>support for environment variables in custom tools and prelaunch commands. (thanks Nathan).</li>
<li>Offline config tool not setting password correctly.</li>
<li>VB Powerpack accidentally bundled with ThinKiosk 3.0</li>
<li>In process launch mode, power options were intermittently being applied.</li>
</ul>
<p><strong>And it’s still free!<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5L4N9CLZAB87L"><br />
</a></strong><br />
ThinKiosk development has taken quite some time and it takes time to support you via email. If you use ThinKiosk in your environment or appreciate the savings its made for you, please consider making a donation or paying for enterprise support to help me keep this project alive… I would really appreciate it as it will allow me to invest in better development tools to make the product look and feel even better!<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5L4N9CLZAB87L"><br />
</a></p>
<p><strong><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5L4N9CLZAB87L"><br />
<img class="aligncenter" title="paypal-donate-button" alt="" src="/wp-content/uploads/2012/07/paypal-donate-button2.png?w=138&amp;h=60" height="60" width="138" /></a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2012/11/announcing-thinkiosk-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On IOPS, shared storage and a fresh idea. (Part 3) tying it all together in the stack</title>
		<link>http://andrewmorgan.ie/2012/10/on-iops-shared-storage-and-a-fresh-idea-part-3-tying-it-all-together-in-the-stack/</link>
		<comments>http://andrewmorgan.ie/2012/10/on-iops-shared-storage-and-a-fresh-idea-part-3-tying-it-all-together-in-the-stack/#comments</comments>
		<pubDate>Fri, 26 Oct 2012 14:08:13 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[Server Virtualisation]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Server]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[XenServer]]></category>
		<category><![CDATA[HyperV]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=2393</guid>
		<description><![CDATA[Note: This is part three, have a read of part one and two. Hello there, and thank you for dropping back for part 3&#8230; I suppose I should start with the disappointing news that I have yet to test this option for VDI in a box. And despite Aaron Parker&#8217;s suggestions it wasn&#8217;t due to lack of inspiration, it was down to lack of time! This series has gathered allot of interest from both community and storage vendors alike, and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" alt="" src="/wp-content/uploads/2012/10/andrew-logo1.png?w=595" height="76" width="75" />Note: This is part three, have a read of part <a href="http://andrewmorgan.ie/2012/10/05/on-e2e-geek-speak-iops-shared-storage-and-a-fresh-idea-part-1/" target="_blank">one</a> and <a href="http://andrewmorgan.ie/2012/10/10/on-iops-shared-storage-and-a-fresh-idea-part-2-go-go-citrix-machine-creation-services/" target="_blank">two</a>.</p>
<p>Hello there, and thank you for dropping back for part 3&#8230;</p>
<p>I suppose I should start with the disappointing news that I have yet to test this option for VDI in a box. And despite Aaron Parker&#8217;s suggestions it wasn&#8217;t due to lack of inspiration, it was down to lack of time! This series has gathered allot of interest from both community and storage vendors alike, and I feel I should set the record straight before I got any further:</p>
<ol>
<li>This<strong> isn&#8217;t a production idea</strong>, you would be crazy to use this idea in a live environment.</li>
<li>Throughout this entire project, we&#8217;re focusing on pooled stateless. Stateful desktops would be a separate post entirely.</li>
<li>This wasn&#8217;t an attack on products in this market space, merely a fresh view on an old problem.</li>
<li>If i had the skills or funds necessary to run this project to a production solution, I wouldn&#8217;t have posted it. I would already be hard at work creating a reasonably priced product!</li>
</ol>
<p>Now that my declarations are out of the way, I&#8217;d first like to talk about the moral of the story. This isn&#8217;t an unfamiliar expression:</p>
<p><strong>IOPS mitigation is not about read IOPS it&#8217;s about <span style="text-decoration:underline;">WRITE IOPS</span></strong>!</p>
<p>VMware, Citrix and Microsoft have similar but very different solutions for read IOPS negotiation. Similar in the sense that they try to negate storage read IOPS. But the key difference with XenServer is the local disk cache via Intellicache has the out of box functionality to cache the majority of read&#8217;s to local disk (think SSD*) without the baked in soft limit of 512 MB for Microsoft HyperV and VMware respectively.</p>
<p>Long story short, VMware and Microsoft&#8217;s solution is about 512mb of recognizable read IOPS negation un-tuned, but enabled. Of course this value can be tuned upwards, but the low entry point of cache would suggest, at least to me, that tuning up will have an upsetting affect on the host.</p>
<p>This to me is why IntelliCache has the upperhand in the (value add product) VDI space for read IOPS negation and they even throw in the Hypervisor as part of your XenDesktop licensing, so win win, but what about those pesky write IOPS?</p>
<p><span id="more-2393"></span></p>
<p><strong>Let&#8217;s look at Citrix for a moment!</strong></p>
<p>If we review <a href="http://andrewmorgan.ie/2012/10/05/on-e2e-geek-speak-iops-shared-storage-and-a-fresh-idea-part-1/" target="_blank">article 1</a> and <a href="http://andrewmorgan.ie/2012/10/10/on-iops-shared-storage-and-a-fresh-idea-part-2-go-go-citrix-machine-creation-services/" target="_blank">article 2</a> for a moment, the half baked idea formed by <a href="https://twitter.com/barryschiffer" target="_blank">Barry Schiffer</a>, <a title="The dutch IT guy!" href="http://www.ingmarverheij.com/">Ingmar Verheij</a>, <a href="https://twitter.com/KBaggerman" target="_blank">Kees Baggerman</a>, <a title="An amazing blog, i regularly read from Remko." href="http://www.remkoweijnen.nl/blog/">Remko Weijnen</a> and I, when combined with Citrix IntelliCache turned out to be a phenomenal combination to create an IOPS avoidance product. But the key point we had in the back of our heads was, Citrix provisioning server already has this driver!</p>
<p>Citrix provisioning server has a RAM cache driver, with configurable size baked into the Provisioning Services product. This driver works in a very similar way to the EWF driver, just without the API and flexibility of a Microsoft driver.</p>
<p>There are customers of Citrix out there using RAM caching with XenApp who I spoke to, they have assigned a large (8gb+ cache, 3-4gb of cache utilised day to day) to negotiate the chance of a spillover, but it could still happen and this is an acceptable risk to their implementation. I struggled to find a XenDesktop customer using this method who would talk about their implementation.</p>
<p>But with XenDesktop in mind, using an overly large cache size to avoid spillover just doesn&#8217;t scale the way a consolidated Server Based Computing model would&#8230; Which leaves us back in this same dilemma, I&#8217;d like to cache in RAM, but I don&#8217;t want to risk users losing data when they perform a task we have not factored for.</p>
<p>So with all this in mind, lets talk about my final hurdle I faced with this project.</p>
<p><img class="alignright size-thumbnail wp-image-2402" title="BSOD" alt="" src="/wp-content/uploads/2012/10/bsod.jpg?w=150" height="112" width="150" /></p>
<p><strong>RAM cache flood and my half baked solution:</strong></p>
<p>The Microsoft EWF driver suffered the same problem as the Citrix provisioning server when the cache filled, i.e. it froze or outright bug checked if you tried to reference a file put into the cache before you filled it with other information.</p>
<p><a href="http://info.kraftkennedy.com/blog/bid/102199/Citrix-Provisioning-Server-Understanding-the-Limitations-of-Write-Cache-in-Target-Device-RAM">Jeff Silverman</a> has done a great article on what happens in this event with the Citrix Provisioning Services RAM cache and I urge you to go read it so I don&#8217;t have to repeat it! Go now, I&#8217;ll wait right here for you to get back!</p>
<p><strong>Read that article?</strong> Ok good, let&#8217;s continue.</p>
<p>To combat this scenario with the Windows EWF driver, I created a very rough around the edges windows service using polling (Sorry Remko) to check the size of the cache periodically via the <a href="http://msdn.microsoft.com/en-us/library/ms933209%28v=winembedded.5%29.aspx">EWFAPI</a> and write the cache out to disk.</p>
<p>The function in the EWFAPI called <a href="http://msdn.microsoft.com/en-us/library/aa940887%28v=winembedded.5%29.aspx">EwfCommitAndDisableLive</a> allowed me to dump the ram cache to disk and subvert the cache, going straight to disk when this event had occurred. By using this routine the ram cache simply disables itself and allows pass-through to disk at this point.</p>
<p><a href="/wp-content/uploads/2012/10/ewfdriverbasicprincipal.png"><img class="aligncenter" title="EWFDriverBasicPrincipal" alt="" src="/wp-content/uploads/2012/10/ewfdriverbasicprincipal.png" height="244" width="516" /></a></p>
<p>With this in mind, I tuned my service to spill to disk when the cache was greater than 80% of ram available, not in use by the operating system when the system booted, This worked well to a point, but the key failure to this approach became apparent when you opened a large number of applications and they struggled to occupy the space available around the cache.</p>
<p>My second attempt however, proved much more fruitful where I monitored for free system bytes in memory and if this dropped below a certain threshold the EWF drive began it&#8217;s dump routine to disk. Once the dump routine was complete, ram cleared and the writes had been committed to storage where the disk continued to use it for the remainder of the session. Once this spill over had occurred, a notification bubble fired in the user session warning them of the degradation of service and they should log off saving work at the next convenient moment&#8230;</p>
<p><em>Voila! no blue screen, spill to disk and user notification of degradation.</em></p>
<p>This wasn&#8217;t fool proof, it was very rough, it didn&#8217;t handle files being written larger than the RAM cache, but In my opinion, it satisfied the <strong>biggest fear</strong> and business case against using the Citrix Provisioning server ram caching, the ram cache flood scenario. I was happy with the results and it scaled well to the size of my lab, it showed what is possible with a RAM filter driver and it allowed me to prove my point before I started to poke the hornets nest of the storage market. So let&#8217;s park the EWF story for now and focus on my favorite subject, Citrix technologies.</p>
<p><em><strong>Note:</strong> I won&#8217;t be making this service and driver solution publicly available, it&#8217;s not a production ready solution and Microsoft would sue the pants off me. I&#8217;m sure you&#8217;ll understand why, but if you want more information drop me an email.</em></p>
<p>The next part&#8217;s of this blog are all theoretical, but I know certain people I want to listen, <em>are</em> listening (Hi Kenneth, hope you are well :)).</p>
<p><strong>Negating the negated. Lets talk about that spill over.</strong></p>
<p>But what about that Spill over event? by using a spill over from ram to disk, we create a situation where we could change a steady, slightly reliable IOPS per from each desktop, to a situation where, &#8220;couldn&#8217;t a collection of spillovers at the same time cause your storage to becoming swamped with IOPS?&#8221;</p>
<p>Absolutely, and I&#8217;ve been thinking about this quite a bit&#8230; But there&#8217;s another hidden potential here even in a RAM spill over scenario&#8230;</p>
<p style="text-align:center;"><em>With a little bit of trickery couldn&#8217;t we also negate this spillover event with a simple provisioning job? </em></p>
<p><a href="/wp-content/uploads/2012/10/difdiskcopycreate.png"><img class="aligncenter size-full wp-image-2408" title="difdiskcopycreate" alt="" src="/wp-content/uploads/2012/10/difdiskcopycreate.png" height="272" width="595" /></a></p>
<p>With a bit of time spent thinking about this scenario, this is what I came up with&#8230;</p>
<p>Why doesn&#8217;t the controller, for XenApp or XenDesktop (PVS / DDC) copy or (my personal preference) create a local, blank differencing disk when a VM boots?</p>
<p>The hypervisor could be completely agnostic at this point, we could spill over to local disk, keeping write IOPS completely away from the shared storage? even in a spill over event?</p>
<p>This approach (in this half baked enthusiasts view) would negate the negated&#8230; But don&#8217;t take my word for it, lets go for some theoretical solutions.</p>
<p><strong>Solution A: Implementing a spill over routine with the Citrix provisioning server driver.</strong></p>
<p>So with my success with the Microsoft driver, I got myself thinking how easy would this be to do utilizing the Citrix Provisioning Services driver? Without access to the code, I&#8217;m going to be making slightly risky statements here, but I have allot of faith in Citrix that they could make this happen.</p>
<p>From everyone I have spoken to about this idea, they all see the value in the ability to spill out of RAM&#8230; So Citrix, please make it so. Below are some idea&#8217;s for deployment methods assuming Citrix do march down this route and the pro&#8217;s and con&#8217;s I see that live with each scenario.</p>
<p>Bear in mind, I&#8217;m not a storage guy, a full time developer or a software architect, I&#8217;m just an enthusiast that see&#8217;s potential, so drop your comments below as to what you think!</p>
<p><span style="text-decoration:underline;"><strong>Machine Creation Services.</strong></span></p>
<p><strong>Idea A: Provisioning services improved RAM caching, Machine Creation services and Intellicache on XenServer.</strong></p>
<p><a href="/wp-content/uploads/2012/10/1-mcs-pvs-driver1.png"><img class="aligncenter size-full wp-image-2406" title="1. MCS &amp; PVS Driver" alt="" src="/wp-content/uploads/2012/10/1-mcs-pvs-driver1.png" height="355" width="595" /></a></p>
<p>Utilizing XenServer and MCS we could leverage the intellicache to negate the read IOPS as we proved in my own EWF driver testing, but still deliver on that spill over mechanism allowing continuation of service.</p>
<p><strong>Pros:</strong></p>
<ul>
<li>Read IOPS negation.</li>
<li>RAM caching to remove write IOPS (bar a spill over).</li>
<li>Continuation of service in a cache flood scenario.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Limited to XenServer.</li>
<li>Over provisioning of RAM necessary per desktop.</li>
<li>RAM spillover will result in a large amount of IOPS to the shared storage.</li>
</ul>
<p><strong>Idea B</strong>: <strong>Provisioning services improved RAM caching, Machine Creation services and Intellicache on XenServer&#8230; With local copy!</strong></p>
<p><a href="/wp-content/uploads/2012/10/2-mcs-pvs-local-copy.png"><img class="aligncenter size-full wp-image-2409" title="2. MCS &amp; PVS &amp; local copy" alt="" src="/wp-content/uploads/2012/10/2-mcs-pvs-local-copy.png" height="329" width="595" /></a></p>
<p>Same benefits as previous, but now, we have zero reliance on the shared storage when the VM is up (except for ID disk actions).</p>
<p><strong>Pros:</strong></p>
<ul>
<li>Read IOPS negation.</li>
<li>RAM caching to remove write IOPS.</li>
<li>Uses local resources in a spill over.</li>
<li>Continuation of service in a cache flood scenario.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Limited to XenServer.</li>
<li>Over provisioning of RAM necessary per desktop.</li>
</ul>
<p>So that&#8217;s MCS in a nutshell with per VM caching, I think this solution has so much potential I can&#8217;t believe it&#8217;s not been done, but I digress. So lets park that topic for now and move on to Citrix Provisioning Services.</p>
<p><strong><span style="text-decoration:underline;">Citrix Provisioning Services:</span><br />
</strong></p>
<p>So lets look at the &#8220;favorite of many&#8221; technology.</p>
<p><strong>Idea A: Citrix Provisioning Services and Improved RAM caching driver.</strong></p>
<p><a href="/wp-content/uploads/2012/10/pure-pvs.png"><img class="aligncenter size-full wp-image-2407" title="Pure PVS" alt="" src="/wp-content/uploads/2012/10/pure-pvs.png" height="401" width="595" /></a></p>
<p>In a pure Provisioning services environment, we would force our read IOPS via the lan, instead of storage protocol but still deliver a spill back to disk to allow continuation of service.</p>
<p><strong>Pros:</strong></p>
<ul>
<li>Hypervisor agnostic.</li>
<li>RAM caching to remove write IOPS (bar a spill over).</li>
<li>Continuation of service in a cache flood scenario.</li>
<li>Potentially no shared storage needed, at all, if caching on the PVS server.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Read IOPS aren&#8217;t really negated, they&#8217;re just forced over another technology.</li>
<li>Over provisioning of RAM necessary per desktop.</li>
<li>RAM spillover will result in a large amount of IOPS to the shared storage / pvs server.</li>
</ul>
<p><strong>Idea B: Citrix Provisioning Services and Improved RAM caching driver.. With local copy!<br />
</strong></p>
<p><a href="/wp-content/uploads/2012/10/pvslocalcopy.png"><img class="aligncenter size-full wp-image-2413" title="pvslocalcopy" alt="" src="/wp-content/uploads/2012/10/pvslocalcopy.png" height="500" width="576" /></a></p>
<p>Taking the above benefits, but with the gain of utilizing local storage in the spillover event.</p>
<p><strong>Pros:</strong></p>
<ul>
<li>Hypervisor agnostic.</li>
<li>RAM caching to remove write IOPS.</li>
<li>Uses local resources in a spill over.</li>
<li>Continuation of service in a cache flood scenario.</li>
<li>Potentially no shared storage needed, at all.</li>
</ul>
<p><strong>Cons:</strong></p>
<ul>
<li>Read IOPS aren&#8217;t really negated, they&#8217;re just forced over another technology.</li>
<li>Over provisioning of RAM necessary per desktop.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>So lets Review:</strong></span></p>
<p>And there we have it, 4 solutions to IOPS negation utilizing the Provisioning server RAM caching driver, with a little bit of a modification to deliver a robust solution to RAM caching.</p>
<p>The copy and creation of differencing disks again would deliver additional benefits to leverage the hardware you put into each Hypervisor without the Shared Storage investment.</p>
<p><em>Win Win, but is it?</em></p>
<p><strong>There&#8217;s an oversight here:</strong></p>
<p>There&#8217;s a niggle here that&#8217;s been bothering me for some time and you&#8217;ll probably note I mentioned it as a CON to most of the solutions above&#8230; I&#8217;m going to lay it out on the table in complete honesty&#8230;</p>
<p style="text-align:center;"><em>&#8220;Isn&#8217;t over provisioning RAM on a per desktop basis a waste of resource? Wouldn&#8217;t it be better if we could share that resource across all VM&#8217;s on a Hypervisor basis?&#8221;</em></p>
<p>You betcha! If we are assigning out (for argument sake) 1gb of ram cache per VM, that RAM is locked into that VM and if another machine spills, the free RAM in other desktops is wasted.</p>
<p>You would be completely insane not to reserve this RAM per VM, if an over-commit for the VM&#8217;s is reached this RAM will merely spill out to a page file type arrangement, negating <strong>all</strong> your benefits.</p>
<p>Ultimately, assigning RAM in this way could be seen as wasteful in the grand scheme of things&#8230;</p>
<p><span style="text-decoration:underline;"><strong>But there are other ways to <a href="http://www.worldwidewords.org/qa/qa-mor1.htm" target="_blank">skin this cat</a>!</strong></span></p>
<p>So this leads me on to something I was also considering which popped up in a twitter conversation recently. <strong>RAM disk&#8217;s and Hypervisors</strong>.</p>
<p>Current storage vendors will create a storage pool, consisting of ram inside a VM, per hosting hypervisor for local storage to allow good IOPS leveraging that VM. This VM can perform additional RAM optimizations like compression, de-duplication and sharing of similar pages to reduce the count.</p>
<p>This approach is super clever, <em>but</em>, In my humble opinion (please don&#8217;t kill me vendors), this approach is wasteful. Running a VM as a storage repository per host has an overhead to run this virtual machine and takes away from the agnostic solution that is possible&#8230;</p>
<p style="text-align:center;"><strong><em>What If the hypervisor provides the RAM disk?</em></strong></p>
<p style="text-align:left;">So excluding ESXi for a second, as getting a RAM disk into that platform would require VMware to allow access to the stack. Lets look at Hyper-V (2012) and XenServer for a second&#8230;</p>
<p style="text-align:left;">With Unix and Windows platforms, <a href="http://en.wikipedia.org/wiki/List_of_RAM_drive_software" target="_blank">RAM disks have been available for years</a>. They were once a necessity and a number of vendors still provide them for high performance IO environments.</p>
<p style="text-align:left;">Lets say (for arguments sake) Citrix and Microsoft decide to provide a snap-in to their hypervisor to allow native RAM disks (or a vendor writes one themselves!) and maybe, they even decide to provide RAM compression, Spill over to local disk, dedupe, and page sharing on this volume from the hypervisor stack&#8230;</p>
<p style="text-align:left;">Wouldn&#8217;t this extend provide all the benefits we&#8217;ve spoken about, without the need for a VM per host? And using Thin Provisioning allow all desktops to share the large pool of RAMdisk available?</p>
<p style="text-align:center;"><em>Yes, yes, it would.</em></p>
<p style="text-align:left;"><a href="/wp-content/uploads/2012/10/ramdisklocalcopy.png"><img class="aligncenter size-full wp-image-2414" title="ramdisklocalcopy" alt="" src="/wp-content/uploads/2012/10/ramdisklocalcopy.png" height="411" width="595" /></a></p>
<p style="text-align:center;"><em>Above is an example of how I would see this working.</em></p>
<p style="text-align:left;">So random pictures are fine and all, but what about the read IOPS negation technologies? and what about combining these with XenServer or Hyper-V?</p>
<p style="text-align:left;"><strong>XenServer and IntelliCache:</strong></p>
<p style="text-align:left;"><a href="/wp-content/uploads/2012/10/mcsramdiskintellicache.png"><img class="aligncenter size-full wp-image-2415" title="mcsramdiskintellicache" alt="" src="/wp-content/uploads/2012/10/mcsramdiskintellicache.png" height="308" width="595" /></a></p>
<p style="text-align:left;">Well there you have it now, all the benefits of a per VM filter, leveraging intellicache for reads and spilling out to local disk&#8230; RESULT!</p>
<p style="text-align:left;"><strong>Pro&#8217;s:</strong></p>
<ul>
<li>Read IOPS negation</li>
<li>Write IOPS negation</li>
<li>No Shared Storage required for running VM&#8217;s</li>
<li>Shared pool of RAM for all desktop&#8217;s to use.</li>
</ul>
<p><strong>Con&#8217;s:</strong></p>
<ul>
<li>A small one, but no migration of VM&#8217;s.</li>
</ul>
<p><strong>Provisioning server?</strong></p>
<p><a href="/wp-content/uploads/2012/10/pvsramdisk1.png"><img class="aligncenter size-full wp-image-2418" title="pvsramdisk" alt="" src="/wp-content/uploads/2012/10/pvsramdisk1.png" height="385" width="595" /></a></p>
<p>and again, all the benefits of a per VM filter, reads redirected via lan and spilling out to local disk&#8230; RESULT!</p>
<p><strong>Pro&#8217;s:</strong></p>
<ul>
<li>Write IOPS negation</li>
<li>No Shared Storage required for running VM&#8217;s</li>
<li>Shared pool of RAM for all desktop&#8217;s to use.</li>
</ul>
<p><strong>Con&#8217;s:</strong></p>
<ul>
<li>A small one, but no migration of VM&#8217;s.</li>
<li>No real read IOPS negation.</li>
</ul>
<p style="text-align:left;"><strong>And HyperV + CSV Cache?</strong></p>
<p style="text-align:left;">Well here&#8217;s an accumulation of my thoughts:</p>
<p style="text-align:left;"><a href="/wp-content/uploads/2012/10/hypvcsv.png"><img class="aligncenter size-full wp-image-2416" title="hypvcsv" alt="" src="/wp-content/uploads/2012/10/hypvcsv.png" height="464" width="595" /></a></p>
<p style="text-align:left;">So lets just talk for a second about what we are seeing&#8230; Utilizing a RAM disk with spill over, and copied vhd&#8217;s on boot we are removing the need for shared storage completely and hosting the IOPS from the hypervisor, natively without the need for additional VM&#8217;s.</p>
<p style="text-align:left;">And see that little icon down the bottom? Yep, that&#8217;s right, live migration from host to host thanks to <a href="http://blogs.technet.com/b/uspartner_ts2team/archive/2012/07/23/shared-nothing-live-migration-on-windows-server-2012.aspx" target="_blank">Microsofts Shared Nothing Live Migration</a>!</p>
<p><strong>Pro&#8217;s:</strong></p>
<ul>
<li>Some write IOPS negation</li>
<li>No Shared Storage required for running VM&#8217;s</li>
<li>Liv migration.</li>
<li>Shared pool of RAM for all desktop&#8217;s to use.</li>
<li>write back to local disk.</li>
</ul>
<p><strong>Con&#8217;s:</strong></p>
<ul>
<li>No full read IOPS negation.</li>
</ul>
<p style="text-align:left;"><strong>Review.</strong></p>
<p style="text-align:left;">I&#8217;m sure there&#8217;s loads of reading in here, and there will be tons of thought and questions after this blog post. This has been in my head for roughly 9 months now and it feels victorious to finally get it all down on paper.</p>
<p style="text-align:left;">At the end of the day, Ram Caching is the way of the future, you pay no maintenance on it, you keep your IOPS off your storage and with a little magic from Microsoft, or particularly Citrix. You could see these benefits.</p>
<p style="text-align:left;">If / When these technologies make it out to you, you could quite happily stick with Machine Creation services, leverage intellicache and your shared storage requirement could be a cheap NAS from any vendor. Provisioning services also see&#8217;s allot of benefits from this approach, but the real creme de la creme is in that intellicache feature.</p>
<p style="text-align:left;">The key functionality to these approaches is simple:</p>
<ul>
<li>Cache RAM</li>
<li><strong>Spill to disk</strong></li>
<li>Keep the differences on local storage if it spills.</li>
</ul>
<p style="text-align:left;"><strong>One last thing?</strong></p>
<p style="text-align:left;">In true Mark Templeton fashion, you know I have a one last thing. This actually hit me today while writing this post and to be honest, I&#8217;m so amazed by the potential of this idea I&#8217;m going to build it in the lab this weekend.</p>
<p style="text-align:left;">But until then, a teaser&#8230;</p>
<p style="text-align:left;"><a href="/wp-content/uploads/2012/10/teaser.png"><img class="aligncenter size-full wp-image-2421" title="teaser" alt="" src="/wp-content/uploads/2012/10/teaser.png" height="317" width="595" /></a></p>
<p style="text-align:left;">What if I told you there was already an overlay, freely available baked into a Microsoft technology that would allow you to overlay local storage in Hyper-V with RAM. A powerful API attached to it, and the ability to write specific files to the local disk, subverting the overlay only when needed?</p>
<ul>
<li>RAM disk type technology? &gt; yep</li>
<li>already available? &gt; yep</li>
<li>Powerful API? &gt; yep</li>
<li>already can spill to disk? &gt; yep</li>
</ul>
<p style="text-align:left;"><strong>Yep Yep Yep!</strong> check back in a few days.</p>
<p style="text-align:left;"><em>(If you know what it is already, keep it to yourself until I&#8217;ve gotten out of the lab!)</em></p>
<p><strong>What do you think?</strong></p>
<p>It doesn&#8217;t take a half baked enthusiast like me to see this potential and I&#8217;d be really eager to hear your comments on these approaches. If you would prefer to keep your comments offline, you can reach me on andrew@andrewmorgan.ie.</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2012/10/on-iops-shared-storage-and-a-fresh-idea-part-3-tying-it-all-together-in-the-stack/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ThinKiosk, works well on Thin Clients too, apparently!</title>
		<link>http://andrewmorgan.ie/2012/07/thinkiosk-works-well-on-thin-clients-too-apparently/</link>
		<comments>http://andrewmorgan.ie/2012/07/thinkiosk-works-well-on-thin-clients-too-apparently/#comments</comments>
		<pubDate>Sat, 28 Jul 2012 14:00:24 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[ThinKiosk]]></category>
		<category><![CDATA[VDI in a Box]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[Thin Client]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=2087</guid>
		<description><![CDATA[This was a bit of a revelation to me, but after thinking about it, it makes perfect sense and I feel a bit naive for overlooking this use case originally! Before I launch into my little discovery, here&#8217;s something I want to share: Since ThinKiosk was released in January, It&#8217;s been downloaded over 5,000 times and I have counted (only from those who have contacted me) that there are well over 10,000 instances running in customer environments to this day. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" src="/wp-content/uploads/2012/01/1326038033_tsclient.jpg?w=64&amp;h=64" alt="" width="64" height="64" />This was a bit of a revelation to me, but after thinking about it, it makes perfect sense and I feel a bit naive for overlooking this use case originally!</p>
<p>Before I launch into my little discovery, here&#8217;s something I want to share:</p>
<p>Since ThinKiosk was released in January, It&#8217;s been downloaded over 5,000 times and I have counted (only from those who have contacted me) that there are well over 10,000 instances running in customer environments to this day. Version 1 was released with just 700 lines of code and version 2.3 is just shy of 6,000. This is absolutely amazing to me, seeing an idea that I thought was a &#8220;Publish and Forget&#8221; blog post be embraced so passionately by the community. So for this, I just wanted to thank you guys for all your help, support and idea&#8217;s.</p>
<p>Anyway, back to it. While reviewing my emails recently, it struck me that there are many, many customers using ThinKiosk, not on old PC&#8217;s which I had written the program for, but on Thin Clients from top vendors&#8230; Now this doesn&#8217;t bother me one bit, as the more people using this tool the better, but why aren&#8217;t these people using Linux Thin Clients? I&#8217;m a large advocate of linux based thin clients in my day job, hell, they&#8217;re much cheaper, easier to manage and in most cases boot faster&#8230; Why choose Windows?</p>
<p><strong>So confused and curious, I decided to perform a little poll on Twitter:</strong></p>
<pre>"Monday morning poll, why do you choose Windows based thin clients?"</pre>
<p>And to my surprise, the feedback was great, below I&#8217;ve included the top reasons why community members choose Windows Thin Clients:</p>
<ul>
<li>HDX Redirection (Aero, Flash, Printing, Scanning)</li>
<li>Better feature set on Windows / Future proof for upcoming features.</li>
<li>Central Management via Active Directory / Group Policy.</li>
<li>Driver support (proxy card&#8217;s, smart card&#8217;s)</li>
<li>Familiar User Interface.</li>
<li>Familiar support platform / Unified support platform / No in house linux knowledge.</li>
</ul>
<p>So all this got me thinking, even with a list that long of why Windows based thin clients are preferred, <strong>why are these guys using ThinKiosk on out of box Thin Clients?</strong> Surely a paid for solution will be an end to end solution?</p>
<p>Well not really and why is this? <strong><em>Citrix receiver</em>.</strong></p>
<p>Citrix receiver for Windows (Previously the Program Neighbourhood agent) has been designed for <span style="text-decoration:underline;">published applications</span> running inside of the users local desktop session, not for Thin Clients connecting to virtual desktops and this is very clear when you consider that Receiver will by default place your published desktop on the start menu or desktop of your session.</p>
<p>This approach will normally lead you to have to log the user into the Thin Client as themselves, which you would prefer to be locked down in the first place. This also leaves you with the challenge of how do you log them off after their desktop session has ended!</p>
<p>Sure Citrix have added some additional desktop related functionality along the way (Desktop Viewer) but even desktop viewer itself is designed for running inside a users session allowing the user to jump back to the local device via the home button.. which can&#8217;t subsequently be locked down sadly.</p>
<p>Citrix did also release the desktop lock tool, which is good for very small use cases, but lacks the functionality of multiple desktops, workspace control, user customisations etc&#8230; Hence why ThinKiosk came to be!</p>
<p><strong>Thin Client vendor work around?</strong></p>
<p>Most Thin Client vendors will allow you to present glorified shortcuts to ICA files on the desktop of the Thin Client device, or auto launch them on boot&#8230; But this approach eliminates the benefits of Workspace Control, XenApp preferencial load balancing and requires trickery to get pass through authentication to work&#8230; Not only this but managing these shortcuts in a multi desktop and multi language environment where users roam from country to country is a complete administrative nightmare!</p>
<p><strong>But What about the web access products from Citrix?</strong></p>
<p>Now the obvious alternative to the Citrix Receiver is the Citrix&#8217;s web access platforms&#8230; The web interface or Cloud Gateway, unlike the desktop lock, or ica files offers multiple desktops, workspace control, load balancing policies etc. You can also leverage web interfaces built in password changing feature for the user with them having to be logged in to the local device and even allow them to reset their own password or unlock their account with Citrix Single Sign on!</p>
<p>And the best part is? the users will already be very familiar with this interface if you have an access gateway or Secure gateway for remote access.</p>
<p><strong>Aha! now it makes sense!</strong></p>
<p>I accidentally provided an easy to use, unified access approach across all windows devices&#8230;and I feel blind for not seeing it before!</p>
<p>What ThinKiosk also accidentally addressed, was allowing this web access platform to be leveraged with ease, security and minimal configuration&#8230; from any windows platform, Thin Client or old pc.</p>
<p>So in short, I think this was the success story for ThinKiosk I hadn&#8217;t considered&#8230; so much so that I&#8217;ve changed my own approach and mindset for Linux based Thin Clients too, locking down a local copy of  Firefox and presenting the Web Interface or Cloud Gateway.</p>
<p>So if you&#8217;re considering rolling in windows Thin Clients for your current or next VDI project&#8230; Consider using ThinKiosk, it&#8217;ll save you alot of pain, will work seamlessly with all your clients (thin or fat), and will save you time in management in the long run!</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2012/07/thinkiosk-works-well-on-thin-clients-too-apparently/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing ThreadLocker. A community tool for granular control of processes.</title>
		<link>http://andrewmorgan.ie/2012/05/introducing-threadlocker-a-community-tool-for-granular-control-of-processes/</link>
		<comments>http://andrewmorgan.ie/2012/05/introducing-threadlocker-a-community-tool-for-granular-control-of-processes/#comments</comments>
		<pubDate>Tue, 15 May 2012 12:47:06 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Remote Desktop Services (RDS)]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[Windows Server]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Performance Tool]]></category>
		<category><![CDATA[Processor Clamping]]></category>
		<category><![CDATA[Remote Desktop services]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=1861</guid>
		<description><![CDATA[&#160; Throughout this blog post, I&#8217;m going to be talking about Process Affinity and Process Priority. Understanding these definitions will help. I&#8217;m also only targetting server 2008 R2 and Windows 7 for this post. An issue I see time and time again in Virtual Desktop Infrastructure and Server Based Computing environments is CPU spikes cause sessions to pause and stick. These CPU spikes can be caused by overcommitment or overzealous application usage and the vendors (Citrix, ThreadMaster, RES, Appsense, etc) have come to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p><img class="alignright wp-image-3267 size-thumbnail" src="http://andrewmorgan.ie/wp-content/uploads/2014/11/Threadlocker-150x150.jpg" alt="Threadlocker" width="150" height="150" />Throughout this blog post, I&#8217;m going to be talking about <a href="http://en.wikipedia.org/wiki/Processor_affinity" target="_blank">Process Affinity</a> and <a href="http://en.wikipedia.org/wiki/Scheduling_(computing)#Windows" target="_blank">Process Priority</a>. Understanding these definitions will help. I&#8217;m also only targetting server 2008 R2 and Windows 7 for this post.</p>
<p>An issue I see time and time again in Virtual Desktop Infrastructure and Server Based Computing environments is CPU spikes cause sessions to pause and stick. These CPU spikes can be caused by overcommitment or overzealous application usage and the vendors (Citrix, ThreadMaster, RES, Appsense, etc) have come to the rescue frequently with tools to reduce these events from occurring.</p>
<p>The problem with these solutions (Appsense excluded) is they are reactive, I.E. they take a number of seconds to identify a spike and respond by dropping the priority of the process or reducing the Users time on the processor.</p>
<p>These few seconds of high usage, reduce the amount of time the users applications and desktop session can spend on the processor, this reduction of resources cause the VDI desktop of the user to be completely unusable during the pause and ultimately resulting in complaining from the user community. Worse yet, if this is an SBC environment you now have all users on that server locked out!</p>
<p>And all this may sound a bit over the top, but its very easy to reproduce. For example, create a Microsoft Excel sheet and attempt to vlookup over a few thousand cells and watch the processor get chewed up. In this example, yes a vLookup across that many cells would be better served from a server based solution, <strong>but what&#8217;s stopping your users doing it</strong>?&#8230; Exactly.</p>
<p><strong>Looking at SBC for a second:</strong></p>
<p>With Server 2008 R2, the Fair Share CPU scheduling feature really is best (free) solution out there for CPU Utilisation management. The processor scheduling is far better than the Citrix equivalent and they also offer a feature (albeit, it feels unfinished) called Windows System Resource Manager to configure the processor affinity along with Process soft rules for performance management.</p>
<p>By setting these extremely intensive Multi-threaded applications to an affinity, we can &#8220;Lock&#8221; these processes to only run on certain processor cores, allowing the remaining cores to rebalance the rest of the workload. This ultimately, leaves the users session still responsive even if the application no longer responds. Allowing the user to continue working in other application until the intensive process is complete.</p>
<p><strong>The problem with Windows System Resource Manager?</strong></p>
<ul>
<li>It&#8217;s a pain to configure on more than one system</li>
<li>It requires (yeuck) Windows Internal Database</li>
<li>It has been marked as &#8220;Depreciated&#8221; in Server 2012</li>
<li>If a user changes affinity, Resource manager doesn&#8217;t re adjust.</li>
<li>It still suffers from &#8220;pauses&#8221; or sluggishness when the Cpu is really being hammered.</li>
</ul>
<div>So we&#8217;re back at the start again, Fair Share CPU scheduling is still the best free product, but how can we cap processes to cpu&#8217;s or drop the priority of a &#8220;Known Intensive&#8221; processes like Excel to stop these pauses?</div>
<div></div>
<div><strong>What about VDI:</strong></div>
<div>Well, there is nothing out there that&#8217;s free, move along.</div>
<div></div>
<div><strong>End result:</strong></div>
<p>This was my dillema recently with both XenApp &amp; Xendesktop. Ultimately not happy to Pay for a solution, embrace a depreciated tool, or wash my hands of the problem, I decided to write my own tool, complimenting fair share CPU scheduling but allowing affinity and priority locking.</p>
<p><strong>Introducing Threadlocker:</strong></p>
<p>ThreadLocker has been written to help you target known problematic processes and deal with them pro actively.</p>
<p>Threadlocker also has the added benefit of dropping the priority of known grunty processes to idle, meaning the process will use as much CPU as it can, but any other higher priority process can interupt without sluggishness or pauses.</p>
<p><img class="aligncenter size-full wp-image-1863" title="window" src="/wp-content/uploads/2012/05/window.png" alt="" width="545" height="451" /></p>
<p>With ThreadLocker you can target these processes and set their Affinity number of processors they can run on:</p>
<p><img class="aligncenter size-full wp-image-1865" title="affinity" src="/wp-content/uploads/2012/05/affinity.png" alt="" width="308" height="311" /></p>
<p>Or their Process Priority to drop them out of the normal running context:</p>
<p><img class="aligncenter size-full wp-image-1866" title="priority" src="/wp-content/uploads/2012/05/priority.png" alt="" width="600" height="35" /></p>
<ul>
<li>Threadlocker is light weight and scalable.</li>
<li>Threadlocker works flawlessly with Cpu Fair Share Scheduling, so even if a process is &#8220;ThreadLocked&#8221; the users running those applications will fair share on the designated cores.</li>
<li>Threadlockers configuration is xml based and can be copied down to the machine with Startup script or Group Policy preferences.</li>
<li>Threadlocker can be used in VDI environments where no other free solution is available.</li>
<li>Threadlocker will re-adjust priority, or affinity if the devious user tries to remove the restriction.</li>
</ul>
<div></div>
<p><strong>Threadlocker has been successfully tested on the following platforms:</strong></p>
<ul>
<li>XenApp 6.5</li>
<li>Windows Server 2008 R2 Service Pack 1</li>
<li>Windows 7 x64 Service Pack 1</li>
</ul>
<div><strong>Requirements:</strong></div>
<ul>
<li>Threadlocker Requires .Net Framework 3.5 sp1</li>
</ul>
<p><strong>Download:</strong></p>
<p><a href="http://andrewmorgan.ie/2015/09/threadlocker-2-0/" target="_blank">Here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2012/05/introducing-threadlocker-a-community-tool-for-granular-control-of-processes/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>ThinKiosk 2.0 Release!</title>
		<link>http://andrewmorgan.ie/2012/04/thinkiosk-2-0-release/</link>
		<comments>http://andrewmorgan.ie/2012/04/thinkiosk-2-0-release/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:10:29 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[ThinKiosk]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[Web Interface]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[HDX]]></category>
		<category><![CDATA[SBC]]></category>
		<category><![CDATA[Thin Client]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[VDI in a Box]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=1833</guid>
		<description><![CDATA[It gives me great pleasure (and relief!) to announce ThinKiosk 2.0&#8217;s release. Version 2.0 is a complete rework of the code as I adopted some standards, a big thank you again to Pierre Marmignon for taking the time to point me in the right direction! ThinKiosk 2.0 is stuffed with new features and supported platforms, here&#8217;s a quick list: Enterprise Software Support options. New Supported VDI solutions. Power Management. Offline Configuration tool. Custom Title. Site selection list. Custom tools menu. Home Button. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" src="/wp-content/uploads/2012/01/1326038033_tsclient.jpg?w=64&amp;h=64&amp;h=64" alt="" width="64" height="64" />It gives me great pleasure (and relief!) to announce ThinKiosk 2.0&#8217;s release.</p>
<p>Version 2.0 is a complete rework of the code as I adopted some standards, a big thank you again to <a href="http://www.citrixtools.net/" target="_blank">Pierre Marmignon</a> for taking the time to point me in the right direction!</p>
<p><img class="alignright size-medium wp-image-1821" src="http://andrewmorgan.ie/wp-content/uploads/2012/04/preview-300x187.png" alt="Preview" width="300" height="187" /></p>
<p>ThinKiosk 2.0 is stuffed with new features and supported platforms, here&#8217;s a quick list:</p>
<ul>
<li>Enterprise Software Support options.</li>
<li>New Supported VDI solutions.</li>
<li>Power Management.</li>
<li>Offline Configuration tool.</li>
<li>Custom Title.</li>
<li>Site selection list.</li>
<li>Custom tools menu.</li>
<li>Home Button.</li>
<li>Local Printer management.</li>
<li>Desktop Mode (log off the web interface when a session starts).</li>
<li>Auto log off redirect.</li>
<li>Best practice group policies settings.</li>
<li>Group Policy to lock down everything!</li>
</ul>
<p>For full information on the changes, see the <a href="http://andrewmorgan.ie/thinkiosk/" target="_blank">About</a> and<a href="http://andrewmorgan.ie/thinkiosk/thinkiosk-features/" target="_blank"> Features</a> pages.</p>
<p>To grab a copy and start playing, go <a href="http://andrewmorgan.ie/thinkiosk/download/" target="_blank">here</a>: (note, recreate the group policies in a new OU)</p>
<p>A big thank you to my translators and Beta testers, there was just too many of you to mention!</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2012/04/thinkiosk-2-0-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
