The client in our application is a client that reads lots of data (images, each ~200k) over a 1GBit line from the server.
The client's bottleneck is its CPU. It's a Dell 670 dual processor (xeon) at 3.4GHz running Windows2K.
I found out that the tcp recv() command takes a lot of cpu. When all the machine does is recv() commands and buffer allocations, it reads at ~60MByte/sec. This seems a bit slow to me, also by rules of thumb-measures of TCP/IP CPU consumption this seems ~3 times slower than expected.
I tried rewriting the recv command - to use ACE, to call WSARecv, and to use Overlapped I/O, it all seems to matter very little.
We are working in blocking mode, and TCPNODelay is set to true (Nagle algorithm disabled). RCVBUF is 128K, changing it didn't matter very much. The server is either a unix or a windows machine.
My question is - What else can I do to try and reduce TCP/IP CPU consumption ?
Thanx very much in advance, Omer Shibolet.