Posts from 2010
-
:
L'Hexapod: Where are we?
Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. Once the servo controller code … -
:
L'Hexapod: Bug in v7.0 of the servo controller firmware
Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. The simple servo sequencer that … -
:
FILE_SKIP_COMPLETION_PORT_ON_SUCCESS and datagram socket read errors
As I mentioned a while back I’ve been looking at incorporating some simple performance gains in the framework by following the advice given over at the Windows Server Performance Team Blog. Specifically the advice from part three of … -
:
Performance improvements in the Socket Server Framework
I’m just finishing a batch of work that will be included in the 6.2 release of my IOCP based, high performance windows client and server framework and which improves the performance of the framework. There are two main improvements; … -
:
Happy Zeroth birthday Scott Holgate!
My baby son Scott was born today, Jan 25th 2010, at 1.58am. He weighed 6lb 15oz and both he and his wonderful mother are doing fine. -
:
L'Hexapod: Delays...
Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. I’ve been very busy with … -
:
Speeding up C++ builds
I stumbled on an idea for speeding up C++ builds the other day and it’s not something that I’ve considered before and it really does offer a considerable speed up so I think it may be worth considering in some situations. It has … -
:
Latest release of licensed socket server code: 6.2
The latest release of The Server Framework is now available. This release includes the following changes. The following changes were made to the libraries. Admin Library - 6.2 We now support Visual Studio 2010. At present the code has only … -
:
The joy of hacking
Today I had a day which I knew from the start would be broken up due to pre-arranged calls and meetings out of the office, and so I decided to deal with a few low importance items on my “todo” list. One of them was to do a proof … -
:
Bug fix for viewing performance counters remotely
There are two bugs in the Performance Counter library and example servers that mean that performance counters built with the library and following the examples shown in the example servers will fail to work correctly when viewed remotely … -
:
Lock free or many locks?
I’ve been working on some performance tuning for a client of mine recently and whilst much of the tuning has been specific to the details of the their particular server design, eventually I can always get to the point where there are … -
:
The design implications of FILE_SKIP_COMPLETION_PORT_ON_SUCCESS and the Vista overlapped I/O change
The latest release of The Server Framework gives you the option of building with FILE_SKIP_COMPLETION_PORT_ON_SUCCESS enabled for various parts of the framework. You can enable it for stream and datagram sockets independently and also for … -
:
Things I hate about Visual Studio 2010 - part 1
So far I’ve found Visual Studio 2010 quite a compelling upgrade from Visual Studio 2008 for native C++ development. Intellisense is better, the build experience seems smoother and faster, editing on a decent development box seems OK, … -
:
New UDP Server examples
The new release of the licensed, high performance, I/O completion port, server framework includes lots of new example clients and servers; the framework now comes with 74 fully working example that showcase various aspects of the framework. … -
:
More performance testing
I’m continuing to help my performance obsessed client squeeze more out of his server. As always we’ve been using perfmon to view the server’s performance counters and since we were investigating CPU spikes we were … -
:
IOCP performance tweaks and repeatable perf logging
Whilst profiling my new low contention buffer allocator in a ‘real world’ situation recently I spent quite a lot of time trying to work out what I was looking for and when it should happen. Since the allocator improves … -
:
Performance comparisons for recent code changes
As I mentioned yesterday, I’ve been doing some performance testing using the command line interface to perfmon to record the results. Today I automated the stuff I was playing with over the weekend and ended up with a script that can … -
:
Step over library code when debugging C++ in Visual Studio
This is a handy tip from Jim Beveridge. It shows you how to add to the list of native function calls that the debugger steps over rather than into when you’re debugging in various flavours of Visual Studio. I wonder if the debugger … -
:
STLPORT 5.2.1 AND VS2010 AND X64
I have been updating some client code to VS2010 and they use STLPort for the STL as it has better performance in multi-threaded situations than the version that comes with Visual Studio (see here). This has meant that I’ve needed to … -
:
Practical Testing: 21 - Looking at Performance and finding a leak
Back in 2004, I wrote a series of articles called “Practical Testing” where I took a piece of complicated multi-threaded code and wrote tests for it. I then rebuild the code from scratch in a test driven development style to … -
:
Practical Testing: 22 - Performance: Some you win...
The previous article in the “Practical Testing” series set things up so that we can measure the performance of the code under test with the intention of trying to improve performance for a specific set of use case scenarios. … -
:
More thoughts on Big C
I’m finding that the thread contention notation that I made up the other day to help me talk about the performance implications of the changes I was making is pretty useful. The definition needs adjusting slightly though… For a … -
:
Practical Testing: 23 - Another new approach: timer wheels
The most recent articles in the “Practical Testing” series have been discussing the performance of the timer queue that we have built. As I hinted when I first brought up the performance issues, the particular use case that I … -
:
Practical Testing: 24 - Removing test duplication
The most recent articles in the “Practical Testing” series have been discussing the performance of the timer queue that we have built. Once I had got some new, optional, performance tests in place to measure what we were trying … -
:
Practical Testing: 25 - Nothing is free
I’m in the process of implementing a timer wheel that matches the interface to the timer queue that I previously developed in this series of articles. The idea being that for certain specific usage scenarios the timer wheel will … -
:
Amusing bug in GetTempPath()
Yesterday I had a bug report from a client who had a user that was getting an exception report from their software which simply said “GetTempPath() - Failed to get temp path”. Now as error messages go this isn’t the best … -
:
Practical Testing: 26 - More functionality, more refactoring and a new bug
Previously on “Practical Testing”… To deal with some specific usage scenarios of a piece of general purpose code I’m in the process of implementing a timer wheel that matches the interface to the timer queue that I … -
:
Tool lag
One of the problems of having a collection of tools that interoperate is that there’s often a lag between when a tool will interoperate with the latest version of another tool. I’m hardly a bleeding-edge tool junky, I wait until … -
:
CLR Hosting - .Net 4.0, .Net 2.0, take your pick
I’ve recently been adjusting my CLR hosting code as a client wanted to be able to host the .Net 4.0 runtime. Previously they were hosting the 2.0 runtime and, as I mentioned a while back, the hosting API has changed with 4.0. … -
:
CLR Hosting - A flexible, managed plugin system, part 1
I’m working on some prototype code right now to improve the “deployment characteristics” of a socket server that I wrote for a client which uses CLR hosting to provide multiple managed applications within a single … -
:
.Net 4.0 different AppDomain managers for different AppDomains
Whilst looking through the latest documentation for the AppDomainSetup class I see that you can now specify a new AppDomainManager object for each application domain that you create. This removes the duality of the pre 4.0 AppDomainManager … -
:
Practical Testing: 27 - Fixing things...
Previously on “Practical Testing”… To deal with some specific usage scenarios of a piece of general purpose code I’m in the process of implementing a timer wheel that matches the interface to the timer queue that I … -
:
STL allocators, hmm...
As I mentioned a while ago, I have some code which needs to perform better than it currently does and one of the areas that could be improved upon is the amount of contention for the heap that’s occurring. The fact that I’m … -
:
Invasive containers
Rather than immediately dive into the fun of writing my own invasive alternative for std::map I decided to take a look at what has been done before, as expected boost contains something that might work in the shape of the “intrusive … -
:
Practical Testing: 28 - Finishing the timer wheel
Previously on “Practical Testing”… I’m writing a timer wheel which matches the interface used by my timer queue. This new implementation is designed for a particular usage scenario with the intention of trading … -
:
Useful Visual Studio retirement matrix
Here’s a useful matrix which shows when each version of Visual Studio will become unsupported by Microsoft. I’m posting the link here as I’m sure I’ll not be able to find it the next time I need it… -
:
CLR Hosting - A flexible, managed plugin system, part 2
Last time I explained how the managed side of my flexible hosting server architecture was structured. I dealt with the IDL required to generate the COM interfaces which were used to communicate between unmanaged code and managed code and … -
:
More thoughts on invasive/intrusive containers and STL allocators
I’m still considering my options with regards to intrusive containers to replace the STL maps that I’m using in my timer queue implementation. I think I may be able to use the boost::intrusive sets in place of a true map in most … -
:
DevPartner Studio 10 - unmanaged disappointments
The story so far, I’ve owned DevPartner Studio for several years and been on a support contract the whole time. The support situation went a bit flaky when Compuware sold the product to Micro Focus, I expect that either I’m … -
:
Practical Testing: 29 - Fixing the timer wheel
Previously on “Practical Testing”… I’m writing a timer wheel which matches the interface used by my timer queue. This new implementation is designed for a particular usage scenario with the intention of trading … -
:
DevPartner Studio 10
My previous rant about DevPartner Studio (and especially the BoundsChecker portion of it) resulted in several emails from guys on the development team and a call from product owner at MicroFocus. They pointed me towards the latest … -
:
Practical Testing: 30 - Reducing contention
Previously on “Practical Testing”… I’ve been looking at the performance of the timer system that I developed and have built a more specialised and higher performance timer system which is more suitable for some high … -
:
6.3 is coming...
This evening I kicked off the acceptance tests for version 6.3 of the example servers that ship with The Server Framework; they’ll probably take most of the weekend to run, if I’m lucky. The unit tests for all the libraries have … -
:
Things I hate about Visual Studio 2010 - part 'today'
I tend to work with lots of solutions at once. I’m often building code for clients, building and testing new example servers for The Server Framework and running lots of copies of various versions of Visual Studio at once. Now, if I … -
:
The design implications of FILE_SKIP_COMPLETION_PORT_ON_SUCCESS and the Vista overlapped I/O change, reprise
Back in April I was talking about how the fact that 6.2 allowed you to enable FILE_SKIP_COMPLETION_PORT_ON_SUCCESS meant that some server designs might start to experience recursion that they previously didn’t experience. During the … -
:
ServerFramework.com
I’ve put together a new website for my super scalable, high performance, I/O Completion Port based server framework. This has all of the information that you need to decide if you can use The Free Framework or if you’d prefer to … -
:
Latest release of The Server Framework: 6.3
The latest release of The Server Framework is now available from ServerFramework.com. See here for details. -
:
Bug in OpenSSL stream socket filter which causes memory leaks
See here for details. -
:
WinRM/WinRS job memory limits?
I’ve had one of those days. In fact I’ve had one of those days for a couple of days this week… It started when I decided to improve the profiling that I was doing on a new memory allocator for The Server Framework by … -
:
Tangential testing
My theorising about the strange memory related failures that I was experiencing with my distributed testing using WinRS have led me to putting together a test runner that can limit the amount of memory available to a process and terminate … -
:
A lock inversion detector as part of the build is good
As I mentioned, I’ve been adjusting my build system and have finally got to the point where my lock inversion detector is suitable to run on all of my example servers during their test phase on the build machines. I’m working my … -
:
WinRM/WinRS job memory limits.
My tangential testing that began with my problems with commands run via WinRs during some distributed load testing are slowly unravelling back to the start. I now have a better build and test system for the server examples that ship as part … -
:
Lock inversion detector finally fully integrated in my build
After a week or so of serious dog fooding I’ve finally got a nice reliable lock inversion detector running as part of my build system for The Server Framework’s example servers. Note: the deadlock detector mentioned in this blog … -
:
Welcome to the new Rambling Comments
I’ve just finished upgrading the blog from Movable Type 2.64 to Movable Type 5.0.x. The main reason behind actually getting around to doing this (the ‘update blog’s MT version’ “todo item” has been on my …