making sure TRIM is enabled and working in w7

To confirm that trim is working and enabled in your windows7 install, go to the command prompt and type:

fsutil behavior query disabledeletenotify

 

image

DisableDeleteNotify = 1 (Windows TRIM commands are disabled)
DisableDeleteNotify = 0 (Windows TRIM commands are enabled

run a chkdsk under 2008r2 (or regular 2008, or w7), use all your memory

I run chkdsk.exe pretty often on my machines, mainly because I’m paranoid about data integrity since I have a lot of data spread across many hard drives. On my server I was trying to run chkdsk.exe on a couple of drives at once, thinking I could save myself some time.

chkdsk

When the machine slowed down to a crawl, I started by looking at the disk utilization to see what was going on. It was expected that this would slow down the machine, but these are non system disks, physically separate from anything that should directly impact system performance. After killing two of the three chkdsk’s, I was left with the one on the “J” drive, so I decided to check disk performance with the performance monitor.

pagefileusedchkdsk

Here you can see that aside from the chkdsk itself, there is some pretty significant writing taking place to the pagefile located on my “G” drive… Which shouldn’t take place since this machine has 8gb of ram and with no virtual machines running, never uses more than 1 gig. (No vm’s are running during all of this.) Of course, hitting the pagefile so much implies that the server is running out of memory, so let’s go see what the memory tab looks like.

chkdskuseallramyeah2

Here you can see that there is 0 free memory (as in zero)! Then you can look at the processes and see that chkdsk.exe is using 7.0 gigs of memory! What? This must be a bug.. a leak.. right? Something must be wrong. Well, guess what? Apparently this is by design… from what I have been able to gather after reading various forums and blogs, the w7/2008 server version of chkdsk will use all the available ram in an attempt to speed up the chkdsk.

Here’s a Microsoft article that mentions it.

Now there has been a lot of sky is falling type talk over this subject, and there are many people who have stated that their machines crashed as a result of this. To be clear in my case the machine does continue to function, although it does it very slowly. In my opinion, this behavior, even if by design, is very bug-like and mimics a memory leak in every way, just without the crash at the end. (And the memory clears up when chkdsk is done.) This seems like an odd way for Microsoft to design this, and I would prefer some other way to limit the ram used by this process.

compact fluorescent light bulb (cfl) failures – from Home Depot and Costco suck

 

I replaced all of the incandescent bulbs in my house about 2.5 years ago with CFL’s in an attempt to save energy and be “green”. Unfortunately, the burnout rate on the bulbs that Home Depot and Costco are selling aren’t just high.. they are so high that it makes these bulbs a total ripoff that costs you more money in the end.

Here’s a site with some reviews.

Similar model (not flood) with similar reviews.

These bulbs were also UNQUALIFIED from the energy star compliance list.

Here’s someone else with some failure info.

Here’s a good thread with pictures and some technical explanations.

More info on CFL failures.

IIS – which app pool is which?

With IIS creating w3wp.exe’s for all of your apps (for which you have created a non default app pool) it is nice, but it’s impossible to tell exactly which is which. Microsoft includes a handy tool to do this with it’s in: %systemroot%system32iisapp.vbs (You may need to run it with cscript.exe if that’s not your default for .vbs).

Sample output:

C:WINDOWSsystem32>iisapp
W3WP.exe PID: 2028   AppPoolId: DefaultAppPool
W3WP.exe PID: 20224   AppPoolId: Autotransactiondocs
W3WP.exe PID: 17480   AppPoolId: IRAppPool

C:WINDOWSsystem32>

Oh, this is for Windows Server 2003 (and r2) only.. does not work with 2008 variants.

.net coding advice = do not enable debug in production!

This seems like a simple thing, really, but every single place I have worked that developed .net code has had this problem, and for some reason, devs don’t seem to get it. (It has been an uphill battle everywhere I have found it with resistance from devs. Why??)

Usually the symptoms start out with scaling issues in production, you’ll see things like threads running out, connections not being closed, and general poor application performance. You can track these down and eventually you will find that in the web.config the setting “debug=enabled” is in there. It is this way because it is the default when you create a .net application. YOU DO NOT LEAVE IT LIKE THIS IN PRODUCTION. When you do, bad things happen, such as timeouts all being set to infinite. Here’s an article with a complete list and some more info.

Depending on whether or not your organization pushes the .configs with the applications (this is a religious discussion in itself.. I recommend not pushing the configs with every build for reasons like this), then when you do your next code push, the process repeats because of this value being set improperly again.  The way to fix this for good is that in the production environment, you make a change to the machine.config to enable “retail” mode, which disallows debug from being enabled, regardless of what is in the application’s web.config.

<configuration>

<system.web>

<deployment retail=”true”/>

</system.web>

</configuration>

In my opinion, setting this in the machine.config should be part of the default build/installation/configuration of any production webserver.

Solarwinds Orion MP for System Center Operations Manager 2007 r2 – where’s the logfile?

I was trying to run the configure utility for the Solarwinds Orion MP for System Center Operations Manager 2007 r2 and getting a failure that told me to check the logfile. Where is the logfile? (It doesn’t say!) After much looking I found it in the .config in the folder for the management pack which is:

C:Program FilesSolarWindsOrion Management Pack for OpsManager 2007OrionSCOMConfigApp.exe.config

Since they are using logforj for a standard .net app, it was easy to see. The value was:

<file value="${ALLUSERSPROFILE}DocumentsSolarWindsOrion Management Pack for OpsManager 2007ConfigurationWizard.log" />

On my system this translated to:

C:UsersPublicDocumentsSolarWindsOrion Management Pack for OpsManager 2007ConfigurationWizard.log

In our particular instance, the problem was:

Could not allocate space for object ‘dbo.ManagementPackStaging’.’PK_ManagementPackStaging’ in database ‘OperationsManager’ because the ‘PRIMARY’ filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

This was resolved by opening the Microsoft SQL Server Management Studio and going to databases/OperationsManager, then properties, files, and increasing the initial size on the “PRIMARY” database file. Once I did this, I was able to configure the management pack successfully.

Windows 7 & Server 2008 r2 network settings (vista and 2008 also)

I have a need to refer back to the TCP tuning settings introduced recently by Microsoft, so I decided to put all of this in one place so that I can find them easier in the future.

To see the status of these settings, use: netsh int tcp show global

image

To enable receive side scaling: netsh int tcp set global rss=enabled

To enable chimney offload state: netsh int tcp set global chimney=enabled

To enable direct cache access (dca): netsh int tcp set global dca=enabled 

To change the auto-tuning level: netsh int tcp set global autotuninglevel=normal

To change the congestion provider: netsh int tcp set global congestionprovider=ctcp

To change the ECN capability: netsh int tcp set global ecncapability=enabled

To change the timestamps: netsh int tcp set global timestamps=enabled

To change the setting for NetDMA:

To enable or disable NetDMA, follow these steps:

  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate the following registry subkey, and then click it::  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
  3. Double-click the EnableTCPA registry entry.  Note If this registry entry does not exist, right-click Parameters, point to New, click DWORD Value, type EnableTCPA, and then press ENTER.
  4. To enable NetDMA, type 1 in the Value data box, and then click OK.
  5. To disable NetDMA, type 0 in the Value data box, and then click OK.
  6. If the EnableTCPA registry entry does not exist, enable the NetDMA functionality.

If you want to see the MTU applied to the connection: netsh interface ipv4 show subinterface

If you want to change the MTU: netsh interface ipv4 set subinterface "connection_name" mtu=9000 store=persistent