<?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>Tristan Watkins on IT Infrastructure &#187; Windows</title>
	<atom:link href="http://tristanwatkins.com/index.php/category/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://tristanwatkins.com</link>
	<description>Technical guidance for SharePoint, Cloud Services, Windows and more</description>
	<lastBuildDate>Fri, 21 Oct 2011 23:33:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Beware of Multiple Boots with OEM Protection Tools</title>
		<link>http://tristanwatkins.com/index.php/beware-multiple-boots-oem-protection-tools/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=beware-multiple-boots-oem-protection-tools</link>
		<comments>http://tristanwatkins.com/index.php/beware-multiple-boots-oem-protection-tools/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 23:13:34 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Business Continuity]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[dual-boot]]></category>
		<category><![CDATA[GParted]]></category>
		<category><![CDATA[GRUB]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[MBR]]></category>
		<category><![CDATA[OEM]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1955</guid>
		<description><![CDATA[I aim to keep this post reasonably quick, because I&#8217;ve lost enough time to this issue already and I want to get some other posts written up soon, but this is one of those things that I should probably help raise awareness of. I foresee that this could become more of an issue in future [...]]]></description>
			<content:encoded><![CDATA[<p>I aim to keep this post reasonably quick, because I&#8217;ve lost enough time to this issue already and I want to get some other posts written up soon, but this is one of those things that I should probably help raise awareness of. I foresee that this could become more of an issue in future if take-up for Native Boot from VHD solutions rises, or as people run demos from bootable removable media, etc.</p>
<p><span id="more-1955"></span>I&#8217;ve recently persuaded myself not to purchase a new laptop, trying to get another year out of my HP Compaq nx7300 (running 32-bit Windows XP), which I purchased about four years ago. My home computing needs are fairly meagre, but I recently spent £23 upgrading my RAM to 4GB to see if I could get a strained instance of my SharePoint 2010 development environment running at home as needed. To this end, I decided I would clear enough System drive space to make room for Ubuntu (x64) and run my VMs from Virtual Box in the other partition, in order to get the most memory possible to my VMs. Like I said, strained…</p>
<p>So I loaded up the Ubuntu installation CD and launched GParted, cleared ~10GB for the OS and another 5GB for the SWAP partition, then installed. All went well, I installed VirtualBox, rebooted in to XP to make sure everything was cool over there. Went back in to Ubuntu to get a bit more familiar with the new version then shut down for the night. The next evening when I started up I was confronted with an ominous message:</p>
<blockquote><p>No module name found<br />
Aborted. Press any key to exit.</p>
<p>Non-System disk or disk error.</p></blockquote>
<p>Not good. I checked I was booting to the right drive, then ran the Ubuntu installation disk again, which includes a no-installation trial option that runs entirely from CD/memory. I loaded up GParted again, checked all of the partitions, didn&#8217;t notice anything strange and then started searching for an answer. Luckily I dug a bit deeper than the first few results which recommended a full re-install of both boots. While that might have fixed the problem, it wouldn&#8217;t have been very desirable.</p>
<p>Eventually I found this Ubuntu forum thread, <a href="http://ubuntuforums.org/showthread.php?t=1343851&amp;page=2">Grub &#8220;no module name found&#8221; after reboot</a>,<strong> </strong>which points to this (in my opinion) definitive SourceForge article on <a href="http://sourceforge.net/apps/mediawiki/bootinfoscript/index.php?title=Boot_Problems:Windows_Writes_To_MBR">Boot Problems:Windows Writes To MBR</a>. While I would argue the problem actually has very little to do with Windows, it identifies the cause and four possible solutions. To summarise, the Windows partition contains software that writes to the <a href="http://en.wikipedia.org/wiki/Master_boot_record">Master Boot Record</a>, which in turn corrupts <a href="https://help.ubuntu.com/community/GrubHowto">GRUB</a>, the Ubuntu bootloader. I say this has little to do with Windows because in all of the cases listed in this article and on the Ubuntu fora, the problem is caused by something that gets <em>beneath</em> Windows, like OEM &#8220;protection&#8221; tools, for lack of a better description. Here&#8217;s the list from SourceForge:</p>
<ul>
<li>HP: Credential Manager, Recovery Manager, ProtectTools, PC Angel, Backup and Recovery</li>
<li>Dell: Recovery Tools, DataSafe Local Backup,</li>
<li>Samsung: Recovery Solution III</li>
<li>McAfee Security Center ???</li>
</ul>
<p>This is all stuff that ships with your machine. I&#8217;ve always been distrustful of this software but I never got around to removing the HP tools on this laptop. Eventually I got worried that removing the credential management software might lock me out of the machine. Fairly irrational, I grant you, but as I say, I deeply distrust most things in Windows that appear to be getting beneath it and so I wind up avoiding them, even if they&#8217;re just sitting there doing nothing.</p>
<p>Back to the problem at hand, I eventually managed to restore the bootloader by following the first recommended solution from the SourceForge article – I uninstalled all of the HP software (except for Wireless/Bluetooth). However, there was one fiddle that&#8217;s worth noting. The <em>HP Backup and Recovery Manager</em> software did not have an entry in <em>Add/Remove Programs</em> and there was no uninstall option in the program or the Start menu. A quick search returned this recommendation, which launched the installer and started removing the tool.</p>
<pre class="brush: plain; title: ;">RunDll32 C:\PROGRA~1\COMMON~1\INSTAL~1\PROFES~1\RunTime\10&#92;&#48;1\Intel32\Ctor.dll,LaunchSetup &quot;C:\Program Files\InstallShield Installation Information\{3F9F7336-6DF8-476F-ABF6-C70A17FAF619}\setup.exe&quot; -l0x9 -uninst –removeonly</pre>
<p>After rebooting into the Ubuntu installation media again I ran the recommended GRUB fix-up.</p>
<pre class="brush: plain; title: ;">sudo mount /dev/sda6 /mnt
sudo grub-install --recheck --root-directory=/mnt /dev/sda</pre>
<p>As recommended in the posts above, make sure &#8220;sda6&#8243; and &#8220;sda&#8221; refer to the correct targets. Basically, make sure to familiarise yourself with those posts thoroughly before doing anything, and of source I present this without warranty.</p>
<p>After shutting down and starting up again I was presented with the GRUB bootloader as expected. After shutting down one more time, everything continued to work. That&#8217;s the key. Until the corrupting software is removed you can repair the GRUB bootloader with the install CD and it will remain fixed until shut down. On the first boot after shut down the MBR changes from the offending software in the Windows partition will be referenced and GRUB will fail to load. This is why the GRUB fix needs to be made after removing the offending software.</p>
<p>Rather irritatingly, I&#8217;d just started to doubt my suspicion of OEM software like this when I got to play with the Lenovo W520 tools briefly. They seemed quite useful. Indeed, my colleague <a href="http://www.google.co.uk/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBgQFjAA&amp;url=http%3A%2F%2Fweshackett.com%2F&amp;rct=j&amp;q=wes%20hackett&amp;ei=8gINTrf3OJKEhQfcjpnnDQ&amp;usg=AFQjCNGPBcZuGV_VnU5znMuuW-NDR1jVOw&amp;sig2=hAICYqzqq2NxneSzwn-Z1w&amp;cad=rja">Wes Hackett</a> was just saying how much he liked the biometrics on it, so it&#8217;s a shame to have my suspicions slapped back in to place through this episode.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/beware-multiple-boots-oem-protection-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Development Environment Performance: SSD, i5 vs. i7, WEI and Sandy Bridge</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-ssd-i5-i7-wei-sandy-bridge/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-development-environment-performance-ssd-i5-i7-wei-sandy-bridge</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-ssd-i5-i7-wei-sandy-bridge/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 00:43:03 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ASUS]]></category>
		<category><![CDATA[Core i5]]></category>
		<category><![CDATA[Core i7]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Lenovo]]></category>
		<category><![CDATA[Sandy Bridge]]></category>
		<category><![CDATA[SATA]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[WEI]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1927</guid>
		<description><![CDATA[Late last year my colleagues and I tried to distil the tasks that impede SharePoint developer productivity. Then I ran those tests on EC2, Hyper-V and VMware Workstation, with the latter two virtualisation technologies running on a desktop, an older laptop and a newer laptop. In this post I hope to shed a bit of [...]]]></description>
			<content:encoded><![CDATA[<p>Late last year my colleagues and I tried to distil <a title="SharePoint 2010 Development Environment Performance Tests" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/">the tasks that impede SharePoint developer productivity</a>. Then I ran those tests on <a title="SharePoint 2010 Development Environment Performance Test Results" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-test-results/">EC2, Hyper-V and VMware Workstation</a>, with the latter two virtualisation technologies running on a desktop, an older laptop and a newer laptop. In this post I hope to shed a bit of light on some follow-up testing that I&#8217;ve squeezed in to the odd hour here and there over the last six months. Unfortunately hardware availability and my schedule have not aligned to produce a further round of comprehensive tests and since I can&#8217;t see that occurring in the immediate future I&#8217;m going to fill in some gaps here with a couple of additional concrete findings, particularly regarding i5 vs. i7 testing and the impact of SSD on first page load times after application pool recycles. I&#8217;ll also talk less rigorously about a few related issues.</p>
<h3><span id="more-1927"></span>SSD</h3>
<p>Probably the most contentious finding from my initial testing was that disk performance and bus speed aren&#8217;t significant factors in most of those results (start-up and shut-down times being a notable exception). To recap a bit of my initial summary:</p>
<blockquote>
<div><em>Disk performance and bus speed did not prove to be significant factors</em> in these results (except for virtual machine start-up times). Obviously    there are fundamental differences about SSD (yet untested) that may    skew this picture, but I will be surprised to see big differences. If    we’ve got these tests right, and they are actually representative of  the   tasks that slow down development, then we would expect to see  wider   variance across bus or disk speeds. We don’t.</div>
<div>
<ul>
<li>This  assumes the disk is relatively uncontended. Virtual machine    performance degrades in every type of test while large file operations    are running concurrently on the same disk. This could be copying an   ISO,  importing or exporting a virtual machine or any other sustained   large  file operations.</li>
</ul>
</div>
</blockquote>
<p>The obvious follow-on test would be to repeat on the same system with SSD. Unfortunately I&#8217;ve not found the time or hardware resources to do that yet, but today I ran an indicative test. In this scenario, I installed two new boots on a brand new <a title="Lenovo ThinkPad W520" href="http://shop.lenovo.com/gbweb/gb/en/learn/products/laptops/thinkpad/w-series/w520/" target="_blank">Lenovo ThinkPad W520</a>. One drive was an SSD in the second bay, the other was a 7200 RPM SATA drive (I don&#8217;t have specs for either to hand, but they were the default Lenovo offerings). For both boots I ran the VMs on the other spindle, so we had one test with an SSD system drive and VMs running on mechanical drive. For the second test I inverted the configuration and had a mechanical system drive with VMs running on SSD. In both cases there was no appreciable system contention outside of these tests.</p>
<p>The results? Identical. First page load after application pool recycle times were around 10 seconds for Central Administration, a blank site and a My Site Host. 16 seconds for a customised intranet solution (the same one from the initial tests). These are very similar times to the desktop results from my original tests &#8211; only marginally slower. What does this tell me? I should complete the testing for more scenarios than just the first page load times. But given that it won&#8217;t happen any time soon, I&#8217;m pretty comfortable assuming that SSD isn&#8217;t going to automagic performance improvements where disk speed is otherwise not a factor, and I&#8217;m happy standing by my initial analysis with this supplementary finding in hand.</p>
<p>To be crystal clear, I&#8217;ve seen first-hand how quickly a VM starts and shuts down when running on SSD. It&#8217;s stunning. And there&#8217;s clearly a subsequent gain reaching a post-start-up stasis of sorts. I always waited for my system to calm down like this before any testing could begin, and in some cases that might take ten minutes on a 7200 RPM mechanical drive, and even longer over USB2. However, I don&#8217;t actually see this as a major productivity loss. Irritating, yes. A sound business case? Probably less so. I imagine doing lots of full crawls would translate to a big productivity gain on SSD, but is that a major issue for most developers on most projects? Not consistently so, in my experience. But if you&#8217;re developing a FAST solution it would probably be a good idea. Maybe even isolate all of the DBs on the SSD. There would certainly be scope to play with this once you have known disk contention that you&#8217;re fighting.</p>
<p>The problem I have is that I can&#8217;t find any other scenarios which are as disk-bound as we might assume. When we first started this testing in late 2009, our first inclination was to add eSATA drives on a PCI Express port to get a second spindle. Freeing up the VMs from system activity and large file operations on the system disk is a clear win, but this will be true for any disk of any speed on virtually any bus if my initial test results are to be trusted, which means that <em>the SSD investment for VM performance gains is only likely to get you faster start-up/shutdown times and anything else that involves large file operations</em>.</p>
<p>All this said, if budget and SSD reliability are not concerns, load up on them, assuming it gets you sufficient storage capacity. It won&#8217;t hurt, so long as they don&#8217;t fail all the time. Additionally, it may be beneficial to get an SSD for the system drive, if other non-development activities would benefit from it. Or it may be that start-up/shutdown times are compelling on their own. In the final analysis, I&#8217;m in no way opposed to SSD, but when it&#8217;s my neck on the line for justifying hardware purchases, I want concrete, consistently-realised performance gains if I&#8217;m going to recommend a less resilient, lower capacity, more expensive technology. In most cases, I&#8217;m not sure that&#8217;s the case for virtualised SharePoint development.</p>
<h3>i5 vs. i7</h3>
<p>One of the other key follow-on investigations from last year&#8217;s testing was a comparison of i5 vs. i7 processors. I&#8217;ll quote the initial context here:</p>
<blockquote>
<ul>
<li>
<div><em>The benefit of spending on i7 processors is in doubt</em>. We are seeing very minor performance <em>penalties</em> when adding more than two CPUs in both VMWare Workstation and Hyper-V   for most tests. There were also very minor improvements for some tasks,   but on the whole there does not appear to be a measurable benefit. This   might vary if the host OS is doing a great deal with the CPU, but that   is liable to cause other contention issues than just in the CPU (on a   laptop).</div>
</li>
<li>
<div>The only tasks that appeared to use all 8 cores in a SharePoint VM were:</div>
<ul>
<li>Retract/Deploy of a solution (but only very briefly)</li>
<li>Create web app, or Create site collection (but at low percentages)</li>
<li>Rebuild with Code Analysis (but not fully)</li>
</ul>
</li>
</ul>
</blockquote>
<p>Since  the initial testing, I&#8217;ve continued to experiment with two versus four  cores in the VM, and have never seen a significant enough difference to  endorse using more than two, but at the same time, I don&#8217;t think the  penalties for multiple cores are significant enough to worry about, if  any user thinks that four cores will be better. Note: I&#8217;m only talking about development here.</p>
<p>Based on  these findings, I had a hunch that a faster clock speed i5  would outperform an i7, assuming two or fours cores running inside the  SharePoint VM. For the sake of simplicity I&#8217;ve tested with two cores.  For these follow-on tests I used the same <a title="V6-P7H55E" href="http://www.asus.com/Barebone_PC/V_Series_2530L/V6P7H55E/" target="_blank">ASUS V6-P7H55E</a> model that I  used during the original testing, with an identical spec/configuration  and the same VM, with one exception. We replaced the <a title="Intel® Core™ i7-870 Processor (8M Cache, 2.93 GHz)" href="http://ark.intel.com/Product.aspx?id=41315" target="_blank">Intel® Core™ i7-870 Processor (8M Cache, 2.93 GHz)</a> with an <a title="Intel® Core™ i5-680 Processor (4M Cache, 3.60 GHz)" href="http://ark.intel.com/Product.aspx?id=48504" target="_blank">Intel® Core™ i5-680 Processor (4M Cache, 3.60 GHz)</a> &#8211; faster speed, smaller cache.</p>
<p>To  my surprise, the performance tests returned virtually identical results  to my initial testing (all within the margins that the initial tests  deviated). Reviewing those results again, we can see that for most tests  disk performance is not an issue (see above), and these tests suggest  that CPU is not a bottleneck to <em>further</em> performance gains beyond a certain point (I believe an older CPU would fare poorly against either of these, but if a 4.0 GHz i5 came along, I&#8217;m not sure we&#8217;d see an improvement over these results). These  machines have reasonably high-spec RAM, so memory <em>speed</em> does not seem a likely candidate  for further improvements. Based on resource monitoring during testing, I  can&#8217;t see that anything is maxed out, so I&#8217;m beginning to think there&#8217;s something inherently languid in the sequence of this computation. Perhaps a deeper dive is in order some day, but I&#8217;m probably not the best person to take that on.</p>
<p>As an aside, I can confirm that I&#8217;ve been running up to six VMs concurrently on this desktop with the i5 over the last couple of weeks. Starting all of the machines up at once is rough, but after 15-20 minutes it&#8217;s handling it no problem, and I don&#8217;t have to do that unless I&#8217;m taking a major snapshot. This suggests disk starts to become an issue with six VMs running at once, but that shouldn&#8217;t surprise anyone. If anything I&#8217;m surprised it&#8217;s not more of an issue on this machine, and if I continue to need this many VMs at once I&#8217;ll probably sacrifice my RAID 1 array for two separate disks. I&#8217;d be hesitant to suggest SSD in this case, since six VMs is probably going to chew up more storage than most SSDs will accommodate.</p>
<p>Based on these results and this longer-term experience, I&#8217;d recommend the higher-speed i5. I don&#8217;t seem to lose anything with the i5, at any rate. Maybe even go down to a 3.0 GHz i5 and save some money? If you know you have a specific scenario that will consistently utilise eight cores, go for the i7. But ultimately, both of these CPUs are fast.</p>
<h3>Windows Experience Index and CPU Benchmarks</h3>
<p>I&#8217;ve had a number of discussions with people about performance since publishing these posts, and it&#8217;s surprised me to find how many people actually look at the Windows Experience Index. Unfortunately, in my experience, this really doesn&#8217;t tell us much on today&#8217;s machines. A poor-to-average developer machine today gets a good score, unless it has a 4200 RPM hard drive (in which case it shouldn&#8217;t be used by a developer). Also, graphics performance is probably irrelevant. I really don&#8217;t think this index sheds any light on the <em>SharePoint Development Experience Index</em>, as it were.</p>
<p>Along these lines, with the receipt of a few new Sandy Bridge CPUs in these Lenovo laptops, we started running CPU benchmark tools. These are quite useful for diagnosing problems (early BIOS versions on the W520 were slooooooooooooooooooow &#8211; make sure to apply v1.25+), but beyond that, I&#8217;m not sure they tell us what we need to know for SharePoint development. For instance, at one point we saw hugely different CPU benchmark scores but the SharePoint performance tests were roughly the same. I guess I mention these tools here to say that they may be useful in some cases, but I think these real world tests probably tell us more.</p>
<h3>Sandy Bridge</h3>
<p>&#8220;How good are these Sandy Bridge CPUs&#8221;, I hear you mutter? Battery life is amazing. I accidentally left the Lenovo W520 running unplugged all day today. I think it lasted about six hours. Performance-wise, you&#8217;ve seen the ~10 second first page load times after an application pool recycle on a few of the standard SharePoint OOTB templates. That&#8217;s on a 2.0 GHz Sandy Bridge i7. This is not far off the 2.93 GHz first generation i7 desktop CPU results from our original tests, and much better than the first-generation i7 laptop PCU. Pretty good, I&#8217;d say. I can&#8217;t wait to see the second generation desktop speeds. Note: the desktop i7 models also have integrated graphics, where the first-generation desktop i7 CPUs did not. Now to hope there aren&#8217;t any more recall issues.</p>
<p>A few other things to note:</p>
<ul>
<li>Until a few months ago, I didn&#8217;t realise that dual-core i7 CPUs exist. I thought they were all quad-core. Not so. This is important because if you find a laptop model with four SODIMM slots (to get you 16GB RAM, and 32GB in due course), the fine print will probably tell you that you will only get two SODIMM slots unless you purchase a quad-core CPU.
<ul>
<li>There&#8217;s a secondary &#8220;gotcha&#8221; here, in that the quad-core laptop i7 CPUs peak at a much lower clock rate than their desktop siblings. I think the fastest first-generation quad-core laptop i7 CPU peaks at just over 2 GHz, and most laptop manufacturers have very few models, if any, with this CPU. In fact, we struggled to find anything other than 1 Lenovo, 1 Dell and 1 HP model at 15&#8243;. Most of these only had availability for lower clock speeds and we nearly had to settle for 1.73 GHz. These are all very expensive as well.</li>
</ul>
</li>
<li>The Sandy Bridge comes to the rescue here insofar as it has higher clock speed quad-core laptop i7 models, even if these are also slower than their desktop siblings. However, it&#8217;s also worth noting that in most CPU comparisons of Sandy Bridge to 1st-generation i7 models, the Sandy Bridge annihilates. Basically, at this point, if shopping for a high-performance SharePoint development laptop, you should be looking at Sandy Bridge. They may actually be cheaper as well &#8211; somehow.</li>
<li>Also be aware that the Japanese earthquake has caused severe manufacturing delays for most hardware vendors. You may find you need to settle for a lengthy lead time at the moment.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-ssd-i5-i7-wei-sandy-bridge/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adding Drivers to Windows Deployment Services Boot Images</title>
		<link>http://tristanwatkins.com/index.php/adding-drivers-wds-boot-images/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adding-drivers-wds-boot-images</link>
		<comments>http://tristanwatkins.com/index.php/adding-drivers-wds-boot-images/#comments</comments>
		<pubDate>Wed, 18 May 2011 20:02:48 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Boot]]></category>
		<category><![CDATA[NIC]]></category>
		<category><![CDATA[WAIK]]></category>
		<category><![CDATA[Windows Deployment Services]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[WinPE]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1897</guid>
		<description><![CDATA[A while back, I posted an article on building a SharePoint development environment in Hyper-V, which included a part on automating deployment of the host machine. Although we&#8217;ve now moved to VMware Workstation, we still use this approach for automating deployment of our standard Windows 7 builds, and this commentary is generally relevant to any [...]]]></description>
			<content:encoded><![CDATA[<p>A while back, I posted an article on building a SharePoint development environment in Hyper-V, which included a part on <a title="Building a SharePoint 2007/2010 development environment – Part IV: Automated deployment" href="http://tristanwatkins.com/index.php/building-a-sharepoint-20072010-development-environment-part-iv-automated-deployment/" target="_blank">automating deployment of the host machine</a>. Although we&#8217;ve now moved to VMware Workstation, we still use this approach for automating deployment of our standard Windows 7 builds, and this commentary is generally relevant to any Windows Deployment Services (WDS) deployment.</p>
<p>When I learned WDS and the Windows Automated Installation Kit (which were both quite new in Windows Server 2008 R2 at the time), I contented myself with getting ~90% of the way to a fully-automated build, as the additional effort to get from 90 to 100% (mostly re: drivers) wouldn&#8217;t have paid enough immediate dividends and we needed to start capitalising on some of the other wins of our new environment. As is often the case, we never got back to that remaining 10%, but it&#8217;s become more of an issue in recent months, as we&#8217;ve added a few Dell Latitude E6410 and Lenovo W520 laptops &#8211; both of which had network drivers that the Windows 7/Windows Server 2008 R2 boot images didn&#8217;t recognise. Unfortunately the TechNet guidance on adding drivers to boot images is unclear (to me anyway), so I&#8217;m contributing this quick post to attempt to clarify the problem that we had and the simple step-by-step solution.</p>
<h3><span id="more-1897"></span>A matching  network card driver was not found in this image</h3>
<p>After preparing our image with current patches and making the state as general-purpose as possible, we ran SysPrep with Generalise and OOBE, then Shut Down the machine. I always Shut Down rather than rebooting because I don&#8217;t want to miss the window in which I need to hit F12 to trigger the PXE boot to capture the image. If the post-SysPrep boot initiates there&#8217;s a risk that the SysPrep rearm count will be incremented, which is <a title="An error message occurs when you run &quot;Sysprep /generalize&quot; in Windows Vista or Windows 7: &quot;A fatal error occurred while trying to Sysprep the machine&quot;" href="http://support.microsoft.com/kb/929828">rather undesirable</a>.</p>
<p>During capture, I was able to run through the wizard but I was not able to connect to the WDS server during the imaging process. Not the end of the world&#8230; I just manually uploaded the image after the process completed. However, this was my first indication that all would not be well with the NIC drivers. Note: my solution below should be repeatable for the capture images as well as the boot images, correcting this issue as well.</p>
<p>When it came time to deploy the image, we got in to the Windows PE setup splash, but no further than this error:</p>
<blockquote><p>WdsClient: An error occurred while starting networking: a matching  network card driver was not found in this image. Please have your  Administrator add the network driver for this machine to the Windows PE  image on the Windows Deployment Services server.</p></blockquote>
<h3>An Outdated KB</h3>
<p>As you will note in <a title="Error message when you start a PXE client to connect to a WDS server on a Windows Server 2003 SP1-based computer or on a Windows Server 2008-based computer: &quot;WdsClient: An error occurred while starting networking&quot;" href="http://support.microsoft.com/kb/923834" target="_blank">this knowledge base article</a> (which dominates search results for this error), the work-around is fairly detailed and laborious. Nevertheless, I proceeded, with a few caveats.</p>
<ol>
<li>I didn&#8217;t actually get the error that the KB article describes from the <em>Setupapi.app.log</em>, so after a bit of head scratching, I moved on to step 2, deducing which driver I needed from my extracted NIC driver INF file.</li>
<li><strong>peimg /inf=driver.inf mount\Windows</strong>, from step 3h, just didn&#8217;t work for me. &#8220;PEImg&#8221; couldn&#8217;t be found. Eventually I figured out that PEImg refers to an older version of Windows Deployment Services, so this just didn&#8217;t work.</li>
</ol>
<p>At this point I went back to the drawing board and started reviewing the Windows Server 2008 R2 TechNet documentation, leaving this KB article behind. I was pretty sure there was a less convoluted way of getting this done anyway. Eventually I found the <em>Add Driver Packages to Boot Image Wizard</em>, as I&#8217;ll detail in step-by-step instructions below, but now I was getting error code <em>0xc1420127</em> in the wizard, as detailed <a title="Getting error 0xc1420127 when trying to add drivers to boot iamge " href="http://www.windows-noob.com/forums/index.php?/topic/2112-getting-error-0xc1420127-when-trying-to-add-drivers-to-boot-iamge/" target="_blank">here (with a good screen shot)</a> and <a title="WDS Error Code:0xc1420127" href="http://social.technet.microsoft.com/Forums/en-US/w7itproinstall/thread/a202816a-59f6-48bb-a71a-fe2ca3add4c9/" target="_blank">here (with this solution)</a>:</p>
<blockquote>
<ol>
<li>Clear all your temp directorys.</li>
<li>Browse to &#8220;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WIMMount\Mounted Images&#8221; and delete any keys below this.</li>
</ol>
</blockquote>
<p>I think the important step here is the second one, which removes the mounted image that I never unmounted via <strong>imagex /unmount /commit mount</strong>; the registry keys align precisely with <strong>Imagex /info Drive:\remoteinstall\boot\x86\images\boot.wim</strong> and <strong>Imagex /mountrw D:\remoteinstall\boot\x86\images\boot.wim 2 mount</strong>from steps 3f/3g/3h:</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/WDS_RegKey.png"><img class="alignnone size-full wp-image-1902" title="WDS_RegKey" src="http://tristanwatkins.com/wp-content/uploads/WDS_RegKey.png" alt="WDS RegKey Adding Drivers to Windows Deployment Services Boot Images" width="462" height="255" /></a></p>
<p>I purposely avoided committing the mount since I couldn&#8217;t make the PEImg changes, but this inadvertently caused the <em>Add Driver Packages to Boot Image Wizard</em> <em>0xc1420127 </em>error.</p>
<h3>A much simpler solution</h3>
<p>After deleting these keys, I was back on track. If I&#8217;d never stepped through the outdated KB article I could have followed these steps below and saved myself (and apparently a few others) much hassle, but for whatever reason the <em>Add Driver Package</em> command has always eluded me &#8211; tucked away as it is under the <em>Drivers</em> node in WDS. I was always distracted by the <em>Add Driver Packages to Image</em> command under the <em>Boot Images</em> node, as in step 3 below, which gets you nowhere without adding the driver first. But once you find that and step through, it&#8217;s pretty easy.</p>
<ol>
<li><em>Add Driver Package</em><br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/WDS_AddDriver1.png"><img class="alignnone size-full wp-image-1912" title="WDS_AddDriver1" src="http://tristanwatkins.com/wp-content/uploads/WDS_AddDriver1.png" alt="WDS AddDriver1 Adding Drivers to Windows Deployment Services Boot Images" width="353" height="281" /></a></li>
<li><em>Select driver packages from an .inf file</em><br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/WDS_SelectINF.png"><img class="alignnone size-full wp-image-1904" title="WDS_SelectINF" src="http://tristanwatkins.com/wp-content/uploads/WDS_SelectINF.png" alt="WDS SelectINF Adding Drivers to Windows Deployment Services Boot Images" width="500" /></a></li>
<li>On the boot image, select <em>Add Driver Packages to Image</em>:<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/WDS_AddDriverPackagesToImage1.png"><img class="alignnone size-full wp-image-1911" title="WDS_AddDriverPackagesToImage1" src="http://tristanwatkins.com/wp-content/uploads/WDS_AddDriverPackagesToImage1.png" alt="WDS AddDriverPackagesToImage1 Adding Drivers to Windows Deployment Services Boot Images" width="500" /></a></li>
<li>Click <em>Search for Packages</em>:<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/WDS_SearchForPackages.png"><img class="alignnone size-full wp-image-1903" title="WDS_SearchForPackages" src="http://tristanwatkins.com/wp-content/uploads/WDS_SearchForPackages.png" alt="WDS SearchForPackages Adding Drivers to Windows Deployment Services Boot Images" width="500" /></a></li>
<li>While adding the package to the image it will be temporarily dismounted. In order to account for this in advance you can temporarily disable the image before doing any of this and then re-enable it afterwards.</li>
</ol>
<p>Repeat this process for other boot/capture images as needed, and make sure the driver matches the boot/capture image architecture. The install image doesn&#8217;t need to match the boot image architecture though.</p>
<p>Ultimately, this all shows off how much better WDS in Windows Server 2008 R2 is than its predecessors, which were dark arts that few could master. Not so any more, but unfortunately automated deployment is still confusing when it goes wrong  per the number of technologies that all support the same or similar ends, new and old, including WDS, WAIK, MDOP, SCCM, DISM, RIS, ADS and I&#8217;ve forgotten how many others, especially when the changing interrelationships between these products over time further obscures the quality of guidance.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/adding-drivers-wds-boot-images/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>SharePoint Server 2010 Search Scopes and Pre-Windows 2000 Compatibility Access</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-server-2010-search-scopes-and-pre-windows-2000-compatibility-access/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-server-2010-search-scopes-and-pre-windows-2000-compatibility-access</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-server-2010-search-scopes-and-pre-windows-2000-compatibility-access/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 00:24:22 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Functional Level]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Service Application]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[TGGAU]]></category>
		<category><![CDATA[tokenGroupsGlobalAndUniversal]]></category>
		<category><![CDATA[ULS]]></category>
		<category><![CDATA[w3wp]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1681</guid>
		<description><![CDATA[Back in the pre-release days of SharePoint 2010, one of the most reliable sources of information on infrastructure issues was Russ Maxwell&#8217;s SharePoint Brew blog. It&#8217;s still a great resource, although he&#8217;s posting less frequently now than he was during the beta. In this post I want to share my findings regarding Pre-Windows 2000 Compatibility [...]]]></description>
			<content:encoded><![CDATA[<p>Back in the pre-release days of SharePoint 2010, one of the most reliable sources of information on infrastructure issues was <a href="http://blogs.msdn.com/b/russmax/">Russ Maxwell&#8217;s SharePoint Brew blog</a>.  It&#8217;s still a great resource, although he&#8217;s posting less frequently now than he was during the beta. In this post I want to share my findings regarding <em>Pre-Windows 2000 Compatibility Access</em> group rights in Active Directory. Everything I have to say is supplementary to Russ&#8217;s foundational explanation of <a href="http://blogs.msdn.com/b/russmax/archive/2010/01/20/why-the-tokengroupsglobalanduniversal-tggau-attribute-matters-in-sharepoint-2010.aspx">Why the tokenGroupsGlobalAndUniversal (TGGAU) attribute matters in SharePoint 2010</a>. I&#8217;m picking the discussion up from his closing comment, &#8220;At a minimum, certain service accounts like the search service account need to be a member of this group.&#8221;
</p>
<p><span id="more-1681"></span></p>
<h3>Context<br />
</h3>
<p>A couple of months ago I was building a client&#8217;s production farm. It was a pretty straight-forward architecture with few unusual requirements. I&#8217;d successfully provisioned everything and was deploying the PDF iFilter as one of my last steps. When I ran a test crawl to see if it could pick up the contents of PDF documents, I was surprised to find the <em>Local SharePoint sites</em> Scope contained zero items, even though the crawl successfully gathered 459 items. To add to my confusion, the <em>People</em> scope was fully populated. I verified that the scope didn&#8217;t need to be updated, then launched ULS Viewer. While reading the trace logs in real time, I re-ran a full crawl and spotted this clue (my bold):
</p>
<blockquote><p><strong>AuthzInitializeContextFromSid failed</strong> with ERROR_ACCESS_DENIED. This error indicates that <strong>the account under which this process is executing may not have read access to the tokenGroupsGlobalAndUniversal attribute</strong> on the querying user&#8217;s Active Directory object. Query results which require non-Claims Windows authorization will not be returned to this querying user.
</p>
</blockquote>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/032911_2346_SharePointS11.png"><img class="alignnone size-full wp-image-475" title="ConfickerPr1" src="http://tristanwatkins.com/wp-content/uploads/032911_2346_SharePointS11.png" alt="032911 2346 SharePointS11 SharePoint Server 2010 Search Scopes and Pre Windows 2000 Compatibility Access"  /></a>
</p>
<h3>Investigation<br />
</h3>
<p>This error message reveals quite a bit. We know the error occurs in a w3wp.exe process associated with SharePoint Server Search&#8217;s, &#8220;Query Processor&#8221;, and that the application pool identity of this process doesn&#8217;t have read access to the <em>tokenGroupsGlobalAndUniversal</em> attribute in Active Directory. This tells us the error is occurring on the SharePoint Search Service Application pool&#8217;s identity, rather than on the Search Service (which is not a w3wp). After searching for a bit I found a few useful posts/articles, but what really helped me was Russ Maxwell&#8217;s article, which I linked to at the top of this post.
</p>
<p>I suspect that in his testing, Russ found different scenarios where <em>Pre-Windows 2000 Compatibility Access</em> rights needed to be granted to the Search service account, but in my case these rights didn&#8217;t help. His error and his explanation of the problem are different. I don&#8217;t want to make too much of this, since his post was circa Beta, but it&#8217;s worth noting there may be multiple issues with these rights and Search. In our case, we tried to grant rights to the Search Service account but <strong>the error persisted until we added the Search Service Application Pool Identity account to this group</strong>. In actuality, we identified these same errors on the farm account initially as well, but granting these rights to the farm account didn&#8217;t solve the problem.
</p>
<p>I should also note for completeness, that there were Security event 4625 Logon Failure errors accompanying the ULS log entries until we granted access to the Search Service Application Pool Identity account, at which point these events were replaced by 4624 Success events.
</p>
<p>After running one more Full Crawl I confirmed that the ULS errors were also gone. It&#8217;s reasonable to infer from these new ULS events that when <em>PluggableSecurityTrimmerManager</em> is selecting, &#8220;workid from scope()&#8221;, it needs these <em>Pre-Windows 2000 Compatibility Access</em> permissions in a Windows Server 2000 or Windows Server 2003 domain. Presumably if SIDs can&#8217;t be initialised, everything gets security trimmed.
</p>
<p><p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/032911_2346_SharePointS21.png"><img class="alignnone size-full wp-image-1179" title="ConfickerPr1" src="http://tristanwatkins.com/wp-content/uploads/032911_2346_SharePointS21.png" alt="032911 2346 SharePointS21 SharePoint Server 2010 Search Scopes and Pre Windows 2000 Compatibility Access" width="500" /></a>
</p>
<h3>How to use these findings<br />
</h3>
<p>I&#8217;d recommend adding this to the list of permissions you <em>may</em> need to grant in a Windows Server 2000 or Windows Server 2003 domain. This is basically what Russ Maxwell was saying initially, as I read it. In this scenario, I&#8217;ve merely spotted a scenario where different rights are required and I can&#8217;t shed any light on why this hasn&#8217;t been required in every Windows 2000 or Windows 2003 domain I&#8217;ve worked in.
</p>
<p>If working from a principle of least privileged access, I&#8217;d suggest granting these rights as needed during deployment. They shouldn&#8217;t need to be granted particularly broadly (unless you&#8217;re working with a 1-way trust from a resource domain, which is another story &#8211; see the comments in the Russ Maxwell post for an introduction). Alternately, it&#8217;s arguable that granting read access to this <em>tokenGroupsGlobalAndUniversal</em> (TGGAU) attribute isn&#8217;t opening an enormous hole, but that&#8217;s a question for each organisation to answer based on their security models.
</p>
<h3>A Note on User Profile Pre-Windows 2000 Compatibility Access Rights<br />
</h3>
<p>While I&#8217;m speaking of variance in these permission requirements, I should note that I&#8217;ve seen a number of sources including Spencer Harbar, <a href="http://technet.microsoft.com/en-us/library/ee721049.aspx">TechNet</a> and this Russ Maxwell article mentioning the need to grant these same <em>Pre-Windows 2000 Compatibility Access</em> rights to the User Profile Synchronisation account, but I haven&#8217;t had any problems running without these rights in two different Windows 2000 or 2003 domains.
</p>
<blockquote><p>If the domain controller is running Windows Server 2003, the synchronization account must be a member of the Pre-Windows 2000 Compatible Access built-in group. See <a href="http://technet.microsoft.com/en-us/library/ee721049.aspx">Add an account to the Pre-Windows 2000 Compatible Access group</a> for instructions to grant this permission.
</p>
</blockquote>
<p>Given those sources, I&#8217;d suggest you&#8217;re probably best off granting the rights, but I haven&#8217;t yet been able to validate the need myself. I&#8217;d definitely be interested if anyone can shed more light on that topic. </p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-server-2010-search-scopes-and-pre-windows-2000-compatibility-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conficker Protection Breaks Search</title>
		<link>http://tristanwatkins.com/index.php/conficker-protection-breaks-search/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=conficker-protection-breaks-search</link>
		<comments>http://tristanwatkins.com/index.php/conficker-protection-breaks-search/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 01:08:38 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[IT Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Conficker]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Service Application]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Tasks]]></category>
		<category><![CDATA[Virus]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1667</guid>
		<description><![CDATA[A couple of months ago I was happily building a client&#8217;s SharePoint Server 2010 farm when I stumbled at Search. The Service Application provisioned fine, but when I pushed out topology changes I started to have problems. Later, these problems returned in different forms, but the root cause appears to have been consistent. In this [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of months ago I was happily building a client&#8217;s SharePoint Server 2010 farm when I stumbled at Search. The Service Application provisioned fine, but when I pushed out topology changes I started to have problems. Later, these problems returned in different forms, but the root cause appears to have been consistent. In this post I will review the symptoms, the single fix and the reason why this issue emerged in this environment. I&#8217;ll also look at some unexpected permission changes that occur when new servers receive Search Service Instances.</p>
<p><span id="more-1667"></span></p>
<h3>Round I</h3>
<p>My difficulties started when I attempted to move a newly-provisioned Query Component to a web front end server. When it failed, I tracked the problem down to missing permissions on <em>C:\Windows\Tasks</em>. At this point I didn&#8217;t know why the permissions had been removed and this was actually the first time I&#8217;d noted these permission requirements. <a  href="http://technet.microsoft.com/en-us/library/cc678863.aspx" title="Account permissions and security settings (SharePoint Server 2010)" target="_blank">TechNet suggests</a> WSS_ADMIN_WPG needs Full Control of <em>%WINDIR%\Tasks</em>, but the description of this requirement is &#8220;N/A&#8221;. Oddly, according to this TechNet article, the WSS_WPG group does not appear to need these same rights, although they are assigned by the SharePoint installation/configuration processes &#8211; or at least they are in the environments that I&#8217;ve built.
</p>
<p>Adding to this confusion, I found this strange ULS event, in which the provisioning process tries to <strong>remove</strong> WSS_WPG access to <em>%WINDIR%\Tasks</em> and grant R/W access to the Search service account. This is pretty weird! It might explain why the WSS_ADMIN_WPG group needs Full Control rather than just R/W access, but I wouldn&#8217;t typically expect SharePoint to be modifying ACLs in the Windows directory.
</p>
<p><span style="text-decoration:underline">&#8220;Modifying ACL to allow <SearchAccount> R/W access to &#8216;C:\Windows\Tasks&#8217; and to remove access for WSS_WPG.&#8221;</span><br/><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/022811_2352_ConfickerPr1.png"><img class="alignnone size-full wp-image-1381" title="ConfickerPr1" src="http://tristanwatkins.com/wp-content/uploads/022811_2352_ConfickerPr1.png" alt="022811 2352 ConfickerPr1 Conficker Protection Breaks Search" width="500" /></a>
</p>
<p>Back to the provisioning problem at hand, once I added the missing permissions for both the WSS_WPG and WSS_ADMIN_WPG local groups on <em>%WINDIR%\Tasks</em> the provisioning process completed successfully. You can also see that the &#8220;Modifying ACL&#8221; event directly precedes the failure to start the new Service Instance. While this event helped me track down the problem, and is clearly related to it, unfortunately I need to leave that mystery behind for now, as there are bigger issues to address in this post.
</p>
<h3>Round II</h3>
<p>Later, this client got back in touch and mentioned that their Search Service Application wasn&#8217;t working. In this case the Search Administration page was available but all Content Sources, Scopes, Crawl Logs, etc. pages failed with errors on the Admin Component.
</p>
<blockquote><p style="margin-left: 36pt">Crawl status: The search service is not able to connect to the machine that hosts the administration component. Verify that the administration component &lt;GUID&gt; in search application &#8216;&lt;Search Service Application name&gt;&#8217; is in a good state and try again.
</p>
</blockquote>
<p>To cut a long story short, my initial troubleshooting didn&#8217;t immediately lead me back to these missing permissions due to a number of other concurrent infrastructure changes which lead me astray. Additionally, when we tried to delete the Search Service Application to recreate it, the deletion failed after removing just one of the Search databases. Eventually we managed to re-provision the Service Application but the topology changes failed again, at which point we identified the missing <em>%WINDIR%\Tasks</em> permissions (again) and granting the missing permissions fixed these problems (almost).</p>
<p>In fact, we also needed to grant missing permissions on <em>\Program Files\Microsoft Office Servers\14.0\Data\Office Server</em>, but I believe that was a one-off related to the failed Search Service Application deletion earlier. One way or the other it doesn&#8217;t appear to be a core issue here. However, I should also mention that I suspect the Search Service Application <strong>deletion</strong> failed because of the missing <em>%WINDIR%\Tasks</em> permissions &#8211; although I&#8217;m basing this entirely on the fact that the ULS events above suggests that a similar process takes place for deletion, by virtue of the &#8220;(<strong>un</strong>)provisioning&#8221; job.
</p>
<h3>Round III</h3>
<p>With Search back up and running, we moved on to other things, but eventually Search started acting up again. Unfortunately I&#8217;ve lost track of the visible failure, but the application logs were full of 6398 and 6482 errors (which typically indicate the unavailability of the service rather than the cause). I vaguely recall that we had items in the index but that new crawls were failing to run. At the time, I was most focused on Gatherer <em>Access Denied</em> messages on the <em>Portal_Content Catalog</em>.</p>
<p>Again, to abbreviate other misguided efforts related to on-going infrastructure work, we eventually found out that the permissions on <em>%WINDIR%\Tasks</em> were missing. Obviously, at this point the most reasonable explanation for the change was a Group Policy setting, so we reviewed the event logs in between the last known good crawl and the first crawl failure. I quickly spotted a Group Policy change message. I recommended that we review the Resultant Set of Policy on this server, just to be absolutely certain the Group Policy wasn&#8217;t applying permission changes in this location. The client assured me this was very unlikely, because they don&#8217;t have an overly restrictive culture, but it turned out this was the one and only file system permission change and it was applied to the Default Domain Security Policy. Presumably the previous Search failures occurred after reboots or some other event that would re-apply this group policy. And presumably all of this strange behaviour can be accounted for by these missing permissions, given that we know they were getting removed and we know that adding them back in fixed the problem.
</p>
<h3>Conficker</h3>
<p>Later that night, curiosity got the better of me. I dug a bit deeper to see if I could identify anything that recommends these permission changes. I found Microsoft Support KB article KB962007, <a href="http://support.microsoft.com/kb/962007">Virus alert about the Win32/Conficker worm</a>. In this article, Microsoft recommends the following mitigation steps to prevent the virus from spreading:
</p>
<blockquote><p style="margin-left: 36pt">Set the policy to remove write permissions to the %windir%\Tasks folder. This prevents the Conficker malware from creating the Scheduled Tasks that can reinfect the system.To do this, follow these steps:
</p>
<ol style="margin-left: 72pt">
<li>
<div>In the same GPO that you created earlier, move to the following folder:
</div>
<p>Computer Configuration\Windows Settings\Security Settings\File System
</p>
</li>
<li>Right-click <strong>File System</strong>, and then click <strong>Add File</strong>.
</li>
<li>In the <strong>Add a file or folder</strong> dialog box, browse to the %windir%\Tasks folder. Make sure that <strong>Tasks</strong> is highlighted and listed in the <strong>Folder</strong> dialog box.
</li>
<li>Click <strong>OK</strong>.
</li>
<li>In the dialog box that opens, click to clear the check boxes for <strong>Full Control</strong>, <strong>Modify</strong>, and <strong>Write</strong> for both <strong>Administrators</strong> and <strong>System</strong>.
</li>
<li>Click <strong>OK</strong>.
</li>
<li>In the <strong>Add Object</strong> dialog box, click <strong>Replace existing permissions on all subkeys with inheritable permissions</strong>.
</li>
<li>Click <strong>OK</strong>.
</li>
</ol>
</blockquote>
<p>In effect, this Group Policy removes the special Read/Write permissions assigned to <em>Authenticated Users</em> on the <em>%WINDIR%\Tasks</em> folder by default. Note: it <strong>replaces</strong> all permissions with those defined in the Group Policy. I suppose the moral of this story is not to apply security settings like this to the Default Domain Security Policy. But fair play to my client for the security diligence in the first place.
</p>
<p><span style="text-decoration:underline">Default <em>%WINDIR%\Tasks</em> permissions for Authenticated Users, without the group policy</span><br/><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/030111_0031_ConfickerPr11.png"><img class="alignnone size-full wp-image-1028" title="ConfickerPr11" src="http://tristanwatkins.com/wp-content/uploads/030111_0031_ConfickerPr11.png" alt="030111 0031 ConfickerPr11 Conficker Protection Breaks Search" width="500" /></a>
</p>
<p>This issue raises a couple of other questions. What is the best way to handle this for SharePoint servers, given that there are legitimate reasons harden this location? I suppose the best option would be to create another Group Policy for the SharePoint servers OU which will add the local WSS_WPG and WSS_ADMIN_WPG group permissions back on the <em>%WINDIR%\Tasks</em> folder. There will be other options, depending on how your domain/Group Policies are structured, but this illustrates an approach. It would be helpful to understand if the Search account should be added as well, but for now I&#8217;m going on what the installer/configuration wizard does rather than what TechNet fails to describe fully.</p>
<p>Next question: why isn&#8217;t this issue more common, given that the virus first emerged over two years ago? I suppose the group policy might not have been taken up by many organisations, but it&#8217;s more likely that there are further wrinkles I&#8217;ve not uncovered. I tried to replicate the problem in my single server + DC development environment, but frustratingly, everything worked fine after applying this group policy. I rebooted and confirmed the permission changes, ran a full crawl, ran a query and reviewed event logs, but all seemed fine. I even re-provisioned my Search Service Application and that succeeded. To be perfectly honest I&#8217;m not sure what to make of this. Perhaps this is only an issue once the search topology takes a specific shape? That feels like the most likely explanation. I hope to do more testing on this in future, but for now I wanted to identify a fix that worked for me and which aligns with the settings applied by the SharePoint installer/configuration wizard, should this problem arise for others. I&#8217;m not the first person to discover this problem. I think it&#8217;s actually been around since MOSS 2007, based on some forum posts, but I haven&#8217;t seen it described in relation to this Conficker protection, which hopefully helps make the Group Policy modelling decisions a bit less obscure.</p>
<p>More broadly, I&#8217;d be really curious to hear if anyone has information about the mismatch between TechNet and SharePoint default permissions on <em>%WINDIR%\Tasks</em>, and the further mismatch between the &#8220;Modify ACL&#8221; event, TechNet and the default settings. It may turn out that the WSS_WPG permissions are unnecessary or even undesirable, but given that SharePoint puts them there in the first place, I&#8217;m uncomfortable removing them until there&#8217;s better information to rely on.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/conficker-protection-breaks-search/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Testing Manage Patch Status</title>
		<link>http://tristanwatkins.com/index.php/testing-manage-patch-status/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testing-manage-patch-status</link>
		<comments>http://tristanwatkins.com/index.php/testing-manage-patch-status/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 20:45:30 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[IT Management]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Cumulative Updates]]></category>
		<category><![CDATA[DCOM]]></category>
		<category><![CDATA[GAC]]></category>
		<category><![CDATA[Manage Patch Status]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Timer Job]]></category>
		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1726</guid>
		<description><![CDATA[In my last post I discussed how the Product Version Job timer job uses the Windows Installer Service to query the installed state of SharePoint 2010 servers and how the Manage Patch Status page in Central Administration displays this information. I also touched on my reservations about what we can infer from this data. In [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I discussed how the Product Version Job timer job uses the Windows Installer Service to query the installed state of SharePoint 2010 servers and how <a title="Inside Manage Patch Status" href="http://tristanwatkins.com/index.php/inside-manage-patch-status/" target="_blank">the Manage Patch Status page in Central Administration displays this information</a>. I also touched on my reservations about what we can infer from this data. In this post, I&#8217;m diving a bit deeper in to that question.<br />
<span id="more-1726"></span></p>
<h3>A quick word about the DCOM Permissions</h3>
<p>In my last post, I put off a discussion of the security implications of granting the Farm account DCOM Local Activation rights to the Windows Installer Service (in order to clear the DCOM 10016 event log errors). I was worried about this approach, since this DCOM Component opens up the Windows Installer, which represents a different type of security risk than say&#8230; IIS WAMREG. Following my last post, <a title="Hosed anyway" href="http://twitter.com/harbars/status/37915583504842752" target="_blank">Spencer Harbar suggested</a> that these worries were unfounded, or rather, that the risks are acceptable, since it&#8217;s only a risk if the Farm account gets compromised. He rightly pointed out that you&#8217;d be pretty stuffed at that point anyway. Fair enough. To this end, I&#8217;ll join him in not worrying about it.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">How to fix it</span><br />
If you want to clear the DCOM 10016 errors by granting these rights, you need to assign ownership of <em>HKCR\AppId\{000C101C-0000-0000-C000-000000000046}</em> to Administrators, then grant Local Administrators Full Control. Now you&#8217;ll be able to grant the DCOM Local Activation rights to the Farm Account on this same <em>{000C101C-0000-0000-C000-000000000046} </em>component.</p>
<p>Despite carrying a lighter weight on my shoulders, I think it might be helpful to review what came out of my testing, as the job may not be detecting everything we&#8217;d expect at face value. I&#8217;ve also poked a few more holes in the <a title="a Sharepoint Timer Job called “Product Version Job”" href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/350f0758-6446-4dc9-b029-519852d16b72" target="_blank">Support response</a>, which was the whole reason I started working on this in the first place.</p>
<h3>Testing the Job</h3>
<p>In these tests, I&#8217;m wilfully trying to do stuff you would never want to do in any farm – just to find out what the job &#8220;knows&#8221; about. To this end, I&#8217;ve tried some pretty foolhardy things like:</p>
<ul>
<li>Manually updating DLLs in the GAC.</li>
<li>Manually updating DLLs in the Program Files directories.</li>
<li>Manually killing a Cumulative Update installation while it was half-way complete.</li>
<li>Deleting DLLs from the GAC and the Program Files directories.</li>
<li>Manually updating registry keys.</li>
</ul>
<p>Are these the right tests? They certainly aren&#8217;t comprehensive. Suffice it to say I&#8217;m not the right person to comment on what the Windows Installer might be able to detect. In the process of researching this I&#8217;ve already become far more acquainted with Reflector and the Windows Installer than I ever hoped to be. I&#8217;ve even found out that there&#8217;s a Windows Installer blog and Windows Installer MVPs. Who knew? But are these changes the types of things that could cause disruption in a farm? Probably. And should we understand if the <em>Manage Patch Status</em> page in Central Admin accounts for problems like these? I think so. Thus, this imperfect testing by the wrong person.</p>
<h4>Replacing DLLs</h4>
<p>In the first two tests below, I copied DLLs out of an installed instance of the December Cumulative Update and replaced the installed June Cumulative Update versions of these DLLs in another machine with these newer copies. The DLLs I was looking at were for <em>Microsoft Excel Services Components</em> and <em>Microsoft InfoPath Forms Services</em> (this is how they are listed on the <em>Manage Patch Status</em> page).</p>
<h5>Manually replacing a DLL in the GAC</h5>
<p>When I manually deleted my June CU <em>Microsoft.Office.Excel.Server</em> DLL from the GAC using <em>GACUtil</em> (as you shouldn&#8217;t do), and replaced it with a newer version from the December CU, I broke my Excel Services Service Application. When I ran the Product Version Job timer job it failed to detect the change (the new version was never reflected in Manage Patch Status). Everything looked exactly as it normally would in the application event log, except for this message immediately after the normal 1015/1035 entries:</p>
<p style="margin-left: 36pt;"><span style="font-family: Segoe UI; font-size: 9pt;"><em>The Execute method of job definition Microsoft.SharePoint.Administration.<strong>SPProductVersionJobDefinition</strong> (ID 9bb9d31b-7c8b-4fd7-b52d-5fec40aa3607) threw an exception. More information is included below.<br />
</em></span></p>
<p style="background: white; margin-left: 36pt;"><em><span style="font-family: Segoe UI; font-size: 9pt;">Failed to call GetTypes on assembly Microsoft.Office.Excel.Server.MossHost, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Method &#8216;IsEditEnabledForCurrentUser&#8217; in type &#8216;Microsoft.Office.Excel.Server.MossHost.MossHost&#8217; from assembly &#8216;Microsoft.Office.Excel.Server.MossHost, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&#8217; does not have an implementation.</span><span style="color: black; font-family: Georgia; font-size: 10pt;"><br />
</span></em></p>
<p style="padding-left: 60px;"><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/TestingManagedPatchStatus3.png"><img class="alignnone size-full wp-image-1728" title="TestingManagedPatchStatus3" src="http://tristanwatkins.com/wp-content/uploads/TestingManagedPatchStatus3.png" alt="TestingManagedPatchStatus3 Testing Manage Patch Status" width="500" /></a></p>
<p>This error is informative, and would probably help me track down the issue in due course, so the Product Version Job is earning its keep, but it&#8217;s unfortunate that this version change is not displayed in <em>Manage Patch Status</em> in any way. In short: this is a good reason to run the job but it&#8217;s also good to know this kind of problem won&#8217;t appear in <em>Manage Patch Status</em>.</p>
<h5>Manually Replacing a DLL version in the Program Files directories</h5>
<p>Next, I tried to manually replace DLLs in the Program Files directories with newer versions. I searched throughout the Hive and the <em>C:\Program Files\Microsoft Office Servers\14.0\</em> directories for other versions of these files. I was working on the assumption that the version in the GAC would be in use (thanks to <a title="SharePoint Nuts and Bolts" href="http://www.sharepointnutsandbolts.com/" target="_blank">Chris O&#8217;Brien</a> for this advice), but I wanted to see if the job would successfully spot changes in these Program Files locations, since this is what the <a title="a Sharepoint Timer Job called “Product Version Job”" href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/350f0758-6446-4dc9-b029-519852d16b72" target="_blank">Microsoft Support response</a> suggested.</p>
<p>I found the same InfoPath DLL and a differently-named Excel Services DLL in these locations:</p>
<ul>
<li><em>C:\Program Files\Microsoft Office Servers\14.0\Bin\Microsoft.Office.InfoPath.Server.dll</em></li>
<li><em>C:\Program Files\Microsoft Office Servers\14.0\Bin\xlsrv.dll</em></li>
</ul>
<p>I ran the Product Version Job after deleting these files and rebooting. Again, the job failed to detect the changes.</p>
<h5>What happens with added DCOM Local Activation rights?</h5>
<p>If the farm account has DCOM Local Activation rights on the Windows Installer Service, it resolves the DCOM error event log clutter, but these rights don&#8217;t impact whether the job can detect these changed DLLs.</p>
<h4>Killing an installation part-way through</h4>
<p>Next, I rolled back to a stable state and ran the December Cumulative Update against a June Cumulative Update installation. At a random point during the installation I killed the installer (not the Products Configuration Wizard). While the installer was running I wasn&#8217;t able to monitor activity in ULS Viewer because SharePoint was being patched. However, I was looking at the <em>dbo.ServerVersionInformation</em> table in SQL Management Studio and I could see new rows with updated versions appearing as it progressed. <strong>The Cumulative Update installer was writing to the same table that the Product Version Job updates</strong><em>.</em></p>
<h5>Running the Products Configuration Wizard after fixing the failed installation</h5>
<p>Later, I fixed up my December CU installation and ran the Products Configuration Wizard. When it was running, I could see that something very similar to the Product Version Job was logged. The same informational events (1035) appeared successfully in the application event logs, without any DCOM errors or &#8220;Failed to Connect to Server&#8221; (1015) application event log warnings. Presumably this succeeds (with or without the DCOM rights) because the Setup account that&#8217;s running the wizard is a local admin and therefor already has the DCOM Local Activation rights. However, I&#8217;m not sure what&#8217;s gained by updating <em>Manage Patch Status</em> at this point, since the <em>dbo.ServerVersionInformation</em> table was already updated by the installer. I won&#8217;t dwell on that thought too much though, since there may be a very good reason for the update at this time.</p>
<p>For those who are interested in the workings of this update, it&#8217;s worth noting that the Products Configuration Wizard appears to use the <span style="font-family: Microsoft Sans Serif; font-size: 8pt;">Microsoft.SharePoint.Administration.SPServerProductInfo.UpdateProductInfoInDatabase(Guid serverGuid) </span>method. <strong>It effectively calls the same thing as the Product Version Job timer job</strong>, if I&#8217;m reading all of this right. A fuller glimpse of the ULS logs looks like this:</p>
<p style="padding-left: 30px;"><span style="font-family: Microsoft Sans Serif; font-size: 8pt;">Updating SPPersistedObject SPServer Name=SPSQL. Version: 120278 Ensure: False, HashCode: 2459215, Id: 20c667df-1bc3-486b-869c-a3ba40f83af5, Stack:<br />
at Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate()<br />
at Microsoft.SharePoint.Administration.SPServerProductInfo.UpdateProductInfoInDatabase(Guid serverGuid)<br />
at Microsoft.SharePoint.PostSetupConfiguration.FinalizeTask.Run()<br />
at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()<br />
at System.Threading.ExecutionContext.runTryCode(Object userData)<br />
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)<br />
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()</span></p>
<p style="padding-left: 30px;"><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/TestingManagedPatchStatus2.png"><img class="alignnone size-full wp-image-1729" title="TestingManagedPatchStatus2" src="http://tristanwatkins.com/wp-content/uploads/TestingManagedPatchStatus2.png" alt="TestingManagedPatchStatus2 Testing Manage Patch Status" width="500" /></a></p>
<p>It&#8217;s also worth noting that this log entry correlates with the <em>MsiInstaller</em> 1035 success events in the application event logs that I mentioned above.</p>
<h4>What about deleting DLLs?</h4>
<p>While investigating this, I ran all of this by my colleague <a title="Jalil Sear's [MCPD SharePoint 2010] Weblog" href="http://jasear.wordpress.com/" target="_blank">Jalil Sear</a>. He came up with an interesting idea: that I shouldn&#8217;t just update the DLLs, but I should try to delete them altogether. So I deleted <em>Microsoft.Office.Excel.Server</em> and <em>Microsoft.Office.Infopath.Server</em> <a href="http://support.microsoft.com/kb/873195">from the registry and the GAC</a> and reset IIS. I re-ran the Product Version Job and it completed normally, with and without DCOM Local Activation rights. Nothing was detected, although my entire Manage Service Applications page was annihilated. Again, we might have expected this to be reported in <em>Manage Patch Status</em>.</p>
<h3>Summary of Test Results</h3>
<ul>
<li>
<div style="background: white;"><span style="color: black;">The Product Version Job reports &#8220;Success&#8221; in the Timer Job Status, regardless of all of these considerations. It may fail for other reasons, but all of these issues obtain when the job reports a successful status. In other words, the job reports &#8220;success&#8221; with or without DCOM rights.<br />
</span></div>
</li>
<li>
<div style="background: white;"><span style="color: black;">It&#8217;s not clear to what extent the Product Version Job can account for problems while the installer runs, because the installer already makes updates to the <em>dbo.ServerVersionInformation</em> table as it goes.<br />
</span></div>
<ul>
<li>
<div style="background: white;"><span style="color: black;">One might reasonably wonder what would happen to whatever was being updated while the installer failed. Obviously it&#8217;s hard to make broad statements about that when we don&#8217;t know at which precise point it failed, but in any case the remedial action will be to run the installer again - potentially after fixing something else. One way or the other, if you have this problem, I don&#8217;t see how the timer job is going to help because it&#8217;s unlikely it will be able to run against this server until the installation is fixed.</span></div>
</li>
</ul>
</li>
<li>
<div style="background: white;"><span style="color: black;">It&#8217;s also not clear to what extent the Product Version Job can account for issues that occur while the Products Configuration Wizard is running – effectively for the same reasons as above. If you have a problem with that wizard, the remedial action will be to fix the problem and run the wizard again.</span></div>
</li>
<li>
<div style="background: white;"><span style="color: black;"><em>Manage Patch Status</em> doesn&#8217;t seem to account for other issues in the GAC or the Program Files directories, such as manual changes to DLLs. Presumably this is because these actions have been taken without using the Windows Installer Service.</span></div>
<ul>
<li>
<div style="background: white;"><span style="color: black;">Obviously, if you&#8217;re running an environment where these sorts of changes are routinely possible, then this job is a lesser concern than Change Management processes that might prevent these things from happening in the first place, but it&#8217;s worth knowing that the job did not detect these changes in my tests.</span></div>
</li>
</ul>
</li>
<li>
<div style="background: white;"><span style="color: black;">It&#8217;s not clear in which cases the Product Version Job is useful for recording the difference between product versions on different servers, since the installer should have already updated the <em>dbo.ServerVersionInformation</em> table</span><span style="color: black;">.<br />
</span></div>
<ul>
<li>
<div style="background: white;"><span style="color: black;">One example where the job might be useful is the case where a server is restored to a pre-upgrade state. However, it&#8217;s likely that this restore operation will prompt some other remedy, like reverting all of the other servers in the farm or upgrading this server again. So the usefulness feels limited to me. Still, this is probably sufficient reason to run the job absent any other considerations. </span></div>
</li>
</ul>
</li>
<li>
<div style="background: white;"><span style="color: black;">The <em>Manage Patch Status</em> page is still useful for tracking differences across servers where the servers are legitimately running at different patch levels, although typically that&#8217;s not a state you&#8217;d want to run in for long.<br />
</span></div>
</li>
</ul>
<h3 style="background: white;"><span style="color: black;">Putting this information to use</span></h3>
<p style="background: white;"><span style="color: black;">I wouldn&#8217;t suggest reading this as the full story, since I only ran these against a single SQL/SharePoint box. At a minimum the Product Version Job can detect product version mismatches when a server is restored, and servers in long-term mismatched states. As a plus, it will throw an error in your application logs to let you know if there&#8217;s something wrong with the DLL that it expects in the GAC. Unfortunately, that isn&#8217;t reported to <em>Manage Patch Status</em>. In any case, as teams/farms increase in size this job becomes more useful for shared understanding. </span></p>
<p style="background: white;"><span style="color: black;">At the end of this review, I think the important thing is to recognise the limits of the data in <em>Manage Patch Status</em>. It&#8217;s not going to be bullet-proof. For any actions taken with the Windows Installer, this data should be pretty reliable, since it&#8217;s updated during install, with the Products Configuration Wizard and with the Product Version Job. For anything else - who knows? It doesn&#8217;t appear to have been designed for that, and I have no idea what a SharePoint timer job would look like that could offer these kinds of assurances. Presumably it would have to be a management agent of some sort. At that point you&#8217;re in to Configuration or Operations Management territory and we already have different tools for that. Come to think of it, if you really want to know, &#8220;<em>the install state of the machine</em>&#8220;, that&#8217;s probably what you&#8217;re really looking for. But if you want to know the current versions of successfully-installed SharePoint Products on all servers in your farm, then <em>Manage Patch Status</em> should be accurate in most cases, because of the Product Version Job. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/testing-manage-patch-status/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Inside Manage Patch Status</title>
		<link>http://tristanwatkins.com/index.php/inside-manage-patch-status/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=inside-manage-patch-status</link>
		<comments>http://tristanwatkins.com/index.php/inside-manage-patch-status/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 01:06:00 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[IT Management]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[DCOM]]></category>
		<category><![CDATA[Manage Patch Status]]></category>
		<category><![CDATA[Reflector]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Timer Job]]></category>
		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1698</guid>
		<description><![CDATA[Back in August, I stumbled across a new type of DCOM 10016 error in SharePoint 2010, caused by the Product Version Job timer job. When I found the error, I was primarily concerned with keeping my event logs clean. Since then, the inelegance of my original work-around and the incomplete picture I contented myself with [...]]]></description>
			<content:encoded><![CDATA[<p>Back in August, I stumbled across <a href="http://tristanwatkins.com/index.php/product-version-job-dcom-10016-strikes-again/">a new type of DCOM 10016 error in SharePoint 2010, caused by the <em>Product Version Job</em> timer job</a>. When I found the error, I was primarily concerned with keeping my event logs clean. Since then, the inelegance of my original work-around and the incomplete picture I contented myself with at the time began to nag at me, but I only recently started digging deeper, prompted largely by the fact that this topic has generated more traffic to my blog in the last quarter than any other.</p>
<p><span id="more-1698"></span></p>
<p>This is a fairly lengthy consideration, but I think it&#8217;s necessary to cover these details because the information in the <em>Managed Patch Status</em> (AKA <em>Check Product and Patch Installation Status</em>) page in Central Administration may not be revealing what we&#8217;d reasonably infer.</p>
<p>In this post and the posts to follow, I&#8217;ll cover a few things:</p>
<ul>
<li>Why I think granting Local Activation rights to the Windows Installer Service puts a dent in the least-privileged model.</li>
<li>What this DCOM error means to the reliability of data displayed in the new <em>Manage Patch Status</em> page in SharePoint 2010 Central Administration.</li>
<li>What the job does and doesn&#8217;t do, with or without rights to launch the Windows Installer Service.</li>
<li>Considerations for disabling the Product Version Job timer job.</li>
</ul>
<h3>The Problems</h3>
<p>I believe most people will come to this problem in the way that I have, which I&#8217;ve seen repeated on many TechNet fora since then. People want to know why they are getting inundated with approximately 100 DCOM 10016 System event log errors and twice that many <em>MsiInstaller</em> Application event log warnings and informational events nightly, at around 00:52. The exact number of messages will vary based on the SharePoint products installed in the farm, including related products such as Project Server, Office Web Apps, FAST Search, etc. For a more detailed review of these events and how they can be identified, please refer to <a href="http://tristanwatkins.com/index.php/product-version-job-dcom-10016-strikes-again/">my original post</a>.</p>
<p>Additionally, we have a nightly timer job which seems to be failing, per these DCOM errors. The job itself claims to check, &#8220;<em>the install state of the machine and puts that data into the database&#8221;.</em> This is rather vague. As of August this is what I understood:</p>
<ul style="margin-left: 38pt;">
<li>The timer job appeared to fail to use the Windows Installer Service to perform a check of installed SharePoint products.</li>
<li>I didn&#8217;t know anything about how that check happened or how the data was used afterwards.</li>
<li>I didn&#8217;t know if the event log messages were ephemeral (annoying only because they generate clutter), as they are for the IIS WAMREG DCOM 10016 errors.</li>
<li>I felt it would be bad to grant rights to launch the Windows Installer Service to the farm account in an otherwise-least-privileged configuration (where the Farm account does not already have local administration rights).</li>
</ul>
<p>In this post I want to dwell on the inner workings of the  job itself, and then come back to the implications for our event logs, permissions and job scheduling.</p>
<h3>Inside the Job</h3>
<p>In order to find out how the job works, I had to crack it open in <a href="http://www.red-gate.com/products/dotnet-development/reflector/">.NET Reflector</a> and SQL Management Studio. I need to disclaim this post, because I&#8217;m not a developer, and to be perfectly honest I&#8217;m in a bit over my head with Reflector, but I was prompted to investigate in this way based on the apparent misinformation in <a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/350f0758-6446-4dc9-b029-519852d16b72">one of the TechNet threads I mentioned above</a>. Geoff Belair went to considerable lengths to work through this topic with Microsoft support, but from what I can tell, there are a number of mistakes in the answer he received. It suggests the wrong database gets updated and is a fairly inaccurate description of what this job does, by my reading of the following clues.</p>
<h4>(In)validating the Microsoft Support Explanation</h4>
<p>It&#8217;s unfair to take a Microsoft Support e-mail which has been re-posted on the web as authoritative, but this was the closest thing to official information I&#8217;ve found, other than the brief words about this job on TechNet and MSDN. The key bit of that reply that I wanted to immediately verify was this:</p>
<p style="margin-left: 36pt;"><em><span style="font-size: 10pt;">The Timer Job &#8220;Product Version Job&#8221; runs every night at 12:52 A.M and analyze which are the dlls are updated, once it get the information then it&#8217;s put the updated version data on to Content Database &#8220;dbo.version&#8221; table.</span><br />
</em></p>
<p>So I took a look at the <em>dbo.Versions</em> table in the Central Admin Configuration database (never do this in production, of course).<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus1.png"><img class="alignnone size-full wp-image-1706" title="InsideManagedPatchStatus1" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus1.png" alt="InsideManagedPatchStatus1 Inside Manage Patch Status" width="500" /></a></p>
<p>What caught my eye was that there was no product information in this table whatsoever. I knew that the job was checking for the state of individual products based on the <em>MsiInstaller</em> informational events in the Application logs. So I poked around a little more and found what I was expecting in the <em>dbo.ServerVersionInformation</em> table:<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus2.png"><img class="alignnone size-full wp-image-1707" title="InsideManagedPatchStatus2" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus2.png" alt="InsideManagedPatchStatus2 Inside Manage Patch Status" width="500" /></a></p>
<p>Having looked at this data, I realised it was pretty familiar. I went back to Central Administration, looked in the <em>Upgrade and Migration</em> section and clicked on <em>Check Product and Patch Installation Status</em>, which took me to this <em>Manage Patch Status</em> page. The key thing to note is that the version numbers and the Patch Status columns match the data on the page below precisely. I&#8217;ve actually manually updated that data just to give it a sneaky check, and this page is definitely pulling it in from that source. You&#8217;d never do this on a real system, however. I wouldn&#8217;t even do it without having a recent snapshot for my development environment.<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus3.png"><img class="alignnone size-full wp-image-1708" title="InsideManagedPatchStatus3" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus3.png" alt="InsideManagedPatchStatus3 Inside Manage Patch Status" width="500" /></a></p>
<p>At this point I was pretty confident the timer job was trying to update this table, but I wanted to get a bit better assurance before testing the job in anger. I also wanted to understand how the Windows Installer Service gets involved, as this activity seems to take place outside the ULS logs.</p>
<h4>Analysing the job in .NET Reflector</h4>
<p>Cracking open ULS Viewer while running the timer job, you immediately see the fourth event in my screenshot below. <em>Job-admin-product-version</em> calls <em>SPProductVersionJobDefinition</em>.<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus4.png"><img class="alignnone size-full wp-image-1709" title="InsideManagedPatchStatus4" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus4.png" alt="InsideManagedPatchStatus4 Inside Manage Patch Status" width="500" /></a></p>
<p>This is where I opened Reflector. I started with <em>Microsoft.SharePoint.dll</em> and drilled down to <em>Microsoft.SharePoint.Administration.SPProductVersionJobDefinition</em>, which executes <em>SPServerProductInfo.UpdateProductInfoInDatabase(Server.Local.Id);<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus8.png"></a><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus5.png"><img class="alignnone size-full wp-image-1710" title="InsideManagedPatchStatus5" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus5.png" alt="InsideManagedPatchStatus5 Inside Manage Patch Status" width="500" /></a><br />
</em></p>
<p><em>SPServerProductInfo</em> calls the <em>GetMsiData</em> method, which works with a number of <em>SPMsi</em> methods (<em>SPMsi.GetPropertyUsingProductCode</em>, <em>SPMsi.MsiEnumPatchesEx</em>, <em>SPMsi.MsiGetPatchInfoEx</em>, <em>SPMsi.SPMsiSafeHandle</em>, <em>SPMsi.MsiOpenDatabase</em>, <em>SPMsi.MsiDatabaseQuery</em>). Further down, <em>SPProductVersionRow</em> is clearly collecting the same data as the columns of the SQL <em>dbo.ServerVersionInfromation</em> table I examined earlier. If interested in these workings, I&#8217;d recommend perusing it with Reflector at a more leisurely pace than this.<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus6.png"><img class="alignnone size-full wp-image-1711" title="InsideManagedPatchStatus6" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus6.png" alt="InsideManagedPatchStatus6 Inside Manage Patch Status" width="500" /></a></p>
<p>Note: all of the <em>SPMsi.Msi* </em>methods are using <em>msi.dll</em>, which is the Windows Installer.<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus71.png"><img class="alignnone size-full wp-image-1712" title="InsideManagedPatchStatus7" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus71.png" alt="InsideManagedPatchStatus71 Inside Manage Patch Status" width="500" /></a></p>
<h3>The Product Version Job&#8217;s use of the Windows Installer</h3>
<p>From here, I could explore the workings of the Windows Installer in finer detail – but for the purposes of our SharePoint knowledge, all that&#8217;s really important to know is that the timer job is using the Windows Installer&#8217;s own methods to query the installed product versions on the servers. As I understand it, the Windows Installer typically stores this data in the registry, at <em>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\</em>. That&#8217;s an oversimplification, but stick with me for now.</p>
<p>We can see a number of SharePoint products in this location. They are all keys beginning with &#8220;90140000&#8243;. Taking a look at the data in these keys, it&#8217;s pretty clear that it aligns with the data that&#8217;s written to SQL&#8217;s <em>dbo.ServerVersionInformation</em> table (down to the registry key value in the &#8220;Patchable Unit&#8221; column). Additionally, these are all the same products that are identified in our Application event log messages. You can even see the patched products have a longer key, with a suffix that looks something like &#8220;_Office14.OSERVER_{48017E90-141F-4948-A576-F4B9B6284B70}&#8221;.<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus81.png"><img class="alignnone size-full wp-image-1713" title="InsideManagedPatchStatus8" src="http://tristanwatkins.com/wp-content/uploads/InsideManagedPatchStatus81.png" alt="InsideManagedPatchStatus81 Inside Manage Patch Status" width="500" /></a></p>
<p>Perhaps most importantly, the <a href="http://msdn.microsoft.com/en-us/library/aa370859%28v=VS.85%29.aspx"><em>ProductVersion</em> Property of the Windows Installer</a> is what defines the four &#8220;version&#8221; values (including &#8220;DisplayVersion&#8221;) of the Uninstall keys above. This is the key information that the Product Version Job is after, and the name of this timer job feels like an even better fit in this context.</p>
<p>While unravelling the job in this way has given me a fair amount of confidence about how SharePoint retrieves this information, there are still a number of issues to consider. For starters, I suspect people look at <em>Manage Patch Status</em> data and feel pretty confident about that representation of the installation state of their servers. Being a fairly skeptical type, I suspected that the Windows Installer&#8217;s &#8220;record keeping&#8221; would be good up to a point, but no further, so I put on my demolition hat and started breaking stuff, in an effort to place that point. In <a href="http://tristanwatkins.com/index.php/testing-manage-patch-status/">my next post</a> I&#8217;ll review those test results, then consider the implications for DCOM rights to the Windows Installer Service and the timer job scheduling options.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/inside-manage-patch-status/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Development Environment Performance Test Results</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-test-results/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-development-environment-performance-test-results</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-test-results/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 00:09:23 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ASUS]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1542</guid>
		<description><![CDATA[Drum roll please! At long last, I bring you the results of a great deal of testing. Here&#8217;s the background: SharePoint Development Productivity and Virtualisation Technologies SharePoint 2010 Development Environment Performance Tests I&#8217;ve said my preamble in those posts, so I&#8217;ll cut to the chase here. High-Level Summary of Findings Disk performance and bus speed [...]]]></description>
			<content:encoded><![CDATA[<p>Drum roll please! At long last, I bring you the results of a great deal of testing. Here&#8217;s the background:</p>
<ul>
<li><a title="SharePoint Development Productivity and Virtualisation Technologies" href="http://tristanwatkins.com/index.php/sharepoint-development-productivity-and-virtualisation-technologies/">SharePoint Development Productivity and Virtualisation Technologies</a></li>
<li><a title="SharePoint 2010 Development Environment Performance Tests" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/">SharePoint 2010 Development Environment Performance Tests</a></li>
</ul>
<p>I&#8217;ve said my preamble in those posts, so I&#8217;ll cut to the chase here.</p>
<p><span id="more-1542"></span></p>
<h3>High-Level Summary of Findings</h3>
<ul>
<li>
<div><em>Disk performance and bus speed did not prove to be significant factors</em> in these results (except for virtual machine start-up times). Obviously there are fundamental differences about SSD (yet untested) that may skew this picture, but I will be surprised to see big differences. If we&#8217;ve got these tests right, and they are actually representative of the tasks that slow down development, then we would expect to see wider variance across bus or disk speeds. We don&#8217;t.</div>
<ul>
<li>
<div>This assumes the disk is relatively uncontended. Virtual machine performance degrades in every type of test while large file operations are running concurrently on the same disk. This could be copying an ISO, importing or exporting a virtual machine or any other sustained large file operations.</div>
<ul>
<li>
<div>At a minimum, this is certainly an argument for running VMs on their own spindle, whether it&#8217;s over USB, eSATA or SATA. This may be an area where SSD shines.</div>
</li>
</ul>
</li>
<li>These disk performance figures can be found towards the bottom of this post. Desktop performance was nearly identical running on USB2 at 5400 RPM versus a RAID0 stripe or a RAID1 array on 7200 RPM disks. Laptop performance was also nearly identical over USB2 5400 RPM versus eSATA 7200 RPM.</li>
</ul>
</li>
<li><em>Hyper-V performance has been poor on all laptops</em> with i-Series CPUs. This is more pronounced in some areas than others. Our three-year-old model with a Core 2 Duo actually outperforms the new i7 in some cases. When these results are added to known driver issues with Hyper-V on many newer laptop GPUs, we&#8217;re looking at a configuration that&#8217;s unfit for SharePoint 2010 development.</li>
<li>
<div><em>VMWare Workstation outperforms Hyper-V on laptops</em> by significant margins in most areas. The exceptions to this are start-up time and performance during the first 10-30 minutes of use (I believe VMWare is ballooning during this time). After that, VMWare Workstation is faster than Hyper-V in every type of test.</div>
<ul>
<li>As a long-time advocate of Hyper-V despite usability deficiencies, I was probably more surprised by the significance of these differences than anyone. I wrongly assumed that Type-I hypervisors would outperform Type-II in nearly every way. While that may hold true on server class hardware, it doesn&#8217;t hold true here. I&#8217;m a convert.</li>
</ul>
</li>
<li>
<div>While less pronounced, <em>these same findings hold true on the desktop</em>.</div>
<ul>
<li>Desktop performance is very quick on VMWare Workstation, considerably out-performing even Amazon EC2.</li>
<li>We can realise significant productivity gains by moving all users who are primarily office-based to a desktop + VMWare Workstation configuration from laptop + Hyper-V, at a fairly small cost (probably half the cost of EC2 over three years – see <a href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/">my recent posts on EC2</a> for more information).</li>
<li>Desktop performance on Hyper-V, while notably slower than VMWare Workstation, is generally faster than VMWare Workstation on the i7 laptop.</li>
</ul>
</li>
<li>
<div>Laptop performance is significantly improved on our current model with VMWare Workstation. These improvements are also realised on the newer model laptop, but the performance delta between the two physical systems is not so significant that it&#8217;s compelling to move to a low speed i7 from a reasonable speed Core 2 Duo.</div>
<ul>
<li>The total times for the &#8220;End-to-end site creation to debugging tests&#8221; were <em>two and a half minutes faster</em> with VMWare Workstation compared to Hyper-V on the Dell XPS M1330. Moving from Hyper-V to VMWare Workstation for laptop users is now an obvious choice.</li>
<li>
<div><em>The benefit of spending on i7 processors is in doubt</em>. We are seeing very minor performance <em>penalties</em> when adding more than two CPUs in both VMWare Workstation and Hyper-V for most tests. There were also very minor improvements for some tasks, but on the whole there does not appear to be a measurable benefit. This might vary if the host OS is doing a great deal with the CPU, but that is liable to cause other contention issues than just in the CPU (on a laptop).</div>
</li>
<li>
<div>The only tasks that appeared to use all 8 cores in a SharePoint VM were:</div>
<ul>
<li>Retract/Deploy of a solution (but only very briefly)</li>
<li>Create web app, or Create site collection (but at low percentages)</li>
<li>Rebuild with Code Analysis (but not fully)</li>
</ul>
</li>
<li>We will be running future tests on i5 processors at higher clock speeds to see how these models perform relative to the 1.6 GHz i7.</li>
</ul>
</li>
<li>The User Profile Service Connection doubles first page load times after an IISRESET in all test cases. I consider this a full validation of <a href="http://tristanwatkins.com/index.php/user-profile-service-connection-slow-first-page-load/">these preliminary findings</a>.</li>
</ul>
<h3>Snapshot of key data</h3>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint216.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint216.png" alt="120210 0009 SharePoint216 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></p>
<h3>The Data</h3>
<p>How to read the data:</p>
<ul>
<li><strong>Hardware</strong>: the physical laptop or desktop model (or Amazon&#8217;s EC2)</li>
<li><strong>Virtualisation</strong>: &#8220;Hyper-V&#8221; is short-hand for the Hyper-V role in Windows Server 2008 R2. &#8220;VMWare 7.1.2&#8243; is short-hand for VMWare Workstation.</li>
<li><strong>#CPU</strong>: the number of physical CPU presented to the guest operating systems. Multiple logical cores were only tested in the 4&#215;2 results below.</li>
<li><strong>Disk</strong>: the physical disk configuration where the virtual hard drives are running.</li>
<li><strong>RAM</strong>: the amount of RAM running inside the SharePoint Server 2010 VM. The Amazon EC2 instances were &#8220;large instances&#8221; but the domain controller was running locally.</li>
<li><strong>Test: </strong>The tests have been described in more detail in my last post.</li>
<li><strong>Result 1, 2, 3:</strong> Each test was carried out three times. The far-right column, <strong>Average Result</strong>, is an average of the three.</li>
<li>The Two &#8220;<span style="color: #a6a6a6;"><strong>Average Load…</strong></span>&#8221; rows are an average per-result of the three rows above them. These are tests built on SharePoint 2010 default site templates, which anyone should be able to replicate.</li>
<li>The &#8220;<span style="color: #a6a6a6;"><strong>Total create to debug time</strong></span>&#8221; row is a sum of the five rows above it.</li>
<li>All results are in seconds. In cell G21 below, 524 seconds = 9 minutes and 2 seconds.</li>
<li>For more information on the tests and the testing methodology, see <a href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/">my last post</a>.</li>
</ul>
<h3>Hyper-V versus VMWare tests, all other things being equal</h3>
<p><span style="text-decoration: underline;">Dell XPS M1330, running Hyper-V<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint224.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint224.png" alt="120210 0009 SharePoint224 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">Dell Studio XPS 1645 laptop, running Hyper-V<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint234.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint234.png" alt="120210 0009 SharePoint234 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop, running Hyper-V<br />
</span>Note: these Hyper-V tests were accidentally carried out while the VM was running on a RAID 0 stripe rather than on the System disk, so this is not apples and apples, but later disk tests on VMWare Workstation indicated that this shouldn&#8217;t make much of a difference, so I&#8217;ve left these results in, with this comment. <span style="text-decoration: underline;"><br />
</span></p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint242.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint242.png" alt="120210 0009 SharePoint242 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></p>
<p><span style="text-decoration: underline;">Dell XPS M1330, running VMWare Workstation<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint252.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint252.png" alt="120210 0009 SharePoint252 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">Dell Studio XPS 1645 laptop, running VMWare Workstation<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint272.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint272.png" alt="120210 0009 SharePoint272 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop, running VMWare Workstation<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint262.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint262.png" alt="120210 0009 SharePoint262 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<h3>VMWare Workstation i7 tests with 4 or 8 cores</h3>
<p><span style="text-decoration: underline;">Dell Studio XPS 1645 laptop, running VMWare Workstation with 4 CPU<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint292.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint292.png" alt="120210 0009 SharePoint292 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop, running VMWare Workstation with 4 CPU<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint282.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint282.png" alt="120210 0009 SharePoint282 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<p><span style="text-decoration: underline;">Dell Studio XPS 1645 laptop, running VMWare Workstation with 4 CPU, 2 Cores Each<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2113.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2113.png" alt="120210 0009 SharePoint2113 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop, running VMWare Workstation with 4 CPU, 2 Cores Each<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2102.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2102.png" alt="120210 0009 SharePoint2102 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<h3>Amazon EC2 Results</h3>
<p>Notes:</p>
<ul>
<li>Times were much slower one day than others. This hasn&#8217;t been measured over time, but it&#8217;s worth keeping in mind. Other EC2 users reported similar problems on the same day.</li>
<li>Also note: a couple of rows of test data (245 and 248) have been accidentally deleted, but the results were not unexpected in any way.</li>
<li>Row 263 has no data because measuring time to desktop with EC2 would be too imprecise. It would normally be available within five minutes from start, for reference.</li>
</ul>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2122.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2122.png" alt="120210 0009 SharePoint2122 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></p>
<h3>Disk Tests on VMWare Workstation with two cores</h3>
<p>The format of these tests change slightly, as I am grouping all disk permutations for the Dell Studio XPS 1645 together, then moving on to the ASUS V7-P7H55E desktop. I grouped them this way because the tests were fundamentally different for laptops and desktops. I did not get the time to repeat the laptop tests on the Dell XPS M1330.</p>
<p><span style="text-decoration: underline;">Dell Studio XPS 1645 laptop with VM running on 5400 RPM USB2<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2161.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2161.png" alt="120210 0009 SharePoint2161 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">Dell Studio XPS 1645 laptop with VM running on 7200 RPM eSATA<br />
</span><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint217.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint217.png" alt="120210 0009 SharePoint217 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop with VM running on 5400 RPM USB2<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2131.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2131.png" alt="120210 0009 SharePoint2131 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop with VM running on a 2nd set of RAID 0 spindles<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2141.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2141.png" alt="120210 0009 SharePoint2141 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<p><span style="text-decoration: underline;">ASUS V7-P7H55E desktop with VM running on a 2nd set of RAID 1 spindles<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2151.png"><img src="http://tristanwatkins.com/wp-content/uploads/120210_0009_SharePoint2151.png" alt="120210 0009 SharePoint2151 SharePoint 2010 Development Environment Performance Test Results" width="500" title="SharePoint 2010 Development Environment Performance Test Results" /></a></span></p>
<p>&#8230;and with that, I&#8217;ll let you draw your own conclusions. Should anyone want to contribute supplementary test data in the comments here, or carry out further tests (perhaps with SSD), I would love to see the results. As I mentioned in the last post, there&#8217;s still more testing to do.</p>
<p>Update 08 June 2011:<a title="SharePoint 2010 Development Environment Performance: SSD, i5 vs. i7, WEI and Sandy Bridge" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-ssd-i5-i7-wei-sandy-bridge/">SharePoint 2010 Development Environment Performance: SSD, i5 vs. i7, WEI and Sandy Bridge</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-test-results/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Development Environment Performance Tests</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-development-environment-performance-tests</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 06:30:35 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ASUS]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1328</guid>
		<description><![CDATA[As I indicated in my last post, I&#8217;ve been plundering the depths of SharePoint development productivity in recent months. Understanding the context established in that post is pretty essential to understanding what follows here. In a nutshell, I&#8217;m trying to improve system performance for current users of our SharePoint development environment. This is not as [...]]]></description>
			<content:encoded><![CDATA[<p>As I indicated in <a title="SharePoint Development Productivity and Virtualisation Technologies" href="http://tristanwatkins.com/index.php/sharepoint-development-productivity-and-virtualisation-technologies/" target="_blank">my last post</a>, I&#8217;ve been plundering the depths of SharePoint development productivity in recent months. Understanding the context established in that post is pretty essential to understanding what follows here. In a nutshell, I&#8217;m trying to improve system performance for current users of our <a title="SharePoint Development Environment" href="http://tristanwatkins.com/index.php/building-a-sharepoint-20072010-development-environment/" target="_blank">SharePoint development environment</a>. This is not as simple as examining the <a title="Windows Experience Index" href="http://windows.microsoft.com/en-GB/windows7/products/features/windows-experience-index" target="_blank">Windows Experience Index</a> on a number of laptop models. I needed to consult with our users to identify which tasks are slow for them and devise tests that would allow me to measure system performance on different physical and virtual systems. In this post I will describe the systems, the tests and the testing process before reviewing the results.</p>
<h3>The Tests</h3>
<p>The 21 tests that we settled on were the result of discussions with a number of the core developers, consultants and architects at <a title="Content and Code" href="http://www.contentandcode.com/pages/default.aspx" target="_blank">Content and Code</a>, plus a few tests that I threw in to confirm/disconfirm some of my suppositions, such as <a title="ser Profile Service Connection and Slow First Page Load" href="http://tristanwatkins.com/index.php/user-profile-service-connection-slow-first-page-load/" target="_blank">the impact of the User Profile Service Connection on first page load time</a>. All 21 tests were run three times for each permutation of hardware candidate and virtualisation technology. We also tested on Amazon EC2. I will discuss the testing process in more detail in a moment.</p>
<p><span id="more-1328"></span></p>
<p>These tests have been selected for a few reasons:</p>
<ul>
<li>They are tests that anyone can run, including Visual-Studio-allergic types like myself.</li>
<li>They re-enact real-world productivity loss. All tests needed to be significant on our current system or they were thrown out.</li>
<li>They needed to account for tasks that impact non-developers as well as people that have their head down in code 40 hours/week.</li>
<li>They needed to be examples of tests that would stress systems in different ways.</li>
</ul>
<p><span style="text-decoration: underline;">First page load tests</span><br />
These tests were designed to examine what, if any impact different sets of features, functionality and structure might have on first page load times after the application pool is recycled or IIS is reset (while gathering a large set of data to make comparisons across systems). I also wanted to fully validate my preliminary findings about the User Profile Service Connection.</p>
<p>I ran these tests against NTLM-authenticated web applications with the following root site collections:</p>
<ul>
<li>Central Administration</li>
<li>Blank Site</li>
<li>MySite</li>
<li>Blank Site, with no User Profile Service Connection</li>
<li>The Content and Code website solution (structure, without content)</li>
<li>A custom intranet solution (structure, without content)</li>
</ul>
<p>All of these first page load tests were repeated for application pool recycles and IIS resets.</p>
<p><span style="text-decoration: underline;">End-to-end site creation to debugging tests<br />
</span>I hope these tests are fairly self-explanatory. I used the <a title="Content and Code" href="http://www.contentandcode.com/pages/default.aspx" target="_blank">Content and Code</a> website solution because it&#8217;s a public site that people can examine if they want to understand more about the structure of the solution and the scope of customisation tested here. <span style="text-decoration: underline;"><br />
</span></p>
<ol>
<li> Create new NTLM-authenticated web application from the GUI</li>
<li> Create new Publishing Portal Site Collection from the GUI, at the root of the new web application</li>
<li> Deploy Content and Code website solution from Visual Studio</li>
<li> <span style="text-decoration: line-through;">Delete the publishing site collection</span> (this was a necessary step, but not a test that I timed)</li>
<li>Create Content and Code website (structure, without content) from the GUI</li>
<li> Debug Content and Code website solution in Visual Studio</li>
</ol>
<p><span style="text-decoration: underline;">Core development tests</span><br />
These tests were added to account for pure development activity for large projects with lots of dependencies. We turned Code Analysis on for the first test because this is a feature that&#8217;s very useful but taxes systems pretty heavily. The code deployment times were all fairly small relative to other tests here, but we need to keep in mind that this could be repeated literally hundreds of times per-day. Note: full deployment is accounted for above in the end-to-end test.</p>
<ul>
<li> Rebuild Large Project w/Code Analysis</li>
<li> Deploy Large Project to GAC/BIN</li>
</ul>
<p><span style="text-decoration: underline;">Disk/IO tests</span><br />
These tests were thrown in because they have an impact on productivity even if they aren&#8217;t particularly routine. For the first test I measured the time from turning on the VM until the desktop rendered after logging on. The second test doesn&#8217;t really meet the &#8220;real world&#8221; criteria I name above, but it is a task that can be a productivity barrier in some cases.</p>
<ul>
<li> Time to desktop</li>
<li> Run full crawl (three web apps, no content)</li>
</ul>
<h3>The Testing</h3>
<p>The testing process was entirely subject to personal fallibility, as I carried these tests out myself using fairly imprecise methods like a browser-based stopwatch running on my host system (I made sure not to time things inside the guest, where time can slip occasionally). I also went to great lengths to carry out these tests when the systems were performing optimally; I would run through all of the tests once before recording the first set of results. I felt this approach was the best way to discount random variance. The test results were largely very consistent, so I believe these efforts paid off. Obviously the down-side to testing in this manner is that real work is not carried out in a vacuum, but I don&#8217;t see any other way to come up with repeatable tests aside from measures like these. It&#8217;s what works for science, after all.</p>
<h3>The Virtualisation Technologies</h3>
<p>As I mentioned in my last post, I chose to limit the virtualisation technologies to a single technology from each of the types I described. I had to postpone testing against &#8220;local systems&#8221; due to time pressures. It was the option that fell off because we are unlikely to ditch virtualisation any time soon. It works well for us.</p>
<p>To reiterate here, the candidate technologies were VMWare Workstation 7.1, the Hyper-V role in Windows Server 2008 R2 and Amazon&#8217; s EC2 IaaS offering (a Red Hat implementation of the Xen hypervisor). Again, there&#8217;s background for all of this in my last post.</p>
<h3>What About the Server Room?</h3>
<p>One thing I haven&#8217;t discussed in any detail so far is VDI or Remote Desktop services. I briefly touched on shared development environments, but I&#8217;ve not talked about hosted, individualised development environments. The reason we ruled this out is cost. While this would probably be the best-performing option, all other things being equal, the costs associated with providing this level of performance in the server room would be pretty enormous. For our purposes we might have exceeded power, cooling and weight limitations before we considered the costs of new blade centres and SANs. These costs would probably be even greater in the datacentre. In short, the same criticism applies to individualised hosted development environments as to shared environments: <em>redundancy and resilience at this level is overkill given the      associated costs</em>. The data is not critical and anything that needs to be backed up can be stored elsewhere (like TFS).</p>
<p>Basically, people opt for VDI or Remote Desktop services because a mass of underutilised desktop systems can be heavily consolidated. These systems are not underutilised.</p>
<h3>The Hardware Candidates</h3>
<p><a title="Dell Studio XPS M1330" href="http://www1.euro.dell.com/uk/en/home/ubuntu/xpsnb_m1330_ubuntu/pd.aspx?refid=xpsnb_m1330_ubuntu&amp;cs=ukdhs1&amp;s=dhs" target="_blank">Dell XPS M1330</a><br />
This is our current laptop model, upgraded with a 320GB 7200 RPM local hard drive and 8GB RAM. One of the serious options we&#8217;re considering is a laptop refresh, due to the age and fail rate of the graphics cards and motherboards on these models.</p>
<p><a title="Dell Studio XPS 16" href="http://www1.euro.dell.com/uk/en/business/Dell-Laptops/laptop-studio-xps-16/pd.aspx?refid=laptop-studio-xps-16&amp;s=bsd&amp;cs=ukbsdt1" target="_blank">Dell Studio XPS 1645</a><br />
This was the least expensive decent i7 laptop I could find for testing purposes, and a leading candidate as a replacement laptop. With an £833 (ex-VAT) starting price it could be bumped up to 8GB RAM for a little over £100 more via <a title="4GB, 204-pin SODIMM, DDR3 PC3-8500 memory module" href="http://www.crucial.com/uk/store/mpartspecs.aspx?mtbpoid=4499F2D6A5CA7304&amp;click=true" target="_blank">Crucial</a>. It&#8217;s a very heavy laptop and the glossy shell does it no favours, picking up fingerprints within seconds of use. However, it comes wth a 1.6 GHz i7 processor, 500GB 7200 RPM disk standard, eSATA port and HDMI. No USB3. Basically, nothing here was an absolute deal-breaker for us if performance was good.</p>
<p><a title="ASUS V6-P7H55E" href="http://www.scan.co.uk/products/asus-v6-p7h55e-s1156-intel-h55-express-ddr3-1066-1333-pci-e-%28x16%29-sata-3gb-s-vga" target="_blank">ASUS V6-P7H55E</a><br />
This is a barebones system with the following configuration/cost (as priced at scan.co.uk):</p>
<ul>
<li>ASUS V6-P7H55E barebones System = £121.67</li>
<li>Intel i7 870 (8M Cache, 2.93 GHz) = £217.57</li>
<li>4GB Corsair XMS3 DDR3 PC3-10666 (1333) Dual Channel &#8211; 4x£56.59 = £226.36</li>
<li>1TB Seagate Barracuda SATA 3Gb/s, 7200rpm, 32MB Cache,  8.5 ms, NCQ &#8211; 3x£41.94 = £125.82</li>
<li>Adaptec 1220SA PCI-E RAID Card = £46.40</li>
<li>ASUS 512MB GeForce G 210 DDR2 NVIDIA Graphics Card = £27.71</li>
<li>Total = £768.58 (VAT-inclusive)</li>
</ul>
<p>This system is configured with three internal 1TB hard drives and 16GB RAM. We needed to purchase the RAID card because the motherboard does not have an on-board RAID controller. The graphics card was necessary because there are no integrated graphics on <em>desktop</em> i7 processors (although there are for some i3 and i5 models). The disk configuration was variable, as this was one of the test scenarios. The assumption going in was that two disks would be configured in a RAID 0 stripe or a RAID 1 array, depending on performance outcomes. We would only stripe the disks if there was an obvious, significant performance gain. The third disk would be attached to the on-board SATA controller. I will discuss the recommended configuration in more detail later. Also note: the graphics card supports two monitors across any two of the three outputs, but not three concurrently. Finally, the ASUS V7-P7H55E is nearly identical in every respect. We went with the V6 based on availability.</p>
<p><span style="text-decoration: underline;">Other laptop models</span><br />
During preliminary testing we looked at the Lenovo W510, the Dell Precision 6500 and the Alienware M17x among others. All of these models were candidates that we never ruled out, but we didn&#8217;t have sufficient time with them to run the entire set of tests. However, these models had a reasonably similar configuration to the Dell Studio XPS 1645 and the Hyper-V tests we ran on these systems yielded similar results to our test model.</p>
<p><span style="text-decoration: underline;">Other desktop models<br />
</span>Obviously a barebones system won&#8217;t appeal to everyone as a business solution, and it took me some time to persuade myself that it might be suitable for these environments. It wasn&#8217;t until I actually priced up this model and compared it to the comparable Dell T1500 (+~£600) and HP Z200 (slower than either model, and pricier) that I considered how it might work for us more seriously.<span style="text-decoration: underline;"><br />
</span></p>
<h3>What am I examining, and not examining?</h3>
<p>We have an old laptop, a new laptop, a new desktop and the cloud. Excepting the cloud (which is fixed), we&#8217;re permuting each of these hardware options with VMWare Workstation and Hyper-V test results. We&#8217;re then adding tests to examine the impact of spindle/bus speeds and the impact of adding/removing cores to these VMs. Ultimately, I wanted to quantify the productivity impacts of a change to our hardware and/or virtualisation technology as opposed to a change <em>within</em> our virtualisation technology, insofar as these tests could be decoupled.</p>
<p>I am not examining every virtualisation solution nor every hardware permutation but I do try to account for a number of these variables with these tests. I would love it if people carried out similar tests on their environments to help build knowledge in an area that&#8217;s hugely uninspected today. These are some of the other tests that I hope to revisit next year:</p>
<ul>
<li>The impact of application pooling on first page load times. Preliminary tests suggested there might be a small impact, but nowhere near as significant as the User Profile Service Connection. This warrants further inspection.</li>
<li>The performance of &#8220;local systems&#8221; on this same hardware. As I mention above, these tests had to be de-prioritised, but I feel it would be worth identifying if there are any of these development-specific tasks where some, or all virtual technologies suffer.</li>
<li>While I am running tests against a number of disk buses and configurations, I did not get the opportunity to test SSD performance. Obviously a lot of people will want to know the impact of SSD on these timings, but unfortunately I won&#8217;t have an opportunity to inspect that until early next year at the earliest.</li>
<li>In some cases we work with deep snapshot trees. I want to gain an understanding of how differencing across ten or more files impacts performance for these tasks.</li>
<li>Compare performance of a higher-clocked i5 to a lower-clocked i7 at a similar price range and potentially explore over-clocking options.</li>
<li>Compare slower memory on an otherwise-identical system.</li>
<li>Run VirtualBox tests on an otherwise-identical system.</li>
<li>Assess the impact of virtualisation optimisations.</li>
</ul>
<p>Obviously these tests say nothing about the usability of the system, power costs, mobility and more. For the purposes of this post I&#8217;m only concerned with outlining how I tested system performance for these real world tasks. In <a title="SharePoint 2010 Development Environment Performance Test Results" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-test-results/">the next post</a>, at long last, I will share the results.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SharePoint Development Productivity and Virtualisation Technologies</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-development-productivity-and-virtualisation-technologies/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-development-productivity-and-virtualisation-technologies</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-development-productivity-and-virtualisation-technologies/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 06:30:07 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1365</guid>
		<description><![CDATA[In the near future, I&#8217;ll be discussing the results of the SharePoint Development productivity testing that I&#8217;ve been working on for some time. A key part of the background to that story is a choice to virtualise SharePoint, and within that, a choice of virtualisation technology. In this post I&#8217;ll be reviewing the problem in [...]]]></description>
			<content:encoded><![CDATA[<p>In the near future, I&#8217;ll be discussing the results of the SharePoint Development productivity testing that I&#8217;ve been working on for some time. A key part of the background to that story is a choice to virtualise SharePoint, and within that, a choice of virtualisation technology. In this post I&#8217;ll be reviewing the problem in advance of a more detailed discussion of the productivity gains and losses with some of these technologies/approaches.</p>
<p>For clarity, I will quickly state the problem as I see it. <em>SharePoint 2010 system requirements and practitioner mobility requirements are inherently at odds</em>. What guidance exists for this unique problem space tends to regurgitate preferences/allegiances rather than comparing technologies and ratifying assumptions with real-world tests. At best, you get system performance indices for a single laptop model, but these results may vary when any hardware component is changed.</p>
<p><span id="more-1365"></span></p>
<h3>How can virtualisation improve system performance?</h3>
<p>It doesn&#8217;t. People look to virtualisation to solve other problems. However, SharePoint 2010 performs differently in different virtualisation technologies, and the margins of these differences vary by hardware configuration. By all means, the advantages of virtualisation often make it a desirable choice, but these performance characteristics need to be accounted for, lest system performance losses negate the productivity improvements that virtualisation can introduce.</p>
<h3>Why virtualise?</h3>
<p>There are a number of advantages to virtual systems over physical systems. Many of these benefits can also be obtained with sufficiently mature systems management technologies and physical systems, but these benefits are often easier, quicker or less costly to implement through virtualisation. Some of the benefits include:</p>
<ul>
<li>Provisioning times for new SharePoint environments.</li>
<li>Standardisation through cloned, network-isolated virtual machines.</li>
<li>Account for volatility with snapshots.</li>
<li>Standard builds per-project, to share with team      members, reducing project initiation costs.</li>
<li>Virtual appliances produced by Microsoft and third parties,      such as the Information Worker Demo VM.</li>
<li>Reduced hardware rebuilds by removing development tools and      SharePoint from the host.</li>
</ul>
<p>This list is by no means comprehensive. As I say, many of these benefits can be realised with scripting and/or management tools. This list is only intended to illustrate why it&#8217;s a powerful design option.</p>
<h3>An overview of virtualisation and related technologies</h3>
<p>Some example technologies by type:</p>
<ul>
<li>Type I      Hypervisors
<ul>
<li>VMWare       ESXi</li>
<li>Hyper-V</li>
</ul>
</li>
<li>Type II      Hypervisors
<ul>
<li>Oracle       VirtualBox</li>
<li>VMWare       Workstation</li>
</ul>
</li>
<li>Infrastructure      as a Service (IaaS)
<ul>
<li>Amazon       EC2</li>
<li>Azure       VM Role (forthcoming)</li>
</ul>
</li>
<li>Local      Systems
<ul>
<li>Native       Boot Windows 7 (virtual hard disk)</li>
<li>Citrix       XenDesktop (VDI)</li>
</ul>
</li>
</ul>
<p>Note: Virtual PC was not included because it doesn&#8217;t support 64-bit guest operating systems. SharePoint 2010 only runs on 64-bit systems.</p>
<p>Some of the <em>alleged</em> benefits of these approaches:</p>
<ul>
<li>Type I      Hypervisors
<ul>
<li>Better       performance**</li>
<li>Good       management options/tools</li>
</ul>
</li>
<li>Type II      Hypervisors
<ul>
<li>Host       Operating System</li>
<li>Easy       to use</li>
</ul>
</li>
<li>Infrastructure      as a Service (IaaS)
<ul>
<li>Pay       as you go</li>
<li>Scalability</li>
</ul>
</li>
<li>Local      Systems
<ul>
<li>Good       performance</li>
<li>Simple       to use</li>
</ul>
</li>
</ul>
<p>Some of the <em>alleged</em> drawbacks of these approaches:</p>
<ul>
<li>Type I      Hypervisors
<ul>
<li>No       Host Operating System***</li>
<li>Driver       issues*</li>
<li>Complicated</li>
</ul>
</li>
<li>Type II      Hypervisors
<ul>
<li>Historically       poor performance**</li>
<li>Historically,       less manageable (snapshots, import/export, etc)</li>
</ul>
</li>
<li>Infrastructure      as a Service (IaaS)
<ul>
<li>Requires       stable connectivity</li>
<li>Complicated</li>
<li>Pay-As-You-Go       requires diligence</li>
</ul>
</li>
<li>Local      Systems
<ul>
<li>Easy       to damage</li>
<li>Slow       to rebuild</li>
</ul>
</li>
</ul>
<p>*Hyper-V has driver issues on some newer laptops. These are most noticeable with graphics, although I have seen audio driver problems as well. Some of these driver issues may be fixed or <a title="Hyper-V video issues fixed by Windows Server 2008 R2 SP1 Beta?" href="../index.php/hyperv-video-issues-fixed-windows-server-2008-r2-sp1-beta/" target="_blank">alleviated in the SP1 Beta/RC for Windows Server 2008 R2</a>.</p>
<p>**This performance bias is one of the things I will be examining in more detail in later posts.</p>
<p>***This is only &#8220;sort of&#8221; true for Hyper-V, which invokes a &#8220;parent partition&#8221;. This is a special type of virtual machine that fulfils a similar role to a host operating system, and is often referred to as such.</p>
<h3>Why are &#8220;Local Systems&#8221; included?</h3>
<p>I&#8217;ve lumped these in for two reasons. 1) They share some characteristics with the other virtualisation technologies, like running from virtual hard drives. 2) By virtue of being local systems, they fundamentally negate some of the benefits that are obtained through virtualisation. Cloning these machines is not an option if SharePoint is installed and configured. It will be necessary to invest in scripting environment provision in order to retain those productivity benefits. It happens that many people choose to take this scripting approach, but it&#8217;s worth pointing out that network isolation and cloning can achieve similar results through virtualisation, and this does not obtain with Local Systems.</p>
<h3>What about shared, hosted development environments?</h3>
<p>In this scenario I&#8217;m thinking of hosted development farms, where some or all members of a team use a single environment. Based on my subjective reading of the community, this option seems to be fading away. I think there are three reasons why.</p>
<ol>
<li>Cost.      Running development environments on proper infrastructure is expensive.      Most components have been made redundant, the storage will be expensive if      it performs well, the power/cooling costs are considerably more expensive      than for laptops/desktops and you will need to pay people to      manage the systems. Even when these costs are split across multiple      developers, it&#8217;s still expensive unless resources are overcommitted, which negates productivity gains. It also      tends to be more expensive to provision new environments and this process      can often be an obstacle to business agility. In a nutshell, <em>these are      protections that are unnecessary for development environments.</em> Redundancy and resilience at this level is overkill given the      associated costs. The most important assets, such as code, standard images      and project-specific builds can be protected separately.</li>
<li>Hive      pollution. If these farms will support multiple projects, as they often do      per the previous comments about provisioning, then these systems will      inherently differ from the test/stage/UAT/production systems they should      resemble. Core files in the hive can be altered from project-to-project,      resulting in unexpected behaviour when moving code between these      environments. This can seriously complicate troubleshooting and should be      avoided.</li>
<li>Mobility.      These farms aren&#8217;t terribly useful to people who are travelling or who are      working on-site with restricted outbound connectivity.</li>
</ol>
<p>All of this said, there are times when project-specific requirements may make shared farms a good option. It may be sensible to take another look for:</p>
<ul>
<li>Integration      projects.</li>
<li>Developing      with large amounts of data.</li>
<li>Projects      with heavy infrastructure requirements, such as FAST.
<ul>
<li>Perhaps       individual development environments can consume a shared FAST Service       Application?</li>
</ul>
</li>
</ul>
<p>Generally speaking, I believe these resources should be provided only in these niche cases.</p>
<h3>How is this different from IaaS?</h3>
<p>The main differences are costs and capital. Cloud-based infrastructure services are fundamentally just virtualised hosting on an enormous scale. This scale lowers costs to a point where it may be affordable to deploy individual machines per-developer. Although in my analyses I found that IaaS would be more expensive than desktop workstations over three years, this still may be compelling when cash flow issues preclude significant one-time investment or credit flows are restricted. IaaS should also be kept in mind when specific projects require significant provisioning or investment for a short term, for instance testing in a large farm.</p>
<p>While providing a single cloud-based VM per-user solves the first two issues with shared development environments, mobility is still an issue. In many places, stable mobile broadband is flaky at best. Additionally, there are key architectural differences that need to be accounted for when working in the cloud, and on a Pay-As-You-Go basis. I address all of this in <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis" href="../index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/" target="_blank">my series on SharePoint 2010 Infrastructure for Amazon EC2</a>.</p>
<h3>Which approach is best?</h3>
<p>This is a high-level overview of the design constraints that limited my choices, before I plunged into a concrete performance review of the remaining technologies.</p>
<p><span style="text-decoration: underline;">Local Systems</span><br />
In my view, Local Systems are only a better choice if the supporting IT systems and processes are very mature and the performance benefits are clear and significant. For most development scenarios, that has yet to be proven. I&#8217;ve postponed this virtual to physical performance comparison for now, as the other benefits of virtualisation have ruled this approach out for us, but I hope to revisit it in the new year.</p>
<p><span style="text-decoration: underline;">IaaS</span><br />
IaaS has two key planning considerations. The first is fairly obvious. Outbound RDP Connectivity needs to be open whenever the systems are needed. I encourage people to consider this in some detail and pilot with many types of users before diving in. The second consideration is Pay-As-You-Go. While cloud providers often have an always-on option, it’s usually pretty pricey. The alternative is to find a mechanism to limit compute usage to when it is truly being used, without introducing usability problems. Management tools or scripting may be able to answer these problems, but no one should enter in to this process thinking it will be easy. <em>This is not an easy option</em>. For a more detailed consideration of these issues, refer to <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis" href="../index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/" target="_blank">my series on EC2</a>.</p>
<p><span style="text-decoration: underline;">Type II Hypervisors</span><br />
VMWare Workstation is the most mature desktop virtualisation product on the market, although in recent years VirtualBox has been gaining share. Choosing between these technologies for my tests was never going to be easy, but I reduced it to a few factors:</p>
<ul>
<li>I’ve      never met a VirtualBox user that would complain about using VMWare but I      can’t say that proposition is reversible. There are a lot      of SharePoint practitioners with a strong preference for VMWare.</li>
<li>VMWare      Workstation has native interoperability with other VMWare assets. While VirtualBox      supports the VMDK file format, it’s not quite the same thing.</li>
<li>Both      products are fairly inexpensive in the grand scheme of things.</li>
<li>I had      stability issues with VirtualBox circa version 3.14 that left a bad taste      in my mouth.</li>
</ul>
<p>Perhaps most importantly, I felt that the performance comparison of VMWare Workstation to Hyper-V would be the most valuable decision-making information.</p>
<p><span style="text-decoration: underline;">Type I Hypervisors</span><br />
Most Type I Hypervisors would not be suitable for desktop virtualisation because they don’t have a host operating system. While it would be possible to boot a guest OS and remote in to other Virtual Machines over internal networks, this is a complicated approach and the networking requirements would be enough to put off most developers. However, as mentioned above, Hyper-V is a notable pseudo-exception to this with its parent partition.</p>
<p>We’ve been using the Hyper-V role in Windows Server 2008 R2 for development for a little over a year now. While we have successfully capitalised on many of the productivity benefits of virtualisation through this approach, there are a few issues that have never been entirely satisfactory:</p>
<ul>
<li>Despite      having the host OS, using Hyper-V is still complicated for      non-Systems people – particularly the networking.
<ul>
<li>Work-around       solutions for Wireless networking are fiddly.</li>
<li>Lack       of self-contained NAT requires the use of Internet Connection Sharing in       order to achieve network isolation, which some users struggle with.</li>
</ul>
</li>
<li>Lack of      Sleep/Hibernate is painful for many users.</li>
<li>Graphics      performance is poor – particularly with large PowerPoint/Visio files,      large images and video.</li>
<li>Audio      can also suffer during large file operations.</li>
<li>Hyper-V is not ready for laptop power schemes.</li>
</ul>
<p>Despite these niggles, we’ve continued to use Hyper-V while waiting for the <a title="Hyper-V video issues fixed by Windows Server 2008 R2 SP1 Beta?" href="../index.php/hyperv-video-issues-fixed-windows-server-2008-r2-sp1-beta/" target="_blank">forthcoming graphics/memory improvements in Windows Server 2008 R2 SP1</a>. I would class these usability problems as significant inconveniences that sometimes manifest themselves in lost productivity – particularly with new users learning our approach.</p>
<h3>New Problems in SharePoint 2010</h3>
<p>Since we properly immersed ourselves in SharePoint 2010 development, negative reports about performance started to roll in. These proved hard to validate until a few months ago when my colleagues showed me first page load times after an IISRESET in excess of one minute. This was concrete and repeatable. The problem was more severe on some systems than others, but it was clearly a problem.</p>
<p>The performance tests I’ve been conducting have been an effort to pick apart these results in Hyper-V. Was this new in SharePoint 2010 or did it amplify something that was minor before? Do we get the same problems on different virtualisation technologies, in the cloud or is this a symptom of virtualisation itself? In my next post I’ll discuss the environments, the tests and the testing process.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-development-productivity-and-virtualisation-technologies/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-infrastructure-amazon-ec2-cost-analysis</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 06:30:10 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1456</guid>
		<description><![CDATA[In the previous posts in this series I&#8217;ve discussed the AWS platform and took a closer look at storage, snapshots and provisioning, looked at networking and cloning and then reviewed administration, delegation and licensing. In this post I will analyse cost, which is probably the most important factor when considering a move to the cloud. [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous posts in this series I&#8217;ve discussed <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/" target="_blank">the AWS platform and took a closer look at storage, snapshots and   provisioning</a>, looked at <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/" target="_blank">networking and cloning</a> and then reviewed <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/" target="_blank">administration, delegation and licensing</a>. In this post I will analyse cost, which is probably the most important factor when considering a move to the cloud.</p>
<p><span id="more-1456"></span></p>
<p><span style="text-decoration: underline;">Other posts in this series </span></p>
<ul>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/">SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning</a></li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/">SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking</a></li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/">SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing</a></li>
<li>SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis</li>
<li><a title="Amazon VPC and VM Import Updates" href="http://tristanwatkins.com/index.php/amazon-vpc-and-vm-import-updates/">Amazon VPC and VM Import Updates</a></li>
</ul>
<h3>When would AWS be compelling, despite the complexity?</h3>
<p>I&#8217;ve covered most of the design topics that I feel are relevant to SharePoint 2010 on EC2 now, so it&#8217;s time to talk about why we would use it, despite the obvious complexity that it introduces. The potential benefits included:</p>
<ul>
<li>Scalability. This is pretty hard to question. AWS definitely scales.</li>
<li>Cash flow: The On-Demand services are Pay-As-You-Go, so this clearly helps when cash is tight.</li>
<li>Infrastructure costs/support: This needs to be validated. See the <a title="AWS Premium Support Pricing" href="https://aws.amazon.com/premiumsupport/pricing/" target="_blank">AWS Premium Support Pricing</a> page for more information about the cost of platform support.</li>
<li>Performance: I will be <a title="SharePoint 2010 Development Environment Performance Test Results" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-test-results/">diving much deeper in to performance</a> over the next week or two and will be analysing EC2 alongside laptops and desktops. For now I will say that it performs well, but it isn&#8217;t the best-performing solution that we reviewed. Subjectively I would say that I don&#8217;t think most developers would consider a large instance to be slow.</li>
<li>Availability anywhere (with an outbound RDP connection): Obviously the down side here is that this connection isn&#8217;t always available or reliable everywhere, for instance on a train.</li>
<li>Special scenarios: Some examples I can think of here would include  testing for large farms and office moves. I shan&#8217;t delve in to the  scenarios, but there are sure to be others.</li>
<li>Cost: This needs to be validated, and I will share an example analysis below.</li>
</ul>
<h3>Actual invoice data</h3>
<p>This screen shot of an Amazon invoice (tidied up in Excel a bit) is the real invoice I received for my testing time. I&#8217;ve included it here because I think it illustrates the impact of instance usage time on total costs really well. It&#8217;s by far the largest cost at ~90% of the bill for this testing time, and that included a couple of weeks when I wasn&#8217;t using the instances. During that &#8220;down time&#8221; I was still billed for storage use and Elastic IP address <em>disuse</em>. Keep that in mind, as you will continue to accrue charges even if you shut down your machines.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/AWSInvoiceData.png"><img class="alignnone size-full wp-image-1457" title="AWSInvoiceData" src="http://tristanwatkins.com/wp-content/uploads/AWSInvoiceData.png" alt="AWSInvoiceData SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis" width="500" /></a></p>
<h3>Example of costs over three years</h3>
<p>I projected charges based on these figures over three years for a large number of users. There were two main objectives for these calculations:</p>
<ol>
<li>Gain an understanding of the impact of on-demand usage compared to reserved instance costs.</li>
<li>Assess these costs relative to hardware costs over an average lifetime of three years.</li>
</ol>
<p>This analysis was only intended to indicate ballpark costs and some of the figures are nothing more than educated guesses, but I think they should serve their purpose as indications. This analysis didn&#8217;t factor in costs for Amazon&#8217;s Cloud Watch (monitoring and reporting), Amazon Support, licenses (other than Windows) and probably some other factors I overlooked, but I&#8217;m publishing it here as it might be useful for other high-level assessments. But obviously everyone should work this out for their own usage patterns and obviously, all price information is subject to change.</p>
<p><strong>Summary</strong><br />
For seventy users, costs could break down as follows:</p>
<ul>
<li>8 hours/day on-demand = <strong>$1950</strong>/instance over three years.</li>
<li>24 hours/day on-demand = <strong>$5295</strong>/instance over three years.</li>
<li>Mixture of 50 reserved instances running 24 hours/day and 20 On-Demand  Instances running 8 hours day = <strong>$3779</strong>/instance over three years.</li>
<li>24 hours/day reserved instances = <strong>$4511</strong>/instance over three years.</li>
</ul>
<p>The difference in cost between on-demand usage 8 hours/day vs. 24  hours/day is enormous. Even the difference between 70 on-demand instances at an average of 8 hours/day compared to 70 reserved instances is huge: reserved instances are more than twice the cost. A mixture of reserved instances and on-demand usage probably won&#8217;t help enough to make it compelling. The only way that EC2 appears to be cost  effective for large instances, used routinely, is to manage usage effectively. The detail for these calculations is provided below, with monthly costs. Those totals have been multiplied by 36 months and divided by 70 users for the cost summaries above.</p>
<p><span style="text-decoration: underline;">An important note regarding Reserved Instances and cash flow</span><br />
Reserved instances have an up-front cost of $910 per-instance per-year (or $1400 per-instance per-three-year-commitment) before usage charges are included (at a lower, reserved rate of $.24 per-instance per-hour). This means that <em>reserved instances are a lot less viable for organisations looking to EC2 for cash flow benefits</em>. The figures above were calculated using the $910 up-front cost, as I don&#8217;t believe most people will commit to three years of usage from the start. The reserved instance prices would clearly come down quite a bit with that three-year commitment, so feel free to recalculate as you like, but keep in mind that higher up-front cost is even worse for cash flow.</p>
<p><span style="text-decoration: underline;">Cost assumptions<br />
</span></p>
<ul>
<li> 70 instances x 8 hours = 560 instance hours</li>
<li>560 instance hours x 230 days = 128,800 instance hours/year</li>
<li>$0.48 per-hour per-instance</li>
<li>Unattached Elastic IP Charges = $.01/hour unattached = 16 hours unattached/day/instance</li>
<li>Elastic IP Address remap charges = first 100/month free, then $.10/remap</li>
<li>EBS Storage = $.11/GB/Month x 50GB average storage</li>
<li>Data Transfer In at $.10 per GB</li>
<li>Data Transfer Out at $.15 per GB (first GB/month free)</li>
<li>Reserved instance up-front costs of $910 for one year rather than the $1400 3 year commitment</li>
<li>Bandwidth charges have not been calculated for VPC connections</li>
</ul>
<p><strong>Calculation Detail</strong><strong><span style="text-decoration: underline;"><br />
On-Demand</span></strong><span style="text-decoration: underline;"> Costs at <strong>8 hours/day</strong> average instance usage</span></p>
<ul>
<li>Instance cost = $61,824</li>
<li>16 hours unused Elastic IP charges/day = $.16 x 70 users x 230 days = $2576</li>
<li>1 remap/day x 70 users x 230 days = 16,100 remaps -1200 free = 14,900 x $.10 = $1490</li>
<li>EBS costs:
<ul>
<li>Storage: $5.50/instance/month (assuming 50GB storage) = $840</li>
<li>IO: $5.50/instance/month (assuming roughly equivalent IO costs – perhaps 30-40 IOps) = $840</li>
<li>Snapshot Gets: costs should be negligible ~$100/year</li>
<li>Snapshot Puts: costs should be negligible ~$100/year</li>
</ul>
</li>
<li>Data transfer:
<ul>
<li>In: 20GB = $2.00/instance/month = $1680</li>
<li>Out: 20GB = $3.00/instance/month = $2520</li>
</ul>
</li>
</ul>
<p>Total = $71,970/year = $5997.50/month = <strong>£3793/month</strong>*<br />
*This total does not include any support costs and is based on un-validated assumptions.</p>
<p><strong><span style="text-decoration: underline;">On-Demand</span></strong><span style="text-decoration: underline;"> Costs at <strong>24 hours/day</strong> average instance usage<br />
</span></p>
<ul>
<li>Instance cost = $185,472</li>
<li>16 hours unused Elastic IP charges/day = $.16 x 70 users x 230 days = $2576</li>
<li>1 remap/day x 70 users x 230 days = 16,100 remaps -1200 free = 14,900 x $.10 = $1490</li>
<li>EBS costs:
<ul>
<li>Storage: $5.50/instance/month (assuming 50GB storage) = $840</li>
<li>IO: $5.50/instance/month (assuming roughly equivalent IO costs – perhaps 30-40 IOps) = $840</li>
<li>Snapshot Gets: costs should be negligible ~$100/year</li>
<li>Snapshot Puts: costs should be negligible ~$100/year</li>
</ul>
</li>
<li>Data transfer:
<ul>
<li>In: 20GB = $2.00/instance/month = $1680</li>
<li>Out: 20GB = $3.00/instance/month = $2520</li>
</ul>
</li>
</ul>
<p>Total = $195,618/year = $16,301.50/month = <strong>£10,295/month</strong>*<br />
*This total does not include any support costs and is based on un-validated assumptions.</p>
<p><strong><span style="text-decoration: underline;">Reserved Instances</span></strong><span style="text-decoration: underline;"> – Costs at <strong>24 hours/day</strong> instance usage<br />
</span></p>
<ul>
<li>Instance cost ($910 x 70) = $63,700 + (70 x 24 hours = $92736 full-time usage) = $156,436</li>
<li>16 hours unused Elastic IP charges/day = $.16 x 70 users x 230 days = $2576</li>
<li>1 remap/day x 70 users x 230 days = 16,100 remaps -1200 free = 14,900 x $.10 = $1490</li>
<li>EBS costs:
<ul>
<li>Storage: $5.50/instance/month (assuming 50GB storage) = $840</li>
<li>IO: $5.50/instance/month (assuming roughly equivalent IO costs – perhaps 30-40 IOps) = $840</li>
<li>Snapshot Gets: costs should be negligible ~$100/year</li>
<li>Snapshot Puts: costs should be negligible ~$100/year</li>
</ul>
</li>
<li>Data transfer:
<ul>
<li>In: 20GB = $2.00/instance/month = $1680</li>
<li>Out: 20GB = $3.00/instance/month = $2520</li>
</ul>
</li>
</ul>
<p>Total = $165,582/year = $13,882/month = <strong>£8771/month</strong>*<br />
*This total does not include any support costs and is based on un-validated assumptions.</p>
<p><strong><span style="text-decoration: underline;">Mixture of On-demand and Reserved</span></strong><span style="text-decoration: underline;"> Instances – Costs at <strong>24 hours/day</strong> instance usage</span><br />
Mixture of 50 Reserved Instances and 20 On-Demand Instances.</p>
<ul>
<li>Reserved Instance cost ($910 x 50) = $45,500 + (50 x 24 hours = $66,240 full-time usage) = $111,740</li>
<li>On-Demand Instance cost at 8 hours/day average instance usage = 20 instances x 8 hours x $.48 x 230 days = $17,664</li>
<li>16 hours unused Elastic IP charges/day = $.16 x 70 users x 230 days = $2576</li>
<li>1 remap/day x 70 users x 230 days = 16,100 remaps -1200 free = 14,900 x $.10 = $1490</li>
<li>EBS costs:
<ul>
<li>Storage: $5.50/instance/month (assuming 50GB storage) = $840</li>
<li>IO: $5.50/instance/month (assuming roughly equivalent IO costs – perhaps 30-40 IOps) = $840</li>
<li>Snapshot Gets: costs should be negligible ~$100/year</li>
<li>Snapshot Puts: costs should be negligible ~$100/year</li>
</ul>
</li>
<li>Data transfer:
<ul>
<li>In: 20GB = $2.00/instance/month = $1680</li>
<li>Out: 20GB = $3.00/instance/month = $2520</li>
</ul>
</li>
</ul>
<p>Total = $139,550/year = $11,629.17/month = <strong>£7348/month</strong>*<br />
*This total does not include any support costs and is based on un-validated assumptions.</p>
<h3>Findings</h3>
<p>Amazon Web Services can be quite expensive if usage is not controlled effectively. Based on these calculation, I don&#8217;t feel that $1950/instance over three years is bad value. These environments perform well and provisioning is very quick. There are no underlying virtualisation support costs or power costs. The scalability is inherently appealing and the Pay-As-You-Go model might be compelling for some businesses or independent users, despite all other considerations. In our case, we dove deeper in to the productivity question, attempting to get a handle on how the performance of server-class hardware in the cloud stacks up relative to laptops and desktop workstations. <em>We wanted to understand if the complexity, potential remote worker issues and cost might be justified based on productivity gains.</em> Some of these findings were surprising, as I will reveal in my next series of posts on <a title="SharePoint 2010 Development Environment Performance Tests" href="http://tristanwatkins.com/index.php/sharepoint-2010-development-environment-performance-tests/">SharePoint development environment performance</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 06:30:44 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1434</guid>
		<description><![CDATA[In the first part of this series on SharePoint 2010 infrastructure considerations for Amazon EC2, I introduced the AWS platform and took a closer look at storage, snapshots and provisioning. In the second post I moved on to networking and cloning. In this third post I will discuss administration, delegation and licensing. Other posts in [...]]]></description>
			<content:encoded><![CDATA[<p>In <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning" href="../index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/" target="_blank">the first part of this series</a> on SharePoint 2010 infrastructure considerations for Amazon EC2, I  introduced the AWS platform and took a closer look at storage, snapshots and  provisioning. In <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking" href="../index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/" target="_blank">the second post</a> I moved on to networking and cloning. In this third post I will discuss administration, delegation and licensing.</p>
<p><span id="more-1434"></span></p>
<p><span style="text-decoration: underline;">Other posts in this series</span></p>
<ul>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/">SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning</a></li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/">SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking</a></li>
<li>SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing</li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/">SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis</a></li>
<li><a title="Amazon VPC and VM Import Updates" href="http://tristanwatkins.com/index.php/amazon-vpc-and-vm-import-updates/">Amazon VPC and VM Import Updates</a></li>
</ul>
<h3>Administration, Delegation and Usage Costs</h3>
<p><strong>The Tools</strong></p>
<p>Unfortunately, the AWS Management Console user  experience is fairly hideous. It doesn&#8217;t size properly in the browser  and it has annoying synchronous post-back behaviours. It generally feels  like an enormous Java app. I&#8217;m reminded of Cisco  administration consoles circa the early part of this century. However,  there is an Add-on for Firefox called <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609">ElasticFox</a> which improves things a bit, but I wouldn’t say I’m thrilled with it  either. I would classify it as less clunky, but I&#8217;d hesitate to go much  further.</p>
<p><span style="text-decoration: underline;">The AWS Management Console<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/AWSManagementConsole2.png"><img class="alignnone size-full wp-image-1447" title="AWSManagementConsole2" src="http://tristanwatkins.com/wp-content/uploads/AWSManagementConsole2.png" alt="AWSManagementConsole2 SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing" width="500" /></a></span></p>
<p><span style="text-decoration: underline;">ElasticFox</span><br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/ElasticFox2.png"><img class="alignnone size-full wp-image-1448" title="ElasticFox2" src="http://tristanwatkins.com/wp-content/uploads/ElasticFox2.png" alt="ElasticFox2 SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing" width="500" /></a></p>
<p>My colleague <a href="http://brendannewell.com/musings/">Brendan Newell</a> co-evaluated Amazon Web Services with me. He identified we would need a  more sophisticated management tool very early on. He found <a href="http://labslice.com/">LabSlice</a> and we looked at that for a bit. It&#8217;s fairly basic, but it adds  some functionality that makes it compelling by comparison: policies,  delegation and reporting. Those features provide administrative controls  for smart delegation, or at least a start towards that control. It is a  new product, so it&#8217;s reasonable to expect that it will improve. If we  ever use AWS  in anger, LabSlice or a tool like it will almost certainly  form a part  of the picture unless the Amazon administrative tools  improve by then.</p>
<p><strong>Why are these added features so important? </strong></p>
<p>The underlying issue is that <em>it&#8217;s more than twice as expensive to run an instance 24/7 than at 40 hours/week</em> (at on-demand prices). Amazon provide <a title="Amazon Reserved Instances" href="http://aws.amazon.com/ec2/reserved-instances/" target="_blank">Reserved Instances</a> to try to  address this always-on option, but the cost savings of  “nearly 50%”  assume the instance would always be running at On-Demand  costs – so  you’re paying for 50% of four times as many hours at  On-Demand prices. This doesn&#8217;t really compute.</p>
<p>In reality, it may  not be possible to run instances for only 40 hours/week, but it should  be possible to run them for less than 50 hours/week for most users, with  the right controls in place, and this figure could be a lot less if  instances aren&#8217;t used every day.</p>
<p>So the question becomes how usage can  be controlled without  disrupting the value of the service. Too much  control and the service  becomes an obstacle to delivery. Too little  control and the accounting  department will be most displeased.</p>
<p>At a high  level, these are the options we considered (with some bad options thrown in to illustrate the point):</p>
<ul>
<li>Get a reporting tool that will expose usage patterns on an individual and team level.</li>
<li>Potentially bill teams for usage.</li>
<li>Potentially bill clients for usage (trickier).</li>
<li>Potentially  set up a scheduled task that will automatically shut  down an instance  eight (or nine, or ten) hours after it is launched.  Train users how to  cancel the shutdown when they will be working late.  While this solution is quite inelegant, it might work &#8211; depending on the  users and their usage patterns.</li>
<li>Use  LabSlice (or a similar tool) to allow users to turn machines on  and  off, but not to create images or provision new machines. Set up  policies to automatically shut down machines after a specific amount of  running time.</li>
<li>Get Draconian and have managers/administrators enforce shut down at  the end of the day. Keep in mind, this is likely to taint any positives  associated with this service and could prove very difficult to implement  if users have valid reasons to leave machines on periodically. Is the  enforcer really going to understand these nuances? In short, I suspect  this won&#8217;t fit the culture of most businesses.</li>
</ul>
<p>Remember, the point of all of this is to achieve the lowest cost, as  the service will probably only be affordable with these controls in  place. Without a mechanism to ensure machines are turned off, the  business is exposed to 24-hour usage costs. I will give examples of  projected costs without these controls later.</p>
<p><strong>Back to the Public IP Addresses</strong></p>
<p style="padding-left: 30px;"><em>Update 17 March 2011</em>: the information regarding the public IP addresses and the VPC below is now out of date. Please see my follow-up post on <a title="Amazon VPC and VM Import Updates" href="../index.php/amazon-vpc-and-vm-import-updates/">Amazon VPC and VM Import Updates</a> for more information.</p>
<p>If  you recall from the last post, I mentioned that new public IP addresses  are generated for instances whenever they are started up (unless the VPC is being used, in  which case there is no public IP address).  One of the features that you&#8217;ll want to find in your management tool is  the ability to connect to instances after users have started them up. This environment isn&#8217;t going to work very well unless users  can find out their new IP address every morning. As I mentioned before,  this could also probably be scripted and is likely to form a part of  other tools besides LabSlice. The point of reiterating this now is that  it&#8217;s key functionality in a management tool and it will probably be  very messy getting by without it.</p>
<p><strong>Reporting</strong></p>
<p>The last benefit of a good administration tool is reporting. If  users are routinely forgetting to turn machines off, you want to know  about it. If users aren&#8217;t using this system you probably want to know  about it too. How are they circumventing this approach, and why?</p>
<p>I  don&#8217;t think delegation can work without the reporting element, unless  shut down policies are very effective and don&#8217;t cause disruption by  terminating active sessions. Keep in mind that accountability is much less of a problem when clear, quantifiable costs can be attributed to actions. I  think the ideal balance is probably high visibility of reports  and  delegation of start/stop functionality, potentially coupled with liberal shut down policies &#8211; perhaps at 12 hours of usage. Lastly, it should be clear that any of these   approaches would need to be piloted.</p>
<h3>Licensing</h3>
<p>As mentioned in the first post in this series, Windows license costs are built in to instances and Amazon charges for instances based on the type of license they provide. The only license that must be paid for from Amazon is this Windows license and it is built in to the Pay-As-You-Go instance costs. If the instances are used for development then MSDN/Technet or other purchased licenses can be used in these environments for all licenses other than Windows, so long as the type of use is compliant.</p>
<p>Amazon offer an image with SQL built in to it. You will probably want to avoid use of this instance if you already have a SQL license, as it is considerably more expensive to run. The cost of a large Windows Server 2008 instance increases from $.48/hour to $1.08/hour accordingly. This is huge even if these numbers look small. There are 26,280 hours in three years. That&#8217;s more than $5,000 more expensive per-year (per-instance).</p>
<p>One thing that looked promising (until we realised it was only open to users in America) was the <a title="Announcing the Windows Server 'Bring Your Own License' Pilot Program" href="http://aws.amazon.com/about-aws/whats-new/2010/03/24/announcing-the-windows-server-bring-your-own-license-pilot-program/" target="_blank">&#8220;Bring Your Own License&#8221; pilot</a>. The program seems to be closed now, but I imagine this option would be interesting for readers of this  blog, should that program ever form a core part of the offering,  internationally. This of course assumes that subtracting Windows license costs from the instance charges results in a significant saving.</p>
<h3>Recommendations</h3>
<p>The main contentious issues for which there is no clear, one-size fits all guidance are topology, network configuration and management. We were looking at an all-in-one server, including the DC/DNS roles, on private and public dynamic IP addresses with considerable piloting in this configuration, supported by LabSlice. The costs of the management tool are going to be insignificant relative to what it saves you, even if you write it yourself. I consider it to be fairly indispensable, with the possible exception of Reserved Instances at the three-years up-front cost of $1400/instance (plus usage). I will explore these cost specifics in greater detail in my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-infrastructure-amazon-ec2-cloning-networking</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 06:30:17 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1433</guid>
		<description><![CDATA[In my previous post I introduced some of the peculiarities of designing SharePoint 2010 environments for Amazon&#8217;s EC2, specifically focused on the AWS platform, storage, snapshots and provisioning. In this post I continue this exploration, moving on to cloning and networking considerations. Other posts in this series SharePoint 2010 Infrastructure for Amazon EC2 Part I: [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a title="SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/" target="_blank">previous post</a> I introduced some of the peculiarities of designing SharePoint 2010 environments for Amazon&#8217;s EC2, specifically focused on the AWS platform, storage, snapshots and provisioning. In this post I continue this exploration, moving on to cloning and networking considerations.</p>
<p><span id="more-1433"></span><span style="text-decoration: underline;">Other posts in this series</span></p>
<ul>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/">SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning</a></li>
<li>SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking</li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/">SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing</a></li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/">SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis</a></li>
<li><a title="Amazon VPC and VM Import Updates" href="http://tristanwatkins.com/index.php/amazon-vpc-and-vm-import-updates/">Amazon VPC and VM Import Updates</a></li>
</ul>
<h3>Machine names, Domain SIDs and Cloning</h3>
<p>In our testing, we were able to run multiple instances of the same AMI concurrently, which can be desirable if you have a team of developers with similar or identical requirements. We could run these instances beside each other without conflicts because we had all roles (including the DC/DNS) on one machine and we locked down the firewall, which is advisable anyway in the cloud. We only allowed the RDP port inbound to start with, and opened HTTP/HTTPS traffic where it was helpful to do so. This cloning story would get much more complicated with multiple servers, as I discuss in more detail in the networking section below.</p>
<p>One big “gotcha” in this area is the default settings of the <em>EC2 Service Properties</em> when Amazon’s Windows AMI is launched initially. This is one of the few additions that Amazon packages with their Windows image. In the EC2 Service Properties you should de-select the <em>Set Computer Name</em> and <em>Set Password</em> options. The <em>Set Computer Name</em> option seriously causes problems for SharePoint, as it changes the Machine Name whenever the instance is started up. The good news is that you only need to do this once if you will be creating a new base image. Just be careful not to change this setting back later on.</p>
<p><span style="text-decoration: underline;">The EC2Config Service<br />
<a href="http://tristanwatkins.com/wp-content/uploads/AmazonEC2ConfigService.png"><img class="alignnone size-full wp-image-1408" title="AmazonEC2ConfigService" src="http://tristanwatkins.com/wp-content/uploads/AmazonEC2ConfigService.png" alt="AmazonEC2ConfigService SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking" width="483" height="572" /></a></span></p>
<h3>Networking</h3>
<p>By default, Amazon assigns a public IPv4 address to EC2 instances via DHCP. This IP address changes whenever an instance is launched, allowing Amazon to manage their pool of public IPv4 addresses effectively. Until IPv6 adoption ramps up, this is the only viable option for an offering of this scale, although Amazon are actively looking at IPv6 today. By default, Amazon also assigns a private IPv4 address to EC2 instances via DHCP. This internal IP address also changes whenever an instance is launched.</p>
<p>Internal and external <em>dynamic</em> IP addressing introduces considerable design complexity for SharePoint development environments. This complexity is heightened by the addition of <em>Elastic IP Addresses</em> and the <em>Virtual Private Cloud</em> options.</p>
<p><strong>Domain Controllers and Private DHCP</strong></p>
<p>As <a href="../index.php/sharepoint-2010-not-in-a-workgroup/">I’ve mentioned before</a>, SharePoint 2010 development environments need to be members of a domain in order to successfully deploy the Search or User Profile Service Applications, but unfortunately dynamically-assigned IP addresses and domain controllers don’t play nicely together. I shan’t delve in to those details much here, but this has been known to cause problems with start-up times for DCs, and member servers won’t know how to find the DCs once the DC’s IP address changes. Additionally, there are Firewall policy implications.</p>
<p>With the exception of the Virtual Private Cloud (discussed below), we had to rule out persistent multiple-server farms for these reasons. The complexities of managing this stuff on a daily basis would be beyond most users and would probably create system instability or at the very least, add cost (by leaving the DC on all the time). The option of adding a second DC for resilience and to possibly work around some of these issues would add further complexity and cost. Basically, this wasn’t working.</p>
<p><strong>Developing on Domain Controllers</strong></p>
<p>The only viable approach we could find for working with DCs on DHCP was to make the SharePoint development machine the domain controller. This is a step backwards in many ways, as this configuration has been known to cause issues. As I summarised in March 2010 (from the link above):</p>
<ul>
<li>Domain Controller security is bad for development. It means developers will be coding as Domain Admins and they will be doing so on a machine with Domain Controller security policies. This is just a mess. It’s tighter than it should be in some respects and looser in others.</li>
<li>SQL doesn’t like to run on a DC.</li>
<li>Running a DC, SQL and SharePoint on the same machine creates a massive load of service start-up contention and sometimes the environment will start from an unstable point because dependent services will not be ready when a depending service tries to start.
<ul>
<li>This also increases start-up time considerably.</li>
</ul>
</li>
<li>Adding Visual Studio to this mix causes known performance issues. The machine simply can’t keep up with doing all of this.</li>
</ul>
<p>Having said all of that a while ago, based on lesser-performing equipment, we didn’t actually find that performance or installation were particularly troublesome on EC2, although we did encounter a security policy issue or two. I still have reservations about the code quality that will emerge from development on a domain controller, but if this is acceptable for your requirements then I think this is the most significant Private DHCP issue conquered. If not, you will probably need to look at the Virtual Private Cloud. Other topologies are conceivable but with even more complexity than we&#8217;re already contending with. These are unlikely to be broadly usable.</p>
<p><strong>Public DHCP issues</strong></p>
<p>The primary issue with dynamic public IP addresses is finding out what the new address is. This is easy enough if you have access to the AWS console, as you can pull the new address directly from the instance description and even download a file to launch an RDP connection to the new IP address directly. However, it’s very unlikely that it will be acceptable to give access to the AWS Management Console to all users. This leaves three options, as I see it:</p>
<ul>
<li>Leave the machines running 24/7 (at a potentially massive increase in cost).</li>
<li>Have an administrator send/provide the addresses to users as the instances are started up.
<ul>
<li>This feels very clunky to me and untenable in the long term.</li>
</ul>
</li>
<li>Find a management tool (there are a few) or a scripted approach to handling this scenario.</li>
</ul>
<p>Whatever the solution, it’s likely to form part of the broader question of administration, management tools and delegation, which I’ll come back to in the next post. I believe this can be solved without too much difficulty, but it requires some thought along these lines in order to avoid a mess.</p>
<p><strong>Elastic IP Addresses</strong></p>
<p>One way that Amazon has tried to ease the pain of Public DHCP is the Elastic IP Address. By default, each customer is given five, although <a href="http://aws.amazon.com/contact-us/eip_limit_request/">you can request more</a>. Elastic IP addresses are applied to an instance while it’s running. A few minutes after it has been applied it takes over from the DHCP-assigned address and users can access the instance at their usual address. However, this requires intervention by an administrator to associate the Elastic IP Address with the instance after it&#8217;s been started. Alternately it can be scripted. Just keep in mind this is another option that probably isn’t best delegated to everyone by giving all users access to the AWS console.</p>
<p>One thing that’s particularly crafty about Elastic IP Addresses is that you are charged $.01 for each hour they are <em>not</em> in use. If you’re diligent about turning off your machines when you’re not using them, you will get nailed for <em>not</em> using the IP address. Granted, it’s a small charge and with <a title="Vint Cerf Predicts UK ISP Internet Trauma When IPv4 Addresses Run Out in 2011" href="http://www.ispreview.co.uk/story/2010/11/12/vint-cerf-predicts-uk-isp-internet-trauma-when-ipv4-addresses-run-out-in-2011.html" target="_blank">IPv4 address supplies dwindling very quickly</a>, perhaps not that unreasonable.</p>
<p>In my view, Elastic IP Addresses probably aren’t going to solve a lot of problems, but in some cases it may make things easier &#8211; particularly if pointing DNS at these addresses.</p>
<p><strong>Virtual Private Cloud</strong></p>
<p style="padding-left: 30px;"><em>Update 17 March 2011</em>: the information regarding the public IP addresses and the VPC below is now out of date. Please see my follow-up post on <a title="Amazon VPC and VM Import Updates" href="http://tristanwatkins.com/index.php/amazon-vpc-and-vm-import-updates/">Amazon VPC and VM Import Updates</a> for more information.</p>
<p>The Virtual Private Cloud (VPC) is effectively a VPN connection between your network and AWS. It allows fixed private IP addresses, DHCP options like DNS/WINS servers, and allows you to connect existing assets to the cloud, for instance management or backup servers. This may also help with SSO. I shan’t belabour the design options for the VPC, because at face value it should be pretty obvious if it’s the right fit for your uses. There are obvious security considerations about opening up this communication across the WAN to a third-party, but that’s not to say there aren’t ways it can be set up well – for instance creating a dedicated domain in the VPC.</p>
<p>The most important thing to know about the VPC is that when instances are launched they only get a NIC with an IP address on a VPC subnet. <em>There is no public IP address for the instance</em>. This means the only way you can access the instance is via the other end of the VPN (typically the corporate network). This may introduce some funky routing and potentially degrade speed/reliability for users working from home or on client sites. On the other hand, it may not. It’s critical that this option is thought through with a broad design team including internal network and systems teams. I would highly recommend testing/piloting this configuration as well (noting that the initial configuration may be expensive for a test, since it will integrate with production infrastructure).</p>
<p>I think the VPC can answer a lot of the shortcomings of the standard EC2 IP addressing approach <em>if public IP addressing is not a requirement</em>. I’m not sure why NAT couldn’t have been used to allocate fixed internal addresses by default, but it hasn’t been, so we&#8217;ve only got one way in to the VPC. Once in it, you can deploy single-server machines as we did without the VPC (assuming the firewall is locked down in the same way), or join SysPrep&#8217;d SharePoint servers to a shared domain infrastructure. This assumes SharePoint provisioning (scripting installation/configuration) is mature enough that manual configuration steps don&#8217;t impede productivity. Other topologies may be valid as well. In principal it shouldn&#8217;t be miles different from your LAN. The main things to understand is that the private IP addresses are assigned by Amazon and there is just the one way in. Note: there&#8217;s quite a bit to understand about planning the VPC itself, and pricing for that traffic, which is all outside of the scope of what I&#8217;m inspecting here, so please refer to the <a title="Amazon Virtual Private Cloud" href="http://aws.amazon.com/vpc/" target="_blank">Amazon VPC</a> resources for more information. Also be aware that it&#8217;s still in Beta.</p>
<p>Networking can be enough to melt anyone&#8217;s brain, so I&#8217;ll save administration, delegation and licensing until my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 19:40:01 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1399</guid>
		<description><![CDATA[The Amazon Web Services (AWS) have been around for a while now but there’s been surprisingly little ­­use or abuse in the SharePoint community, from what I’ve seen. A notable exception to this is Andrew Woodward’s novel and interesting approach to Exchange BPOS migration via Amazon EC2. But that doesn’t talk much about SharePoint on [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://aws.amazon.com/">Amazon Web Services</a> (AWS) have been around for a while now but there’s been surprisingly  little ­­use or abuse in the SharePoint community, from what I’ve seen. A  notable exception to this is Andrew Woodward’s novel and interesting  approach to <a href="http://www.21apps.com/21apps/moving-to-bpos/">Exchange BPOS migration via Amazon EC2</a>.  But that doesn’t talk much about SharePoint on Amazon, so in these  posts I’ll give an introduction to the design constraints that pertain  to SharePoint 2010 development environments on EC2. Even if the Amazon  Web Services aren’t appealing, a lot of the issues discussed here will  apply to consumption of other Pay-As-You-Go infrastructure services,  presumably including the forthcoming Windows Azure VM role AKA <em>Hyper-V Cloud</em>. In this first post I focus on the platform, storage, snapshots and provisioning.</p>
<p><span id="more-1399"></span></p>
<p>Other posts in this series:</p>
<ul>
<li>SharePoint 2010 Infrastructure for Amazon EC2 Part I: Storage and Provisioning</li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cloning-networking/">SharePoint 2010 Infrastructure for Amazon EC2 Part II: Cloning and Networking</a></li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-administration-delegation-licensing/">SharePoint 2010 Infrastructure for Amazon EC2 Part III: Administration, Delegation and Licensing</a></li>
<li><a title="SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis" href="http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-cost-analysis/">SharePoint 2010 Infrastructure for Amazon EC2 Part IV: Cost Analysis</a></li>
<li><a title="Amazon VPC and VM Import Updates" href="http://tristanwatkins.com/index.php/amazon-vpc-and-vm-import-updates/">Amazon VPC and VM Import Updates</a></li>
</ul>
<h3>What are the Amazon Web Services?</h3>
<p>AWS is a platform in the cloud, like Windows Azure in some respects.  While these web services are distinct from traditional hosting  offerings, Amazon also provides Infrastructure as a Service (IaaS) in  the form of <a title="Amazon Elastic Compute Cloud (Amazon EC2)" href="http://aws.amazon.com/ec2/" target="_blank">Elastic Cloud Compute</a> (EC2). This is a Red Hat implementation of the Xen hypervisor, from  which virtual machines (instances) can be launched.  For accuracy, I should note that <a href="http://cloudcomputing.info/en/news/2010/09/oracle-extends-virtualization-support-to-amazon-ec2.html">Amazon recently launched a second Oracle hypervisor within EC2,</a> but that’s a distraction from this discussion. Amazon have been  providing their web services since 2006. For the purposes of these posts  I am concerned with the EC2 offering as a cloud-based alternative to  desktop development workstations, although there are other scenarios  that may be suitable for deployment in EC2, such as demonstrations or large infrastructure tests. For more information on the  difference between traditional hosting and EC2, see <a href="http://aws.amazon.com/ec2/faqs/#How_is_this_service_different_than_a_plain_hosting_service">Amazon’s FAQ on the matter</a>.</p>
<h3>What is Elasticity?</h3>
<p>This term arises frequently in the Amazon vernacular. In its essence  this means that scalability is built in to the platform. Need more CPU  or memory? Just re-launch your instance as a larger size. Need more  instances? Create them in a few minutes. Need more storage? They got it and then some. IP  addresses? They even have <em>Elastic IP addresses</em>. Bandwidth? It’s the cloud, fool.</p>
<p>AWS largely deliver on these promises, although you’ll encounter some  provisioning fiddlery before realising it. More importantly,  increased size comes at a cost. Nearly all of the Amazon price points  are ridiculously low at their smallest, but these costs are not always  linear – particularly with CPU and memory. Additionally, cost  permeates nearly every design option, and these costs persist over time.  Infinitesimally small prices need to be considered over very long  periods if IaaS is to become an alternative to hardware. I will discuss  costs in more detail later, as this topic is fundamental to the  desirability of cloud computing. If it isn’t cost effective, it probably  won’t be the right option. But in a nut shell, Elasticity means that if  you need more of anything, you can pay for it for the duration that you  need it. They definitely intend to say that you can shrink as well.</p>
<h3>EC2 Design Complexity</h3>
<p>I couldn’t possibly hope to explain everything that’s important to  know about AWS in these blog posts and I won’t try. However, it’s  important to know that the design constraints that pricing and  scalability impose on AWS require a fresh perspective.  Infrastructure  Architecture for AWS will require time, testing, piloting and a good  understanding of end-user working patterns. Once this configuration and  these patterns are clearly understood, the costs need to be projected over  long periods. This is likely to be a deep consulting exercise, since so  few design options can be left to chance; this will hopefully become  clearer as I talk more about pricing later. For now, if you don’t believe this  is complicated, have a look at the 237 page <a href="http://awsdocs.s3.amazonaws.com/EC2/2010-06-15/ec2-ug-2010-06-15.pdf">User Guide</a>, which I would class as required reading for anyone serious about EC2. The topics covered below are a summary of the areas that I feel are most important to understand with SharePoint on EC2.</p>
<h3>Storage</h3>
<p>The first thing to understand about AWS is that there are two types of storage, the Simple Storage Service (S3) and the <a title="Amazon Elastic Block Store (EBS)" href="http://aws.amazon.com/ebs/" target="_blank">Elastic Block Store</a> (EBS). Some older documents and forum posts were written before EBS was  available as a root device, so watch out for potentially misleading  information.</p>
<p><em>All SharePoint 2010 environments need to run on EBS </em>because  Windows Server 2008 will chew up more than 10 GiB off the bat (this is  the maximum size of S3 volumes). EBS storage costs are more expensive  than S3 and you pay for the number of I/O requests, so projecting costs  is a fairly inexact science. However, in my brief testing time the I/O  charges were relatively small. It’s worth noting that for the extra  cost, EBS volumes also persist and they launch faster. I am only briefly  touching on this topic, so please review the User Guide if this is  insufficient detail. The key points for now are that you must use EBS  for SharePoint instances, and EBS is more expensive than S3.</p>
<p><strong>Provisioning</strong><br />
Taking snapshots and creating new images from them is quick and easy in  EC2, once you get your head around the key concepts: AMIs, Volumes and  Snapshots.</p>
<p><strong>AMIs</strong><br />
An AMI is an Amazon Machine Image. This will be the first design choice  you encounter when launching an Instance. Amazon provides a basic  Windows Image or you can use an Amazon image with SQL included (at a  cost). You can use your own licenses for everything but Windows.</p>
<p>Once an image is running you can modify it to your taste. Once you’ve  created a new standard baseline, you can create a new image from your  instance, and when you provision new instances you will be able to select this new image rather than the Amazon one you started with. Note:  the Amazon Windows license cost is built in to the billing process;  your instance costs include the license, even after you&#8217;ve created your own new image from the original. Also note: Windows Server 2008 R2 is not available yet.</p>
<p><strong>Volumes<br />
</strong>A volume is basically a virtual hard disk. When a new instance is  created, the selected AMI is deployed to a new volume – the same size as  the image it was created from. A volume can only be attached to one  instance at a time, but an instance can have many volumes attached to  it if you want to add storage capacity.</p>
<p>Remember that you pay for the storage you use, so size your volumes  wisely. 30 GiB is unlikely to last anyone very long with Windows Server  2008, so consider at least 40, if not 50 GiB for any new root volumes.  Keep in mind, you may find the less expensive  S3 volumes useful as secondary, disposable storage if that suits  temporary needs.</p>
<p><strong>Snapshots</strong><br />
A snapshot records the state of a volume at a point in time. Once a  snapshot has been taken, a new volume (of equal or greater size) can be  created from the snapshot and that new volume can be attached to a new  instance. That new instance can be used to create a new AMI at the new  size. Snapshots and new volumes together enable you to increase system disk size. Snapshots can also be used for backup.</p>
<p>An example workflow for getting your first image at the right size might go like this:</p>
<ul>
<li>Launch an instance from the default Windows Server 2008 image.</li>
<li>Install SQL and SharePoint (this should be possible at just under 30GiB).</li>
<li>Configure stuff and shut down the instance.</li>
<li>Take a snapshot.</li>
<li>Create a new volume at 50GiB based on the snapshot.</li>
<li>Detach the existing volume from the instance and attach the new volume.</li>
<li>Create an image from the instance.</li>
<li>Launch the existing instance and create additional instances from the new AMI as needed.</li>
</ul>
<p>Note: if you will be including Visual Studio or any other sizeable  software, you will need to go through a process like this before  installing it, as it will push you over the 30GiB initial size.</p>
<p>This process is oversimplified, but it hopefully illustrates the relationship between AMIs, snapshots and volumes as they relate to provisioning. All told, I think this way of working with images, volumes and  snapshots is sensible, not terribly complicated in the EC2 scheme of  things, and the choices should be pretty straight-forward once you  understand the options and costs. However, this could potentially get  more complicated as end-users engage with these decisions. How will they  know what to ask for? Will it be necessary to involve EC2 experts in  the approval of any new systems? Training, consultancy or winging it all  have associated costs and risks. Even though I’m only talking about  development environments here, there are still risks  in committing to a  Pay-As-You-Go platform where usage is unrestricted. Keep this in mind.</p>
<p>I&#8217;m aware this is lengthy already, so I&#8217;m going to split this up.  In my next post I&#8217;ll review Cloning and  Networking.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-infrastructure-amazon-ec2-storage-provisioning/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Bit Rate Throttling Fix Released</title>
		<link>http://tristanwatkins.com/index.php/bit-rate-throttling-fix-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bit-rate-throttling-fix-released</link>
		<comments>http://tristanwatkins.com/index.php/bit-rate-throttling-fix-released/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 02:11:37 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Bit Rate Throttling]]></category>
		<category><![CDATA[BLOB Caching]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Progressive Download]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[w3wp]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1339</guid>
		<description><![CDATA[A couple of weeks ago I posted information about a Fix For Bit Rate Throttling W3WP Crashes in SharePoint 2010. A few hours ago, Jack Freelander from IIS.NET announced that IIS Media Services 4.0 has been released, including this fix. This is just a quick post to update that the fix has passed Beta, in [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago I posted information about a <a title="Fix For Bit Rate Throttling W3WP Crashes" href="http://tristanwatkins.com/index.php/fix-for-bit-rate-throttling-w3wp-crashes/" target="_blank">Fix For Bit Rate Throttling W3WP Crashes</a> in SharePoint 2010. A few hours ago, Jack Freelander from IIS.NET announced that <a title="Bit rate throttling stopping W3WP process " href="http://forums.iis.net/p/1165057/1960939.aspx#1960939" target="_blank">IIS Media Services 4.0 has been released, including this fix</a>. This is just a quick post to update that the fix has passed Beta, in case anyone was waiting on the final release before diving in.</p>
<p>I still have yet to find the time to test this myself, but I&#8217;d be very keen to hear about your experiences &#8211; good or bad. Failing that, I hope to get back to this in the next couple of weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/bit-rate-throttling-fix-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix For Bit Rate Throttling W3WP Crashes</title>
		<link>http://tristanwatkins.com/index.php/fix-for-bit-rate-throttling-w3wp-crashes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fix-for-bit-rate-throttling-w3wp-crashes</link>
		<comments>http://tristanwatkins.com/index.php/fix-for-bit-rate-throttling-w3wp-crashes/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 00:11:58 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Bit Rate Throttling]]></category>
		<category><![CDATA[BLOB]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Progressive Download]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Smooth Streaming]]></category>
		<category><![CDATA[Streaming]]></category>
		<category><![CDATA[w3wp]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1320</guid>
		<description><![CDATA[Over the Summer, we dove deep in to SharePoint 2010 for WCM when we re-launched our corporate website. As I mentioned the other day, I spent a decent amount of time looking at caching and some of the new supporting technologies, like Bit Rate Throttling, an IIS.NET extension to IIS 7.x &#8211; part of the [...]]]></description>
			<content:encoded><![CDATA[<p>Over the Summer, we dove deep in to SharePoint 2010 for WCM when we re-launched our corporate website. As I <a title="BLOB Cache, HTTP 304 Results and F5/Refresh" href="http://tristanwatkins.com/index.php/blob-cache-http-304-results-f5-refresh/" target="_blank">mentioned the other day</a>, I spent a decent amount of time looking at caching and some of the new supporting technologies, like <a title="Bit Rate Throttling" href="http://www.iis.net/download/BitRateThrottling" target="_blank">Bit Rate Throttling</a>, an IIS.NET extension to IIS 7.x &#8211; part of the <a title="IIS Media Services" href="http://www.iis.net/Media" target="_blank">IIS Media Services 3.0. package</a> that also includes <a title="Smooth Streaming" href="http://www.iis.net/download/SmoothStreaming" target="_blank">Smooth Streaming</a>. Bit Rate Throttling is like when you watch a YouTube clip and it only buffers a short time in advance of what you&#8217;re watching, also known as <strong>Progressive Download</strong>. In <a title="Plan for caching and performance (SharePoint Server 2010)" href="http://technet.microsoft.com/en-us/library/ee424404.aspx#Section2a" target="_blank">Microsoft&#8217;s words</a>, Bit Rate Throttling is&#8230;</p>
<blockquote><p>&#8220;&#8230;an IIS 7.0 extension that meters the download speeds of media file  types and data between a server and a client computer. The encoded bit  rates of media file types such as Windows Media Video (WMV), MPEG-4  (MP4), and Adobe Flash Video, are automatically detected, and the rate  at which those files are delivered to the client over HTTP are  controlled according to the Bit Rate Throttling configuration.&#8221;</p></blockquote>
<p>It basically saves you bandwidth by only transferring what you&#8217;ve watched plus a small, configurable buffer. Think about each user that starts watching a ten minute video but only watches one minute. In that time, they may have downloaded five minutes of content &#8211; quadrupling the bandwidth consumption unnecessarily. Bit Rate Throttling shares some user experience characteristics with <strong>Streaming Media</strong>, but it works on a normal web server over HTTP. It&#8217;s really quite a simple tool and I won&#8217;t devote space here to explaining it when the IIS.NET site already has some great content, including a brief introductory video. Definitely check it out.</p>
<p>So why am I writing about it?</p>
<p><span id="more-1320"></span></p>
<ul>
<li>It&#8217;s cool! We wanted to turn it on to better manage bandwidth while delivering video with SharePoint 2010&#8242;s <a title="SharePoint 2010: Media Web Part" href="http://www.chakkaradeep.com/post/SharePoint-2010-Media-Web-Part.aspx" target="_blank">Silverlight Media Web Part</a>.</li>
<li>Unfortunately it didn&#8217;t work when we turned it on. In fact, it crashed our <strong>w3wp.exe</strong> for the web application where it was enabled.</li>
</ul>
<p>At the time, I reported the issue on <a title="Bit Rate Throttling crashes my SP2010 web app" href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/26585e78-2af1-42d4-b14c-3188451ef209" target="_blank">the SharePoint 2010 TechNet forums</a> and <a title="Bit rate throttling stopping W3WP process" href="http://forums.iis.net/p/1165057/1934467.aspx" target="_blank">IIS.NET</a>, but didn&#8217;t get very far. We eventually decided to live with it, leaving BLOB Caching on, even if the bandwidth was left unoptimised.  To summarise the fault, when Bit Rate Throttling was enabled, my web application would load a page or two, then that application&#8217;s w3wp.exe would (apparently) leak memory until it crashed. Repeat. The issue and my troubleshooting is explained in more detail on those two threads. These are the key error messages:</p>
<div style="padding-left: 30px;">Test 3: BLOB Cache on, Bit Rate Throttling installed and enabled</div>
<blockquote style="padding-left: 30px;" dir="ltr">
<div><strong>Faulting application name: w3wp.exe</strong>, version: 7.5.7600.16385, time stamp: 0x4a5bd0eb<br />
<strong>Faulting module name: bitratemodule.dll</strong>, version: 7.1.625.10, time stamp: 0x4aca8535<br />
Exception code: 0xc0000005<br />
Fault offset: 0&#215;0000000000007669<br />
Faulting process id: 0&#215;2140<br />
Faulting application start time: 0x01cb2cd16410dafa<br />
<strong>Faulting application path: c:\windows\system32\inetsrv\w3wp.exe<br />
Faulting module path: C:\Program Files\IIS\Media\bitratemodule.dll</strong><br />
Report Id: e3004397-98c4-11df-91ae-00155d06ab22</div>
</blockquote>
<div style="padding-left: 30px;">And…</div>
<blockquote style="padding-left: 30px;" dir="ltr">
<div>Fault bucket , type 0<br />
Event Name: <strong>APPCRASH</strong><br />
Response: Not available<br />
Cab Id: 0</div>
<div>Problem signature:<br />
P1: <strong>w3wp.exe</strong><br />
P2: 7.5.7600.16385<br />
P3: 4a5bd0eb<br />
P4: <strong>bitratemodule.dll</strong><br />
P5: 7.1.625.10<br />
P6: 4aca8535<br />
P7: c0000005<br />
P8: 0000000000007669<br />
P9:<br />
P10:</div>
<div>Attached files:</div>
<div>These files may be available here:</div>
<div style="padding-left: 30px;">Analysis symbol:<br />
Rechecking for solution: 0<br />
Report Id: e3004397-98c4-11df-91ae-00155d06ab22<br />
Report Status: 0</div>
</blockquote>
<p>Luckily, I noticed that <a title="Bit rate throttling stopping W3WP process" href="http://forums.iis.net/p/1165057/1957592.aspx#1957592" target="_blank">Jack over at IIS.NET recently posted</a>:</p>
<blockquote><p>I believe we have identified the problem and have a fix for the issue.   The fix will be available as part of IIS Media Services 4.0 which will  be released in the very near future.</p></blockquote>
<p>Good news! I see that a release is now available for <strong>IIS Media Services 4.0 Beta</strong> (second down in the right-hand column on <a title="Bit Rate Throttling" href="http://www.iis.net/download/BitRateThrottling" target="_blank">the Bit Rate Throttling site</a>). Unfortunately I haven&#8217;t had a chance to test this yet and I&#8217;m not sure when I&#8217;ll get the time. For now, I&#8217;m posting this incomplete, as it would be great if many people tested this and the IIS team got as much feedback on this technology as possible while it&#8217;s in a Beta release. Obviously, I&#8217;d caution against installing either version in production for now. 3.0 doesn&#8217;t work and 4.0 is very new.</p>
<p>A few related notes:</p>
<ul>
<li>BLOB Caching is not a requirement for Bit Rate Throttling in general, but it is a requirement for Bit Rate Throttling SharePoint 2010 web applications. The <a title="Plan for caching and performance (SharePoint Server 2010)" href="http://technet.microsoft.com/en-us/library/ee424404.aspx#Section2" target="_blank">Plan for caching and performance</a> document notes, &#8220;<em>Bit rate throttling will not work correctly if you do not first enable  the BLOB cache and configure it to cache the files types that you want  to throttle</em>.&#8221;</li>
<li>We didn&#8217;t look at <strong>Smooth Streaming</strong> for very long, because the Silverlight Media Web Part hasn&#8217;t been built to adapt content in that manner.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/fix-for-bit-rate-throttling-w3wp-crashes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Product Version Job: DCOM 10016 strikes again</title>
		<link>http://tristanwatkins.com/index.php/product-version-job-dcom-10016-strikes-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=product-version-job-dcom-10016-strikes-again</link>
		<comments>http://tristanwatkins.com/index.php/product-version-job-dcom-10016-strikes-again/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 17:08:24 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[DCOM]]></category>
		<category><![CDATA[MSIInstaller]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Timer Job]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1154</guid>
		<description><![CDATA[For some time now, IT professionals have been modifying DCOM activation rights in order to keep their System event logs clean. In SharePoint 2010, that fix became slightly trickier, as permissions to modify the DCOM permissions had to be granted through the registry for the IIS WAM REG admin service and oSearch14 DCOM applications. Having [...]]]></description>
			<content:encoded><![CDATA[<p>For <a title="Pesky DCOM 10016 Errors" href="http://www.harbar.net/archive/2007/04/04/Pesky-DCOM-10016-Errors.aspx" target="_blank">some time now</a>, IT professionals have been modifying DCOM activation rights in order to keep their System event logs clean. In SharePoint 2010, that fix became slightly trickier, as permissions to modify the DCOM permissions had to be <a title="DCOM error 10016 with SharePoint 2010" href="http://www.mattgrovesblog.com/2009/10/dcom-error-10016-with-sharepoint-2010.html" target="_blank">granted through the registry</a> for the <em>IIS WAM REG</em> admin service and <em>oSearch14</em> DCOM applications. Having made these fixes, I&#8217;ve noticed <a title="Server Fault" href="http://serverfault.com/questions/169199/unable-to-modify-dcom-config-properties-for-a-single-application-in-component-ser" target="_blank">a new breed of DCOM 10016 error</a>.</p>
<blockquote>
<p style="text-align: left;">The machine-default permission settings do not grant Local Activation permission for the COM Server application with CLSID<br />
{000C101C-0000-0000-C000-000000000046}<br />
and APPID<br />
{000C101C-0000-0000-C000-000000000046}<br />
to the user &lt;FARM ACCOUNT&gt; SID (S-1-5-21-xxxxxxx&#8230;.) from address LocalHost (Using LRPC). This security permission can be modified using the Component Services administrative tool.</p>
</blockquote>
<p>The CLSID for this COM Server Application is MSIServer, used to activate the Windows Installer Service. You can find this by navigating to <em>HKCR\AppId</em> and examining the details there:</p>
<p><span id="more-1154"></span><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/DCOM10016_RegEdit.png"><img class="alignnone size-full wp-image-1169" title="DCOM10016_RegEdit" src="http://tristanwatkins.com/wp-content/uploads/DCOM10016_RegEdit.png" alt="DCOM10016 RegEdit Product Version Job: DCOM 10016 strikes again" width="500" /></a></p>
<p>Given that there were 105 instances of this DCOM 10016 error in an eleven second period, I decided to see what was happening at the same time (00:52:09-00:52:19) in the Application event logs. It turned out that there were 210 Information and Warning events during the same time-frame. An example pair of these event is included here:</p>
<blockquote><p><span style="text-decoration: underline;">1035 Information<br />
</span>Windows Installer reconfigured the product. Product Name: Microsoft Excel Mobile Viewer Components. Product Version: 14.0.4763.1000. Product Language: 0. Manufacturer: Microsoft Corporation. Reconfiguration success or error status: 0.</p>
<p><span style="text-decoration: underline;">1015 Warning</span><br />
Failed to connect to server. Error: 0&#215;80070005</p></blockquote>
<p>You might notice this first informational event is for the Microsoft Excel Mobile Viewer. As you trawl through the events it will become clear that these events occur for Language Packs, Service Applications, Foundation elements, Web Apps &#8211; all sorts. At this point it was pretty clear to me that the SharePoint Farm account (probably a Timer Job) was trying to run the <em>Windows Installer Service</em> for these products, but I had no idea why, so I cracked open <a title="ULS Viewer" href="http://code.msdn.microsoft.com/ULSViewer/Release/ProjectReleases.aspx?ReleaseId=3308" target="_blank">ULS Viewer</a> and went to town.</p>
<p>A Timer Job called <strong>job-admin-product-version</strong> kicked off at 00:52:08.92. Filtering by that <strong>CorrelationID</strong> I could see that this job appeared to build a hierarchy of upgradable elements (Foundation stuff, Service Applications, etc), then checked to see if these elements can be upgraded. But I don&#8217;t really feel comfortable trying to figure out what a Timer Job does by stepping through ULS logs, so before going any further I had a look at the TechNet <a title="SharePoint 2010 Timer Job Reference" href="http://technet.microsoft.com/en-us/library/cc678870.aspx" target="_blank">Timer Job Reference</a> and found that <strong>Product Version Job</strong> runs nightly at 00:45 by default.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/DCOM10016_ProductVersionJob.png"><img class="alignnone size-full wp-image-1171" title="DCOM10016_ProductVersionJob" src="http://tristanwatkins.com/wp-content/uploads/DCOM10016_ProductVersionJob.png" alt="DCOM10016 ProductVersionJob Product Version Job: DCOM 10016 strikes again" width="500" /></a></p>
<p>Now that we know that this job &#8220;<em>checks the install state of the machine and puts that data into the database</em>&#8220;, I&#8217;m going to take a leap of faith and assume that the farm account is trying to use the <em>Windows Installer Service</em> to do this. Hopping back in to the ULS logs, the next-to-last event correlates to the deluge of Application logs entries.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/DCOM10016_UpdateProductInfoInDatabase.png"><img class="alignnone size-full wp-image-1170" title="DCOM10016_UpdateProductInfoInDatabase" src="http://tristanwatkins.com/wp-content/uploads/DCOM10016_UpdateProductInfoInDatabase.png" alt="DCOM10016 UpdateProductInfoInDatabase Product Version Job: DCOM 10016 strikes again" width="500" /></a></p>
<p>Note that one of the first items in this mess of updates is <em>Microsoft Excel Mobile Viewer Components</em> again.</p>
<blockquote><p>UpdateProductInfoInDatabase, regProductsQuery = exec proc_RegisterProductVersion N&#8217;20c667df-1bc3-486b-869c-a3ba40f83af5&#8242;, N&#8217;Microsoft SharePoint Server 2010&#8242;, N&#8217;14.0.4763.1000&#8242;, N&#8217;{90140000-1138-0000-1000-0000000FF1CE}&#8217;, N&#8217;Microsoft Excel Mobile Viewer Components&#8217;, N&#8221;&#8230;</p></blockquote>
<p>It seems pretty clear that <em>Product Version Job</em> checks the installed versions of SharePoint Products and Technologies, then updates that info in the database (presumably Central Admin config). However, it&#8217;s not really clear when that information gets used, so changes to the default Daily job schedule may have unintended consequences. As I see it, this leaves three options:</p>
<ul>
<li>Live with the warnings/errors until a better option becomes available.</li>
<li>Disable the <em>Product Version Job</em> timer job, noting that this could potentially have a negative impact on updates to the system (not recommended until these implications are better understood).
<ul>
<li>Potentially combine this strategy with a plan to make the farm account a local admin temporarily and run the job manually at routine intervals (again, this warrants testing and a better understanding of the Timer Job itself).</li>
</ul>
</li>
<li>Grant the WSS_ADMIN_WPG local group or Farm account permissions to Launch and Activate the <a title="MSI Installer fix" href="http://2010ftw.spoint.me/2010/08/08/overcoming-user-profile-headaches/" target="_blank">Windows Installer Service</a> (which I don&#8217;t recommend).</li>
</ul>
<p>I&#8217;m presently contending with these errors in a development environment, so I&#8217;m going to live with them for now. I&#8217;m pretty reluctant to recommend the last option. It seems to me that if the Farm account has rights to elevate to Local System via the Windows Installer Service, that puts a pretty big dent in the least-privileged model. I&#8217;ll keep looking in to this, but I thought I&#8217;d identify my findings so far and I would welcome any comments or ideas that I haven&#8217;t considered &#8211; particularly if anyone has more information about when this database information is used.</p>
<p><span style="text-decoration: underline;">Update: 20/2/2011</span></p>
<p>I&#8217;ve done some more work on this now.</p>
<p><a title="Inside Manage Patch Status" href="http://tristanwatkins.com/index.php/inside-manage-patch-status/" target="_blank">Inside Manage Patch Status</a></p>
<p><a title="Testing Manage Patch Status" href="http://tristanwatkins.com/index.php/testing-manage-patch-status/" target="_blank">Testing Manage Patch Status</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/product-version-job-dcom-10016-strikes-again/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Hyper-V video issues fixed by Windows Server 2008 R2 SP1 Beta?</title>
		<link>http://tristanwatkins.com/index.php/hyperv-video-issues-fixed-windows-server-2008-r2-sp1-beta/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hyperv-video-issues-fixed-windows-server-2008-r2-sp1-beta</link>
		<comments>http://tristanwatkins.com/index.php/hyperv-video-issues-fixed-windows-server-2008-r2-sp1-beta/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 06:30:36 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[RemoteFX]]></category>
		<category><![CDATA[SLAT]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1127</guid>
		<description><![CDATA[Recently we&#8217;ve been considering a hardware refresh for our developer/consultant/architect laptop build (on Windows Server 2008 R2 Standard with Hyper-V). After a fair amount of deliberation we decided to pilot a new model but stumbled massively at the first hurdle: when we enabled the Hyper-V role on a new Dell Latitude E6410 we got a [...]]]></description>
			<content:encoded><![CDATA[<p>Recently we&#8217;ve been considering a hardware refresh for our developer/consultant/architect laptop build (on Windows Server 2008 R2 Standard with Hyper-V). After a fair amount of deliberation we decided to pilot a new model but stumbled massively at the first hurdle: when we enabled the Hyper-V role on a new Dell Latitude E6410 we got a blue screen. Further testing revealed that the graphics driver was at fault and the SVGA driver worked fine. However, the SVGA driver only has single monitor support. Back to the drawing board.</p>
<p><span id="more-1127"></span>I hit the search engines in earnest and found that these problems were prevalent across a fairly wide range of graphics cards. We enlisted Dell&#8217;s help and they told us that they do not certify that Hyper-V will work on any laptops. More precisely, they clarified the primary support concern is that future driver releases may not work with Hyper-V even if we find a model that works with today&#8217;s drivers. At this point we were considering a pricier Precision model and they put us in touch with their Precision product team in Texas. They were most helpful but we were told that Dell themselves do not use Hyper-V on laptops except for demonstration purposes and they simply use it as a server for connected workstations, so they would never experience the same graphics issues. Dell kindly offered to let us test our development build on various models at their campus if we agreed to share the results with them, but before we could arrange that visit, <a title="Windows Server 2008 R2 SP1 Beta" href="http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx" target="_blank">Windows Server 2008 R2 SP1 Beta</a>* was released and I upgraded my machine in order to test out Dynamic Memory.</p>
<p>As I was installing it I had a chat with my colleague (and serial early adopter) <a title="Lambros Vasiliou" href="http://spandothers.spaces.live.com/default.aspx" target="_blank">Lambros Vasiliou</a> to gauge his impressions. He mentioned his favourite improvement is that the <a title="Hyper-V Graphics Performance Issues" href="../index.php/the-definitive-word-on-hyper-v-high-end-graphics-performance/" target="_blank">known Hyper-V host graphics performance issues</a> are either gone or greatly mitigated. This is an issue that&#8217;s been  repeatedly discussed in our organisation since we moved from a  hotchpotch of virtualisation technologies to Hyper-V as our <a title="SharePoint Develpoment Environment" href="../index.php/building-a-sharepoint-20072010-development-environment/" target="_blank">standard development build</a> last year. It&#8217;s probably the single thing that irritates our users of this system more than anything else.</p>
<p>I did some testing myself with videos playing and moving windows about with Windows Key + Arrow hot keys. The results were fairly impressive &#8211; without doubt a big improvement. One thing that still behaved poorly on my Dell XPS M1330 (with NVIDIA GeForce 8400GS) is full-screen YouTube, Vimeo, etc. The CTRL+ALT+DEL redraw operation seems a bit sluggish still as well. I noticed that my PowerPoint Presenter View was better, but still not 100% responsive.</p>
<p>I also tested on the Dell Latitude E6410 (with NVIDIA NVS 3100M). Not only is the previously-mentioned blue screen fixed and the graphics generally improved in the same ways as on the XPS, but the full-screen in-browser video and CTRL+ALT+DEL are instantaneous. One possible explanation for this different experience is that the Latitude has a processor with SLAT, but I can&#8217;t validate that at all yet&#8230; because I can&#8217;t find any information whatsoever about why/how this has changed!</p>
<p>I think it&#8217;s unlikely that these changes are related to RemoteFX (since the XPS M1330 does not have a processor with SLAT and I never enabled it on the Latitude E6410). I would expect RemoteFX to improve the experience connecting to the guests, not the Hyper-V root partition (although it&#8217;s possible that this improvement is somehow related). I&#8217;ve tried <a title="Understanding High-End Video Performance Issues with Hyper-V" href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/11/16/understanding-high-end-video-performance-issues-with-hyper-v.aspx?PageIndex=2#comments" target="_blank">pinging Virtual PC Guy</a> and posted <a title="Does Service Pack 1 Beta resolve Hyper-V high-end video performance issues" href="http://social.technet.microsoft.com/Forums/en-US/w7itproSP/thread/806a9da6-1a5e-49c3-b650-fd31009f80d4" target="_blank">this query on the SP1 Beta TechNet forum</a> but so far the community can only confirm that this is indeed working on a number of different models including a Mac (drill down in the links on the TechNet thread for more information). One way or the other this is great news, but I&#8217;m finding the lack of information about these changes quite maddening given the amazing detail that&#8217;s been produced for the Dynamic Memory launch. I&#8217;d really appreciate further insights if anyone can reveal the internals.</p>
<p>* A few notes regarding the Service Pack 1 Beta installation process:</p>
<ol>
<li>The links on the SP1 Beta page are a bit confusing. You should be aware that if you click the &#8220;Evaluate Windows Server 2008 R2 and SP1 Beta&#8221; link you will be taken to a page with a &#8220;Download Windows Server 2008 R2 Trial Software&#8221; section at the top. &#8220;Download SP1 Beta Software&#8221; is beneath that section. This is what you want. If you click the first link you will initiate a download of the full Windows Server 2008 R2 (SP0) installer. If you &#8220;upgrade&#8221; your system using that installer you&#8217;ll wind up with a nice new trial version of SP0. AGH. Starting again from the links in the right section I was able to run a small installer that presents the updates to Windows Update and that has all worked fine, so I&#8217;d recommend that route. Alternately the Service Pack can be downloaded stand-alone. I did that for my second install and it worked fine too. Also note the <a title="Windows Server 2008 R2 SP1 Beta Reviewer’s Guide" href="http://download.microsoft.com/download/B/9/3/B9339F1F-DFE7-4AF7-8D20-38A0612D74AA/Windows_Server_2008_SP1_Beta_Reviewers_Guide.docx">Windows Server 2008 R2 SP1 Beta Reviewer’s Guide</a>, &#8220;to evaluate the core features of Windows Server 2008 R2 SP1 Beta release in your environment&#8221;.</li>
<li>If you use Forefront you will need to uninstall it in order to install SP1 Beta, so make sure to remember to reinstall it afterwards.</li>
<li>When I installed the Service Pack my screen went black for about ten minutes following the first reboot. Be prepared for this. You&#8217;ll see plenty of ongoing disk activity but nothing on the screen. Fairly disconcerting, but perhaps this is all a part of these same video changes.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/hyperv-video-issues-fixed-windows-server-2008-r2-sp1-beta/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dynamic Memory for Hyper-V in Windows Server 2008 R2 SP1</title>
		<link>http://tristanwatkins.com/index.php/dynamic-memory-for-hyper-v-in-windows-server-2008-r2-sp1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dynamic-memory-for-hyper-v-in-windows-server-2008-r2-sp1</link>
		<comments>http://tristanwatkins.com/index.php/dynamic-memory-for-hyper-v-in-windows-server-2008-r2-sp1/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 11:19:58 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Dynamic Memory]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[NUMA]]></category>
		<category><![CDATA[Overcommit]]></category>
		<category><![CDATA[SLAT]]></category>
		<category><![CDATA[SP1]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=978</guid>
		<description><![CDATA[I&#8217;ve just finished watching Virtual PC Guy&#8217;s TechEd video on the forthcoming Dynamic Memory update for Hyper-V in Windows Server 2008 R2 SP1. The beta release of the service pack is due in July. The video is fairly lengthy, at around 80 minutes, but is well worth a watch if you&#8217;re interested and find the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished watching <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/10/talking-about-dynamic-memory-the-movie.aspx">Virtual PC Guy&#8217;s TechEd video</a> on the forthcoming Dynamic Memory update for Hyper-V in Windows Server 2008 R2 SP1. The beta release of the service pack is due in July. The video is fairly lengthy, at around 80 minutes, but is well worth a watch if you&#8217;re interested and find the time. If not, here&#8217;s a round-up:<span id="more-978"></span></p>
<ul>
<li>Microsoft&#8217;s approach to Dynamic Memory is fundamentally different than VMWare&#8217;s overcommitment, in that VMWare doesn&#8217;t trust information about memory usage from within the guest, whereas Microsoft&#8217;s implementation is based around an awareness of the amount and type of memory that&#8217;s being used at all times.</li>
<li>Dynamic Memory will work by Adding/Removing memory.
<ul>
<li>Adding memory is enabled through a new synthetic memory driver.</li>
<li>Removing memory that&#8217;s not being used is done with ballooning.</li>
<li>Memory is now assigned with a few new values:
<ul>
<li>Startup memory is the amount of memory assigned to a VM, which is also the minimum memory the VM will consume (default value is 512 MB).</li>
<li>Maximum memory limits how much memory a VM can consume.</li>
<li>Priority can be assigned to specific VMs in order to make sure that they receive available memory before other lower-priority VMs.</li>
<li>A Memory Buffer can be set to reserve memory for specific VMs, for instance if they need extra memory for file caching.</li>
</ul>
</li>
</ul>
</li>
<li>Hyper-V Manager adds two new columns.
<ul>
<li>Current Memory identifies how much memory the VM is consuming.</li>
<li>Memory Availability identifies the difference between how much memory a VM has vs. wants in a +/-% figure.
<ul>
<li>When the availability goes negative, the Windows guest will start to work with the lesser amount of memory that&#8217;s now available to it (via paging, etc).</li>
<li>Negative availability will result in reduced performance, but the systems will continue to function.</li>
</ul>
</li>
</ul>
</li>
<li>Memory is now reserved for the root partition in a different way, so that dynamic memory won&#8217;t bring down the host.
<ul>
<li>This amount can be configured with a new registry key based on how the root partition is being used, for instance if it&#8217;s your desktop OS.</li>
</ul>
</li>
<li>As Dynamic Memory is used more, the chances of spanning NUMA nodes increases (on NUMA systems).
<ul>
<li>He points out that different systems have vastly different Back Channel performance, so the impact of NUMA Spanning can be negligible or drastic.</li>
<li>In SP1, NUMA Spanning can be disabled (if desired).</li>
</ul>
</li>
<li>Dynamic Memory also supports Large Pages, which are likely to become more common with virtualised Exchange/SQL.
<ul>
<li>VMWare cannot overcommit these pages.</li>
</ul>
</li>
<li>I&#8217;ve asked if there are specific processor requirements. I&#8217;ll be interested to see how/if this supports processors that don&#8217;t have SLAT.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/dynamic-memory-for-hyper-v-in-windows-server-2008-r2-sp1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 (not) in a Workgroup</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-not-in-a-workgroup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-not-in-a-workgroup</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-not-in-a-workgroup/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 23:08:23 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[AD LDS]]></category>
		<category><![CDATA[ADAM]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Domain Controller]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[psconfigui]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[topology]]></category>
		<category><![CDATA[User Profile]]></category>
		<category><![CDATA[Workgroup]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=885</guid>
		<description><![CDATA[With SharePoint 2010 RTM looming, I&#8217;ve stumbled across an architectural change that may surprise some people &#8211; namely, that SharePoint 2010 no longer supports multiple-server farms without a domain infrastructure. In SharePoint 2007 it was possible to create SharePoint farms in a Workgroup, so long as all of the user accounts for the services and [...]]]></description>
			<content:encoded><![CDATA[<p>With SharePoint 2010 RTM looming, I&#8217;ve stumbled across an architectural change that may surprise some people &#8211; namely, that SharePoint 2010 no longer supports multiple-server farms without a domain infrastructure. In SharePoint 2007 it was possible to create SharePoint farms in a Workgroup, so long as all of the user accounts for the services and application pool identities were named the same and had the same password. You could even manage users with an Active Directory Lightweight Directory Services (AD LDS) or Active Directory Application Mode (ADAM) LDAP directory (albeit with some fairly limiting restrictions). However, it was possible to use these farms for testing or when an Active Directory infrastructure was undesirable (as some people see it in a DMZ). Now, it is still possible to do a Simple installation on a single server without full domain services, but it is no longer supported on multiple servers, and the Simple installation comes with its own planning considerations, to which I&#8217;ll return in a bit. First, there&#8217;s another wrinkle regarding the single server Complete installation.</p>
<p><span id="more-885"></span>When I initially created our SharePoint 2010 beta development environments, I built them in a Workgroup, for many of the reasons that I chose to do so in 2007 (see the <em>Workgroup Development </em>section in <a title="Building a SharePoint 2007/2010 development environment Part II Design" href="http://tristanwatkins.com/?p=499">Part II of my series on SharePoint development environments</a>). Now, the SharePoint 2010 Configuration  Wizard (psconfigui) throws an error when choosing the Complete install option in a Workgroup. I was able to get past this error by following the suggestions on the Microsoft <a title="Single Server Complete Install of SharePoint 2010 using local accounts" href="http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=112">From the Field blog</a>, but a few weeks down the road we&#8217;ve pinned down two issues (as confirmed by Neil, the author of that post).</p>
<ol>
<li>Search will crawl successfully in this configuration, but the query role will never initiate. Queries from web applications that consume this Service Application will produce an error, which you will be able to trace to an application event log 6398 error and the key event in ULS, &#8220;The SDDL string contains an invalid sid or a sid that cannot be  translated.&#8221; As Victor Magidson from Microsoft puts it on <a title="SharePoint 2010 Search Error ID 6398" href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/58902475-396e-42ef-b19d-b06bd4df1ad0">this Technet thread</a>, this error occurs when a, &#8220;topology activation job is trying to create a propagation file share.&#8221; In short, the query role never finishes initialising so it will never serve queries. This only occurs on the single server Complete installation and deleting/re-creating the Service Application yields the same result.</li>
<li>The User Profile service application will also be useless*, but it always would have been since you couldn&#8217;t import users from the local user database in 2007 either. However, this has wider implications in SharePoint 2010 because of the social computing features, which developers probably won&#8217;t be able to live without.</li>
</ol>
<p>All this means that I need to consider rebuilding our development environments in a domain or we need to use the Simple installation. In the past I always avoided the Simple installation because it uses system accounts like Network Service for application pool identities, so it took some re-acquaintance to identify some of its limitations. It has no configuration options (thus the use of local system accounts), the User Profile Service Application does not start (presumably per Forefront Identity Manager 2010 installation issues as seen in other topologies) and it uses SQL Server Express (which developers aren&#8217;t very fond of), so we’re unlikely to pursue this option. Accordingly, we’re reviewing the ways that we can re-create the development environment in a domain.</p>
<p>Why don&#8217;t I just make the development machine a domain controller? This isn&#8217;t clear-cut and there are benefits to the simplicity of it, but ultimately I think it&#8217;s a bad idea because:</p>
<ul>
<li>Domain Controller security is bad for  development. It means developers will be coding as Domain Admins and they will be doing so on a machine with Domain Controller security policies. This is just a mess.</li>
<li>SQL doesn’t like to run on a DC.</li>
<li>Running a DC, SQL and SharePoint on the same machine  creates a massive load of service start-up contention and sometimes the environment will start from an unstable point  because dependent services will not be ready when a depending service tries to  start.
<ul>
<li>This also increases start-up time considerably, which is a big concern when using Hyper-V on a laptop, where we don’t have  Sleep/Hibernate.</li>
</ul>
</li>
<li>Adding Visual Studio to this mix causes known performance  issues. The machine simply can’t keep up with doing all of this.</li>
</ul>
<p>Why won&#8217;t we use a central development domain? Because then we can&#8217;t clone the VMs. We don&#8217;t just clone standard builds, we also use the same VM for each developer/consultant/architect on a single project. We may opt for this approach eventually, but I think the investment in automation is pretty considerable for it to be efficient with our team development requirements.</p>
<p>So I&#8217;m probably going to separate the DC on to a different server for now.  I&#8217;m  unlikely to add a third server for SQL, as even though it might be  faster, I think the complexity of managing networking and snapshots  across three servers is undesirable for developers, if we can get by with  two.</p>
<p>All of this underlines the reasons why I didn&#8217;t publish any SharePoint 2010 build guidance yet. Some things don&#8217;t become clear until you get your hands dirty. I&#8217;ll revisit this topic as soon as I feel comfortable that we&#8217;re pinning things down, but for now we&#8217;re still adapting our methods.</p>
<p>*I&#8217;ll note that I haven&#8217;t properly tested Claims Based Authentication  against a single server complete installation, so it&#8217;s conceivable that  you could import non-A/D users in to this configuration, but you&#8217;d still  need to live without Search.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-not-in-a-workgroup/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

