telling if tcp offload is working or not

I made an earlier post about telling if the newer advanced tcp functionality included since sp2 in 2003 server, vista, w7, 2008r2, etc was working or not. The one that I neglected to include was whether or not TCP offloading was really working or not.

All you need to do is run this command while traffic is taking place:

netstat –nt

The output will look like this:


On the right hand side you can see that my connections on the example computer are in the host and not offloaded.

the vista snipping tool (where is it?)

I went to use the vista screenshot tool just now and couldn’t find it. After some investigation I realized that the snipping tool is included with the “tablet pc components” in vista and w7. So if you uninstall things that aren’t needed (like the tablet pc components), then you won’t have this.

Why this is included with the “tablet pc components”? I have no idea. This doesn’t make any sense to me.

deleting a partition during the w7 install

I had an issue tonight when reinstalling w7 where the install would not let me delete the partitions on one of the disks… they could be formatted, etc, but the delete button was grayed out for some reason. Why it did this, I can’t tell you. What I finally found to fix it was this:

  • on the first welcome screen of the w7 install, hit shift-f10, this gives you a command prompt
  • run diskpart
  • list disks
  • select disk 0 (if this is the disk you want)
  • clean
  • exit

Then you can continue with the install on a new fresh and clean drive.

jusched.exe #fail

I really dislike this stupid java update scheduler already for a whole lot of reasons, but with windows 7 it’s an extra hassle, at least for me. This is because that new systray icons are hidden by default, so you can not notice the (stupid) thing running. Just now I started to use my laptop and realized it was very slow. Here’s why:



Total and complete #fail.

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



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.


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.


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.


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.

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


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