<?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; Citrix</title>
	<atom:link href="http://andrewmorgan.ie/category/citrix/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>MDX ShareFile 4.4 on Android cannot access the file browser.</title>
		<link>http://andrewmorgan.ie/2016/03/mdx-sharefile-4-4-on-android-cannot-access-the-file-browser/</link>
		<comments>http://andrewmorgan.ie/2016/03/mdx-sharefile-4-4-on-android-cannot-access-the-file-browser/#comments</comments>
		<pubDate>Fri, 11 Mar 2016 17:31:48 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Sharefile]]></category>
		<category><![CDATA[XenMobile]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3673</guid>
		<description><![CDATA[Another quick hit little bug for you. Despite enabling Gallery access on the MDX App settings, for some reason on Android access to the upload from device page was being blocked when &#8220;document Exchange (open in)&#8221; was set to restricted. If you lifted this restriction, all worked well. but Nobody wants that. Anywho, with much pain and wandering around the Google Android Developer documentation, the following exception list allows you to restrict the App successfully while still allowing access to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A<img class="alignright size-full wp-image-2685" src="http://andrewmorgan.ie/wp-content/uploads/2013/08/sharefile.jpg" alt="sharefile" width="151" height="151" />nother quick hit little bug for you.</p>
<p>Despite enabling Gallery access on the MDX App settings, for some reason on Android access to the upload from device page was being blocked when &#8220;document Exchange (open in)&#8221; was set to restricted.</p>
<p>If you lifted this restriction, all worked well. but Nobody wants that.</p>
<p>Anywho, with much pain and wandering around the Google Android Developer documentation, the following exception list allows you to restrict the App successfully while still allowing access to local files for upload.</p>
<pre>{action=android.speech.tts.engine.CHECK_TTS_DATA}{action=android.app.action.SET_NEW_PASSWORD}{action=android.app.action.START_ENCRYPTION}{action=android.intent.action.GET_CONTENT}{action=android.intent.action.PICK}{action=android.intent.action.CHOOSER}{action=android.intent.action.OPEN_DOCUMENT}{action=android.intent.action.RINGTONE_PICKER}{action=android.intent.action.DIAL}{action=android.intent.action.MAIN}{action=android.media.action.IMAGE_CAPTURE}{action=android.provider.MediaStore.RECORD_SOUND}{action=android.media.action.VIDEO_CAPTURE}[action=android.intent.category.APP_GALLERY}</pre>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2016/03/mdx-sharefile-4-4-on-android-cannot-access-the-file-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>While using the ShareFile mobile applications, NTFS last modified date is updated each time a user accesses an NTFS connector</title>
		<link>http://andrewmorgan.ie/2016/03/while-using-the-sharefile-mobile-applications-ntfs-last-modified-date-is-updated-each-time-a-user-accesses-an-ntfs-connector/</link>
		<comments>http://andrewmorgan.ie/2016/03/while-using-the-sharefile-mobile-applications-ntfs-last-modified-date-is-updated-each-time-a-user-accesses-an-ntfs-connector/#comments</comments>
		<pubDate>Fri, 04 Mar 2016 13:58:35 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Sharefile]]></category>
		<category><![CDATA[XenMobile]]></category>
		<category><![CDATA[ShareFile]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3667</guid>
		<description><![CDATA[Here&#8217;s a weird little bug I caught in the wild while deploying XenMobile Enterprise. While browsing NTFS shares, published as connectors in the ShareFile Mobile clients, or the ShareFile desktop application for windows, all the directories in the directory you are currently browsing will have their &#8220;Last Modified&#8221; timestamp updated as below: To resolve this issue, open the following file: C:\inetpub\wwwroot\Citrix\StorageCenter\cifs\AppSettingsRelease.config Add the following line the config: &#60;add key="disable-folder-permission-verification" value="1" /&#62; Once added, recycle the StorageCenterAppPool in IIS as below: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s<img class="alignright size-full wp-image-2685" src="http://andrewmorgan.ie/wp-content/uploads/2013/08/sharefile.jpg" alt="sharefile" width="151" height="151" /> a weird little bug I caught in the wild while deploying XenMobile Enterprise. While browsing NTFS shares, published as connectors in the ShareFile Mobile clients, or the ShareFile desktop application for windows, all the directories in the directory you are currently browsing will have their &#8220;Last Modified&#8221; timestamp updated as below: <a href="http://andrewmorgan.ie/wp-content/uploads/2016/03/sharefilebug.png"><img class="aligncenter  wp-image-3668" src="http://andrewmorgan.ie/wp-content/uploads/2016/03/sharefilebug-300x195.png" alt="sharefilebug" width="483" height="314" /></a> <span id="more-3667"></span>To resolve this issue, open the following file:</p>
<pre>C:\inetpub\wwwroot\Citrix\<wbr />StorageCenter\cifs\<wbr />AppSettingsRelease.config</pre>
<p>Add the following line the config:</p>
<pre>&lt;add key="<span class="il">disable</span>-<span class="il">folder</span>-<wbr /><span class="il">permission</span>-<span class="il">verification</span>" value="1" /&gt;</pre>
<p>Once added, recycle the StorageCenterAppPool in IIS as below: <a href="http://andrewmorgan.ie/wp-content/uploads/2016/03/apppool.png"><img class="aligncenter size-full wp-image-3669" src="http://andrewmorgan.ie/wp-content/uploads/2016/03/apppool.png" alt="apppool" width="880" height="262" /></a>I have it on strong authority this will be resolved in a future build, but no promises. A big thank you to Dan Brinkmann, <span style="color: #555555;">George Christophi and Citrix Support for this fix.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2016/03/while-using-the-sharefile-mobile-applications-ntfs-last-modified-date-is-updated-each-time-a-user-accesses-an-ntfs-connector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UnSticking an AppDisk provisioning task in XenDesktop 7.x preview</title>
		<link>http://andrewmorgan.ie/2016/02/unsticking-an-appdisk-provisioning-task-in-xendesktop-7-x-preview/</link>
		<comments>http://andrewmorgan.ie/2016/02/unsticking-an-appdisk-provisioning-task-in-xendesktop-7-x-preview/#comments</comments>
		<pubDate>Tue, 09 Feb 2016 13:05:05 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[AppDisk]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3656</guid>
		<description><![CDATA[Here&#8217;s a wee little bug I&#8217;ve no idea how i created, but managed to clear it out anyway. After creating an AppDisk, it got a little stuck. I tried deleting the task and AppDisk but the disk just seemed to be stuck in the &#8220;creating&#8221; phase indefinately. To remove it, I had to do the following in Powershell from a delivery controller: ASNP Citrix* get-applibtask -active $true &#160; Once i had identified the TaskID, i ran: Stop-AppLibTask -TaskId 5be48afc-263b-454e-b3e9-5a2db6b966ff remove-AppLibTask [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a wee little bug I&#8217;ve no idea how i created, but managed to clear it out anyway.</p>
<p>After creating an AppDisk, it got a little stuck. I tried deleting the task and AppDisk but the disk just seemed to be stuck in the &#8220;creating&#8221; phase indefinately.</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2016/02/stick.png"><img class="aligncenter wp-image-3658 size-full" src="http://andrewmorgan.ie/wp-content/uploads/2016/02/stick.png" alt="stick" width="797" height="190" /></a></p>
<p><span id="more-3656"></span></p>
<p>To remove it, I had to do the following in Powershell from a delivery controller:</p>
<p><strong>ASNP Citrix*<del><br />
</del>get-applibtask -active $true</strong></p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2016/02/active.png"><img class="aligncenter wp-image-3659 size-full" src="http://andrewmorgan.ie/wp-content/uploads/2016/02/active.png" alt="active" width="624" height="427" /></a></p>
<p>&nbsp;</p>
<p>Once i had identified the TaskID, i ran:</p>
<p><strong>Stop-AppLibTask -TaskId 5be48afc-263b-454e-b3e9-5a2db6b966ff</strong><br />
<strong>remove-AppLibTask -TaskId 5be48afc-263b-454e-b3e9-5a2db6b966ff</strong></p>
<p>Now just one last thing to do!</p>
<p>&nbsp;</p>
<p><strong>get-applibappdisk</strong> and find the entry in the &#8220;creating&#8221; state:<a href="http://andrewmorgan.ie/wp-content/uploads/2016/02/AppLibDisk.png"><img class="aligncenter wp-image-3660 size-full" src="http://andrewmorgan.ie/wp-content/uploads/2016/02/AppLibDisk.png" alt="AppLibDisk" width="534" height="266" /></a>Now finish with a:</p>
<p><strong>remove-AppLibAppDisk -AppDiskUid d54681d3-6d0a-4259-b3ee-b90a899033bd</strong></p>
<p>using the DiskUid that you saw in the previous get-applibappdisk command.</p>
<p>Thats it!</p>
<h3>Update:</h3>
<p>if you find that the machine you usually use to capture app disks is no longer available. use the following command to release it:</p>
<p><strong>set-BrokerMachine -IsReserved $false -MachineName &lt;MachineName&gt;</strong></p>
<p><em>PS: I could have piped a lot of that, sure! but my mac pipe symbol is currently out of action so i did it the hard way. if you are the type who reads others blogs and leaves comments to improve the scripting, I&#8217;m sure there are new people on the Microsoft forums you could be bawking at right now.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2016/02/unsticking-an-appdisk-provisioning-task-in-xendesktop-7-x-preview/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cannot Log into XenMobile 10.3 Appliance after initial deployment.</title>
		<link>http://andrewmorgan.ie/2016/02/cannot-log-into-xenmobile-10-3-appliance-after-initial-deployment/</link>
		<comments>http://andrewmorgan.ie/2016/02/cannot-log-into-xenmobile-10-3-appliance-after-initial-deployment/#comments</comments>
		<pubDate>Fri, 05 Feb 2016 15:00:46 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[XenMobile]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3573</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<div class="vc_row wpb_row vc_row-fluid"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p><img class="alignright size-full wp-image-3574" src="http://andrewmorgan.ie/wp-content/uploads/2016/02/XM.png" alt="XM" width="170" height="170" />&lt;FYI, this was resolved in version 10.3.5&gt;</p>
<p>Here&#8217;s a horrendous bug I just came across in the field today while deploying a XenMobile 10.3 Proof of Concept with a customer.</p>
<p>Post the initial deployment of the OVF on vSphere, i ran the usual CLI wizard to IP the appliance and create the database. After restart the web &#8216;Administrator&#8217; user account just would not accept the password i provided during the wizard.</p>
<p>On closer inspection of the database by comparing with my own lab (never POC without a LAB!) , the &#8216;administrator&#8217; username was completely missing from the database under &#8216;dbo.security_principal&#8217;&#8230;<img class="aligncenter size-medium wp-image-3575" src="http://andrewmorgan.ie/wp-content/uploads/2016/02/dbo.security_principal-300x61.png" alt="dbo.security_principal" width="300" height="61" /></p>
<p>what the &#8216;crappity crap&#8217; went wrong I don&#8217;t know. but I reproduced it 4 times in numerous tests.</p>
<p>&nbsp;</p>
<p>I managed to find a workaround involving specifying a different username. I.E. delete your deployment and database and when the wizard prompts for the &#8216;administrator&#8217; name with default value, specify something different.</p>
<p>In my case I specified &#8216;zdmadmin&#8217; and this worked correctly allowing me to get the hell out in time for a Friday beverage.</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2016/02/working.png"><img class="aligncenter size-medium wp-image-3576" src="http://andrewmorgan.ie/wp-content/uploads/2016/02/working-300x68.png" alt="working" width="300" height="68" /></a></p>
<p>I hope this helps anyone else facing this issue!</p>
<p>&nbsp;</p>

		</div>
	</div>
</div></div></div>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2016/02/cannot-log-into-xenmobile-10-3-appliance-after-initial-deployment/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ThreadLocker 2.1 is available.</title>
		<link>http://andrewmorgan.ie/2015/12/threadlocker-2-1-is-available/</link>
		<comments>http://andrewmorgan.ie/2015/12/threadlocker-2-1-is-available/#comments</comments>
		<pubDate>Mon, 07 Dec 2015 12:14:47 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[ThreadLocker]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[CPU intelligence]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[VDI]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3567</guid>
		<description><![CDATA[Shortly after it&#8217;s initial launch and great reception! I&#8217;m proud to announce the general availability of ThreadLocker 2.1. This is a minor update but does include some new key features and functionality. What’s new in 2.1: ThreadLocker Priority: There is now the ability to assign a custom priority to a process when it has been ThreadLocked, allowing you to not only control which cores a ThreadLocked process runs on but also the priority it runs at. Included Processes Only: This new [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="row-fluid bottom-margin-no ">
<div class="span8">
<div class="inner-content">
<div class="column-text clearfix"><img class="alignright size-full wp-image-3397" src="http://andrewmorgan.ie/wp-content/uploads/2015/03/Threadlocker-128x128.png" alt="Threadlocker 128x128" width="128" height="128" />Shortly after it&#8217;s initial launch and great reception! I&#8217;m proud to announce the general availability of ThreadLocker 2.1.</div>
<div class="column-text clearfix"></div>
<div class="column-text clearfix">This is a minor update but does include some new key features and functionality.</div>
</div>
</div>
</div>
<div class="row-fluid bottom-margin-no ">
<div class="span10">
<div class="inner-content">
<div class="column-text clearfix">
<h3>What’s new in 2.1:</h3>
<h5>ThreadLocker Priority:</h5>
<p>There is now the ability to assign a custom priority to a process when it has been ThreadLocked, allowing you to not only control which cores a ThreadLocked process runs on but also the priority it runs at.</p>
<h5>Included Processes Only:</h5>
<p>This new option allows you to specify which processes you want to apply ThreadLocking to. Previously the Enterprise Edition could apply ThreadLocking to any running process on the system but now you can now control this on a per process basis.</p>
<h5>Logging:</h5>
<p>Certain ‘error’ events were being incorrectly logged to the Windows Event log, these have now been removed.</p>
<h3>Availability</h3>
<p>ThreadLocker 2.1 is available from today and can be found at:</p>
<p><a href="http://www.thinscaletechnology.com/threadlocker">http://www.thinscaletechnology.com/threadlocker</a>.</p>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2015/12/threadlocker-2-1-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Citrix Receiver for Mac and British keyboard tomfoolery.</title>
		<link>http://andrewmorgan.ie/2015/10/citrix-receiver-for-mac-and-british-keyboard-tomfoolery/</link>
		<comments>http://andrewmorgan.ie/2015/10/citrix-receiver-for-mac-and-british-keyboard-tomfoolery/#comments</comments>
		<pubDate>Mon, 05 Oct 2015 20:23:05 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[British]]></category>
		<category><![CDATA[Keyboard]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Receiver]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3537</guid>
		<description><![CDATA[Tomfoolery? indeed! Here is a problem that drove me nuts on a daily basis and I&#8217;m delighted to report the great Simon Frost and Dustin Norman of Citrix heard my cries of frustration and kindly resolved my issue outright. Stand up gentlemen they are! My issue was simple, as a developer and powershell zealot, I regularly used the pipe Symbol (&#124;) in anger. Well in anger i mean, I was literally angry as despite pressing the frickin pipe key, an [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-3538" src="http://andrewmorgan.ie/wp-content/uploads/2015/10/receiver-icon.png" alt="receiver-icon" width="128" height="128" />Tomfoolery? indeed! Here is a problem that drove me nuts on a daily basis and I&#8217;m delighted to report the great Simon Frost and Dustin Norman of Citrix heard my cries of frustration and kindly resolved my issue outright. Stand up gentlemen they are!</p>
<p>My issue was simple, as a developer and powershell zealot, I regularly used the pipe Symbol (|) in anger. Well in anger i mean, I was literally angry as despite pressing the frickin pipe key, an imposter appeared in the remote console&#8230;</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2015/10/pipewoes.png"><img class="aligncenter wp-image-3539 size-full" src="http://andrewmorgan.ie/wp-content/uploads/2015/10/pipewoes.png" alt="pipewoes" width="868" height="108" /></a></p>
<ul>
<li>Looked like a pipe? Yes!</li>
<li>Acted like a pipe? NO!</li>
</ul>
<p>So anyway, being a Citrix CTP has it&#8217;s benefits, I reached out to the aforementioned blokes and sure enough a few emails were exchanged and poof! issue resolved.</p>
<p>To paraphrase Dustins email:</p>
<ol>
<li>Open ~/Library/Application Support/Citrix Receiver/Config in a text editor</li>
<li>Find the KeyboardLayout setting in the [WFClient] section</li>
<li>Change KeyboardLayout to: British</li>
<li>Save the file</li>
<li>Launch the session</li>
</ol>
<p>Tada! Pipe back to normal. Thanks again Simon and Dustin.</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2015/10/citrix-receiver-for-mac-and-british-keyboard-tomfoolery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ThreadLocker 2.0 is live!</title>
		<link>http://andrewmorgan.ie/2015/09/threadlocker-2-0/</link>
		<comments>http://andrewmorgan.ie/2015/09/threadlocker-2-0/#comments</comments>
		<pubDate>Mon, 21 Sep 2015 13:00:11 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Server Based Computing]]></category>
		<category><![CDATA[ThreadLocker]]></category>
		<category><![CDATA[Virtual Desktop Infrastructure]]></category>
		<category><![CDATA[VMware Horizon]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Cpu Clamping]]></category>
		<category><![CDATA[CPU Optimisation]]></category>
		<category><![CDATA[Terminal Services]]></category>
		<category><![CDATA[VDI]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3394</guid>
		<description><![CDATA[Back in 2012 I wrote a utility called &#8220;ThreadLocker&#8221; for dealing with CPU heavy processes or multi threaded processes that have a nasty tendency to cause sluggish performance or even hangs in shared computing environments. You can read all about the original concept here. My good friend and fellow CTP Barry Schiffer also wrote a really good article about the need for a product like ThreadLocker here. &#160; Some history: In essence, ThreadLocker was a utility for both shared and 1:1 desktop [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-3397" src="http://andrewmorgan.ie/wp-content/uploads/2015/03/Threadlocker-128x128.png" alt="Threadlocker 128x128" width="128" height="128" />Back in 2012 I wrote a utility called &#8220;<a href="http://andrewmorgan.ie/2012/05/introducing-threadlocker-a-community-tool-for-granular-control-of-processes/">ThreadLocker</a>&#8221; for dealing with CPU heavy processes or multi threaded processes that have a nasty tendency to cause sluggish performance or even hangs in shared computing environments.</p>
<p>You can read all about the original concept <a href="http://andrewmorgan.ie/2012/05/introducing-threadlocker-a-community-tool-for-granular-control-of-processes/">here</a>. My good friend and fellow CTP Barry Schiffer also wrote a really good article about the need for a product like ThreadLocker <a href="http://www.barryschiffer.com/cpu-scheduling-and-memory-optimizations-solutions-compared-part-1-of-2-cpu/#more-673">here</a>.</p>
<p>&nbsp;</p>
<p><strong>Some history:</strong></p>
<p>In essence, ThreadLocker was a utility for both shared and 1:1 desktop environments. It allowed you to layer in rules for processes that had a history of high or discruptive CPU usage, to protect the other users (in a shared environment) or to protect other running processes and the users interface (explorer.exe) while a large compute job was occurring.</p>
<p>ThreadLocker exploded with popularity and has received well over 100,000 downloads in the last three years. Alike ThinKiosk, ThreadLocker is a tool I regularly come across in my customers environments while consulting and it always suprised me with it&#8217;s uptake and popularity. I have observed ThreadLocker in VDI, SBC and even on stand alone workstations with great levels of success.</p>
<p>&nbsp;</p>
<p><strong>Moving on:</strong></p>
<p>One of the frustrations I had with ThreadLocker, was any .NET based language (c#, vb.net, etc.) was never quick enough to be able to add an intelligent aspect to the utility without actually making CPU usage worse by implementing. ThreadLocker 1.0 relied on static rules and any new processes would have to be observed and added.</p>
<p>Recently David Coombes and I undertook the side project of redesigning ThreadLocker to run in c++, adding the raw speed we needed to be able to make intelligent decisions based on CPU usage and react in a fraction of a second to a sudden CPU spike. ThreadLocker 2.0 was designed to specifically tackle two issues:</p>
<ul>
<li>Processes comsuming a large % of CPU and is multithreaded.</li>
<li>Many buggy or heavy processes, each consuming a core each.</li>
</ul>
<p>We didnt want to tackle this with the approach of many others, where they&#8217;ll pause and resume threads many times a second creating a &#8220;SawTooth&#8221; effect on the processes CPU usage. We wanted the processes to run as fast as they need up to a certain threshold and only be restricted when contention is likely.</p>
<p>Having experienced other vendors approaches where process priority is dropped, many times this simply does not cut it as a heavy process, even at idle priority, will cause the other users and processes to feel slow and sluggish.</p>
<p><strong>Why is ThreadLocker different?</strong></p>
<p>With ThreadLocker 2.0, you can elect a percentage of your CPU cores that ThreadLocker can use for isolating these processes. When a process violates the ThreadLocking criteria, they are locked into these subset of cores to contend with any other processes that are also ThreadLocked, leaving well behaved processes to be able to take advantage of all cores in system. Once they start to behave again and do so for a certain amount of time, the processes are dropped back into the &#8220;wild&#8221; unless they decide to misbehave again.</p>
<p>This approach is extremely fast (ThreadLocker consumes less CPU than Microsoft&#8217;s own Task Manager) from a processing point of view and also has the benefit of allowing users to multitask with other applications while, for example, Excel hammers the ThreadLocking cores during a calculation.</p>
<p>The end result has been fantastic. Threadlocker can be installed and up and running in seconds. There is no longer a requirement for static rules and out of box, all aspects of the logic can be tuned to suit your environment, but more than likely wont be needed.</p>
<p><strong> Demo Video:</strong></p>
<p>&nbsp;</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='625' height='382' src='http://www.youtube.com/embed/ovULHeaZnrI?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p>
<p><strong><br />
Availability</strong></p>
<p>We are proud to announce the general availability of ThreadLocker 2.0 and more information can be found on our website at <a href="http://www.thinscaletechnology.com/threadlocker">http://www.thinscaletechnology.com/threadlocker</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2015/09/threadlocker-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Free Tool: Citrix Director Notification Service</title>
		<link>http://andrewmorgan.ie/2015/08/new-free-tool-citrix-director-notification-service/</link>
		<comments>http://andrewmorgan.ie/2015/08/new-free-tool-citrix-director-notification-service/#comments</comments>
		<pubDate>Mon, 17 Aug 2015 19:59:53 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[Director]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Notification]]></category>
		<category><![CDATA[xenapp]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3450</guid>
		<description><![CDATA[Citrix Director for XenApp and XenDesktop can be a great utility for information about your Application / Desktop virtualisation environment. In Director you can find a wealth of information about the provisioned assets, the Controller, Licensing and Hypervisor status and the current running resources. One area it&#8217;s always lacked is real time alerting. In order to really know what&#8217;s going on in your environment you need to be logged into director and watching. This is less than ideal and few [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-3451" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/DirectorNotification-150x150.jpg" alt="DirectorNotification" width="150" height="150" />Citrix Director for XenApp and XenDesktop can be a great utility for information about your Application / Desktop virtualisation environment. In Director you can find a wealth of information about the provisioned assets, the Controller, Licensing and Hypervisor status and the current running resources.</p>
<p>One area it&#8217;s always lacked is real time alerting. In order to really know what&#8217;s going on in your environment you need to be logged into director and watching. This is less than ideal and few monitoring vendors have endeavored to actually pull this data into their own solutions.</p>
<p>With the help of Rachel Berry, Prateek Kansal and Sridhar Mullapudi from Citrix. I set about diving into the logic and monitoring options within the FMA architecture. Citrix did a great job here and most if not all of it was readily available in PowerShell and oData. So, with the help of Citrix and a little bit of hard work, I&#8217;m very pleased to announce my latest free tool!</p>
<p><span id="more-3450"></span></p>
<h3>About the tool:</h3>
<p>The Citrix Director Notification service sits on an edge server as a service (or local to the delivery controller) and periodically checks the health of:</p>
<ul>
<li>Citrix Licensing.</li>
<li>Database Connections.</li>
<li>Broker Service.</li>
<li>Core Services.</li>
<li>Hypervisor Connections.</li>
</ul>
<p>And if any of these items fall out of bounds, an SMTP alert is sent to the mailbox of your choice for action. The tool will also send &#8220;All Clear&#8221; emails when these items are resolved, ensuring you are aware when the service has resumed a healthy state, neat huh?</p>
<p>An example of one of these alarm emails can be seen below:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2015/08/license.png"><img class="aligncenter wp-image-3452 size-medium" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/license-240x300.png" alt="license" width="240" height="300" /></a></p>
<h3>Hypervisor Alerts, too!</h3>
<p>Did you know that the Citrix XenDesktop and XenApp 7.x suite also keep track of Hypervisor alarms? It was news to me! Any-who, if you are lucky enough to be running XenServer or vSphere. The director Notification service can be configured to also catch these alarms, allowing you to also be alerted.</p>
<p>An example of a Hypervisor alarm is below:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2015/08/hypervisor-alert.png"><img class="aligncenter size-medium wp-image-3453" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/hypervisor-alert-300x184.png" alt="hypervisor alert" width="300" height="184" /></a></p>
<h3>Installation guide:</h3>
<p>Below you&#8217;ll find the steps to get the director notification service installed:</p>
<h5> Download:</h5>
<p><a href="https://app.box.com/s/wfgac80mxdh74i36cqkcn1ktcwx2xw6b">Director Notification Service 1.0.5</a></p>
<h5>Setup:</h5>
<ul>
<li>Download the Tool from the above URL.</li>
<li>Install the service on a server running Windows Server 2008 R2 or above with .Net Framework 4.</li>
</ul>
<h5>Provisioning the Account:</h5>
<p>The service account maintains a WinRM remote session to your delivery controllers and performs checks on a frequency you determine. Setting up this account is the meat of the install.</p>
<ul>
<li>Create an Active Directory Service account for monitoring director (this is needed later).</li>
<li>Copy the XDServiceAccountProvision.ps1 file from the installation directory and run this script on all delivery controllers to automatically create the correct permissions for your service account.</li>
<li>If you&#8217;re curious, read the script. A copy is below if you feel like doing it manually.</li>
</ul>
<h5>Using the configuration tool:</h5>
<p><img class="aligncenter size-full wp-image-3456" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/Config.png" alt="Config" width="249" height="202" /></p>
<p>You&#8217;ll find the configuration utility on the start menu, under Direct Notify Configuration (this tool requires admin permissions).</p>
<p>Once open, configure the tool to suit your environment:</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2015/08/config-tool.png"><img class="aligncenter wp-image-3457 size-full" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/config-tool.png" alt="config tool" width="510" height="467" /></a></p>
<p style="text-align: center;"><em>Ensure to use the test buttons.</em></p>
<p style="text-align: left;">Once happy all is working. Start or restart the &#8220;Director Notification Service&#8221;.</p>
<p style="text-align: left;"><a href="http://andrewmorgan.ie/wp-content/uploads/2015/08/service.png"><img class="aligncenter size-medium wp-image-3459" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/service-300x127.png" alt="service" width="300" height="127" /></a></p>
<h4>Advanced Logging:</h4>
<p>A debugging option exists in the configuration tool, this will log to a trace.log in the installation directory of the machine. If you have issues, first enable this and review the log.</p>
<h3>Provisioning Script contents:</h3>
<pre>write-warning "Before proceeding, Ensure you have: "
write-warning "1: Created a service account for monitoring XenDesktop."
write-warning "2: Ensure you have local administrative access to the local machine."
write-warning "3: Ensure this powershell instance is elevated."
write-warning "4: Ensure you have Administrative access to the XenDesktop site."
read-host "Press Any Key To Continue"

asnp citrix* -ea 0

$domain=Read-Host -Prompt "enter domain name the monitoring user is a member of: e.g. lab"
$username=Read-Host -Prompt "enter monitoring user name: e.g. john.doe"
$group="Remote Management Users"

if(!(Get-AdminRole "Direct Notify Role")){
#create new administrative role
new-adminrole -Name "Direct Notify Role" -Description "used for Direct Notify Service"
Add-AdminPermission -Role "Direct Notify Role" -Permission Configuration_Read
Add-AdminPermission -Role "Direct Notify Role" -Permission Configuration_Write # needed for some unknown reason, thanks citrix ¯\_(ツ)_/¯
Add-AdminPermission -Role "Direct Notify Role" -Permission EnvTest
Add-AdminPermission -Role "Direct Notify Role" -Permission Global_Read
Add-AdminPermission -Role "Direct Notify Role" -Permission Hosts_Read
Add-AdminPermission -Role "Direct Notify Role" -Permission Licensing_Read

#create administrator
New-AdminAdministrator -Name $domain\$username
add-adminright -Administrator $domain\$username -Role "Direct Notify Role" -Scope all
}
#configure remote management if not configured
winrm quickconfig -quiet

#add the monitoring user to the remote management group
([ADSI]"WinNT://$env:computername/$Group,group").psbase.Invoke("Add",([ADSI]"WinNT://$domain/$username").path)</pre>
<h3> Fine Print:</h3>
<p>Just a few things to be aware of:</p>
<h6>Application Dependencies:</h6>
<ul>
<li>The Notification service requires .Net 4.0</li>
<li>PowerShell Remoting must be enabled on the Broker Servers</li>
<li>A service account should be created to monitor the brokers (included in the script).</li>
</ul>
<h6>Tested on:</h6>
<ul>
<li>Citrix XenDesktop 7.6.</li>
<li>(Previous versions should work fine too.)</li>
</ul>
<h3>Support:</h3>
<p>Drop me an email on andrew@andrewmorgan.ie if you have any trouble!</p>
<p>Enjoy and i hope this is very useful to you.</p>
<h3>Future plans:</h3>
<p>I&#8217;ll be diving into the oData values in the Citrix monitoring database in the next itteration. This work has already begun and will be updated soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2015/08/new-free-tool-citrix-director-notification-service/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Accurately checking the Citrix PVS &#8220;cache in Ram, Overflow to disk&#8221; RAM cache size</title>
		<link>http://andrewmorgan.ie/2015/08/accurately-checking-the-citrix-pvs-cache-in-ram-overflow-to-disk-ram-cache-size/</link>
		<comments>http://andrewmorgan.ie/2015/08/accurately-checking-the-citrix-pvs-cache-in-ram-overflow-to-disk-ram-cache-size/#comments</comments>
		<pubDate>Fri, 07 Aug 2015 14:23:18 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[PowerShell Scripting]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Provisioning Services]]></category>
		<category><![CDATA[RAM]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3443</guid>
		<description><![CDATA[Citrix Provisioning services &#8220;Cache in RAM, overflow to disk&#8221;, even with it&#8217;s challenges is something I&#8217;ve always felt was a great idea, hell, I foresaw it&#8217;s implementation back in 2012! Not withstanding the issues that can occur when the cache is heavily in use, it&#8217;s a great piece of technology. One of the features you see on twitter repeatedly is trying to report on the exact size of the PVS cache in RAM. Many blogs and scripts (Matt&#8217;s here, as [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright  wp-image-3444" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/Citrix_Provisioning_Services_Implementation.png" alt="Citrix_Provisioning_Services_Implementation" width="86" height="86" />Citrix Provisioning services &#8220;Cache in RAM, overflow to disk&#8221;, even with it&#8217;s challenges is something I&#8217;ve always felt was a great idea, hell, I foresaw it&#8217;s implementation <a href="http://andrewmorgan.ie/2012/10/on-e2e-geek-speak-iops-shared-storage-and-a-fresh-idea-part-1/" target="_blank">back in 2012</a>!</p>
<p>Not withstanding the issues that can occur when the cache is heavily in use, it&#8217;s a great piece of technology. One of the features you see on twitter repeatedly is trying to report on the exact size of the PVS cache in RAM.</p>
<p>Many blogs and scripts (Matt&#8217;s <a href="http://mattnics.com/?p=414" target="_blank">here</a>, as an example) will take the raw performance counter details for Non Paged Pool memory and assume this is the size of the cache. This is faulty logic, but close enough. It&#8217;s like looking into a can of beans and trying to determine which one gave you gas.</p>
<p>The Non paged Pool is a collective pool of memory used by the system that guarantee&#8217;s the services using it (drivers, etc) that the contents will never reach the disk and will always be maintained in memory. As an example, imagine you created your own disk driver, but the disk driver tried to reference it&#8217;s memory and it had since been flushed to the disk&#8230;. Chicken and Egg stuff!</p>
<p>Microsoft has a fairly clear description <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa965226(v=vs.85).aspx" target="_blank">here</a>:</p>
<pre style="text-align: center;">The memory manager creates the following memory pools that the system uses to allocate memory: nonpaged pool and paged pool. Both memory pools are located in the region of the address space that is reserved for the system and mapped into the virtual address space of each process. <strong>The nonpaged pool consists of virtual memory addresses that are guaranteed to reside in physical memory as long as the corresponding kernel objects are allocated.</strong></pre>
<p>So with this in mind, taking a total of the Non Paged Pool memory and assuming it&#8217;s PVS is &#8220;OK&#8221;&#8230; But not accurate. Many other sources can bloat that memory cache, particularly in x64 systems where limits on these pools are now enormous compared to the tiny pools we had to deal with in x86 architectures.</p>
<p>Nerdy digression aside, if you REALLY want accurate information on what&#8217;s going on inside of this pool. You need to grab a copy of Poolmon from the <a href="https://msdn.microsoft.com/library/windows/hardware/ff557573" target="_blank">Windows Driver Kit (WDK)</a>. Download the WDK, install it and you&#8217;ll find your poolmon in:</p>
<p>C:\Program Files (x86)\Windows Kits\10\Tools\x64\poolmon.exe</p>
<p>Once you have a copy, fire up poolmon and you&#8217;ll see in all their glory.</p>
<p><a href="http://andrewmorgan.ie/wp-content/uploads/2015/08/pvs.png"><img class="aligncenter size-full wp-image-3447" src="http://andrewmorgan.ie/wp-content/uploads/2015/08/pvs.png" alt="pvs" width="1118" height="508" /></a></p>
<p><em>Pro tip: Press &#8220;p&#8221; once to sort my non pooled, then &#8220;b&#8221; to sort by bytes used.</em></p>
<p>Each pool tag and the respective space they are using. Interestingly, the Citrix caching technology seems to use the &#8220;VhdR&#8221; pooltag allocation. There&#8217;s also a Microsoft Pool tag for this (http://blogs.technet.com/b/yongrhee/archive/2009/06/24/pool-tag-list.aspx) but the case sensitivity differences between VhdR and VHDr may make all the difference.</p>
<p>I did reach out to Citrix on this one, but they didn&#8217;t provide any further insight.</p>
<p>Any-who, if you want to see the size of your PVS cache accurately? Use PoolMon. Here&#8217;s a quick script using poolmon to get the GB value back:</p>
<pre class="p1"><span class="s1">$poolmonpath</span><span class="s2">=</span> <span class="s4">"d:\poolmon.exe"
</span><span class="s1">$poollog</span><span class="s2">=</span> <span class="s4">"$env:temp\poolmon.txt"
</span><span class="s5">if</span><span class="s3">(</span><span class="s4">test-path</span> <span class="s1">$poollog</span><span class="s3">){</span><span class="s4">Remove-Item</span> <span class="s1">$poollog</span><span class="s3">}
</span><span class="s6">Start-Process</span><span class="s4">-FilePath</span> <span class="s1">$poolmonpath</span> <span class="s4">-ArgumentList</span> <span class="s7">"-n $poollog"</span> <span class="s4">-Wait
</span><span class="s4">((</span><span class="s6">Get-Content</span> <span class="s1">$poollog</span> <span class="s2">|</span> <span class="s6">?</span><span class="s4"> {</span><span class="s1">$_</span> <span class="s2">-like</span> <span class="s7">"*VhdR*"</span><span class="s4">}) </span><span class="s2">-split</span> <span class="s7">"\s+"</span><span class="s4">)</span><span class="s2">[</span><span class="s8">6</span><span class="s2">]</span> <span class="s2">/</span><span class="s8">1gb
</span><span class="s5">if</span><span class="s3">(</span><span class="s4">test-path</span> <span class="s1">$poollog</span><span class="s3">){</span><span class="s4">Remove-Item</span> <span class="s1">$poollog</span><span class="s3">}</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2015/08/accurately-checking-the-citrix-pvs-cache-in-ram-overflow-to-disk-ram-cache-size/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Update to Caffeine for Receiver</title>
		<link>http://andrewmorgan.ie/2015/02/update-to-caffeine-for-receiver/</link>
		<comments>http://andrewmorgan.ie/2015/02/update-to-caffeine-for-receiver/#comments</comments>
		<pubDate>Tue, 03 Feb 2015 12:06:33 +0000</pubDate>
		<dc:creator><![CDATA[andyjmorgan]]></dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenServer]]></category>
		<category><![CDATA[Receiver]]></category>
		<category><![CDATA[xenapp]]></category>
		<category><![CDATA[XenDesktop]]></category>

		<guid isPermaLink="false">http://andrewmorgan.ie/?p=3377</guid>
		<description><![CDATA[Just a quick note to say I&#8217;ve finally updated Caffeine for Receiver to support receiver 4.2. I had neglected to update this tool for a while, until I actually needed it and the remote screen saver annoyed the hell out of me. necessity is the mother of product maintenance it seems! Anyway, I digress, check the original blog post here for the downloads and configuration options. In other news, if you&#8217;re familiar with ThreadLocker, watch this space, it&#8217;s about to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-3378" src="http://andrewmorgan.ie/wp-content/uploads/2015/02/Caffine-2-150x150.jpg" alt="Caffine 2" width="150" height="150" />Just a quick note to say I&#8217;ve <strong>finally</strong> updated <a href="http://andrewmorgan.ie/2012/07/24/caffeine-for-citrix-receiver/" target="_blank">Caffeine for Receiver </a>to support receiver 4.2.</p>
<p>I had neglected to update this tool for a while, until I actually needed it and the remote screen saver annoyed the hell out of me. necessity is the mother of product maintenance it seems!</p>
<p>Anyway, I digress, check the original blog post <a href="http://andrewmorgan.ie/2012/07/24/caffeine-for-citrix-receiver/" target="_blank">here</a> for the downloads and configuration options.</p>
<p>In other news, if you&#8217;re familiar with <a href="http://andrewmorgan.ie/2012/05/introducing-threadlocker-a-community-tool-for-granular-control-of-processes/" target="_blank">ThreadLocker</a>, watch this space, it&#8217;s about to get a serious overhaul!</p>
<p>PS: stop asking me for a mac client, it&#8217;s not possible as there is no ICA SDK / API for mac.</p>
]]></content:encoded>
			<wfw:commentRss>http://andrewmorgan.ie/2015/02/update-to-caffeine-for-receiver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
