Configuring the TCP Remote Buffer Size
Feature Description
Make the tcp remote buffer a configurable parameter. Currently the buffer size is 1448 bytes. The tests have shown that better performance can be achieved by increasing the size. Allow the user to experiment with different buffer sizes and select the best suited value.
User Interface/Usability
The user will be able to specify various sizes for tcp remote buffer in the isc_config file. The exact syntax is as shown below:
"TCP_REMOTE_BUFFER NNNN"
where NNNN is a value between 1448 - 32768
The client and server both reads the entry from isc_config file and sets up the remote send and receive buffer to the value specified. If the value specified is not with in the range then the buffer size defaults to 8K i.e. 8192.
Requirements and Constraints
This will affect both remote and local database operations on UNIX. On WINNT this will come into play when the database is accessed through TCP/IP. With larger buffer sizes the server will have increased memory consumption.
Migration Issues
The new server/client will not have any problems talking to older clients/server. The remote buffer size is private to a client or a server and is not a part of initial negotiation between the client and server. There will be no incompatibility issue here.
Future improvements
Allow the clients to specify the remote buffer size as a isc_dpb parameter. Interrogate the connection and decide on a favorable buffer size.
All times in the following tests are in mm:ss. All tests were run using tcp loop back.
Machine configuration:
- Solaris : Solaris 2.5, 64MB ram, Sparc Station 10.
- HPUX : HPUX 10.20 , 64MB ram, B160L
- NT : NT 4.0 Srvpck 3, 64MB ram, P333
Buffer Size | Dsql test (row size 2k) | Dsqltest (row size 10 bytes) | Esql test (row size 2K) | Esql test (row size 10 bytes) | Backup | Restore |
---|---|---|---|---|---|---|
1448 | 4:17 | 1:20 | 8:01 | 1:15 | 36:30 | 33:26 |
8K | 3:57 | 1:26 | 7:24 | 1:10 | 4:16 | 5:46 |
16K | 3:57 | 1:27 | 7:25 | 1:09 | 4:17 | 5:49 |
1448*6 | 4:01 | 1:27 | 7:27 | 1:10 | 4:17 | 5:40 |
1448*12 | 3:52 | 2:00 | 7:22 | 1:11 | 4:22 | 5:46 |
Buffer Size | Dsql test (row size 2k) | Dsqltest (row size 10 bytes) | Esql test (row size 2K) | Esql test (row size 10 bytes) | Backup | Restore |
---|---|---|---|---|---|---|
1448 | 24:05 | 3:40 | 56:23 | 3:35 | 20:27 | 25:49 |
8K | 12:44 | 4:09 | 22:00 | 3:24 | 13:04 | 20:57 |
16K | 12:11 | 5:54 | 21:19 | 3:24 | 13:02 | 17:41 |
1448*6 | 13:35 | 4:16 | 23:31 | 3:24 | 12:35 | 18:05 |
1448*12 | 12:34 | 6:14 | 21:52 | 3:28 | 11:57 | 17:23 |
Buffer Size | Dsql test (row size 2k) | Dsqltest (row size 10 bytes) | Esql test (row size 2K) | Esql test (row size 10 bytes) | Backup | Restore |
---|---|---|---|---|---|---|
1448 | 3:35 | 00:34 | 6:33 | 0:40 | 33:50 | 35:14 |
8K | 2:55 | 00:43 | 5:32 | 0:35 | 2:37 | 3:26 |
16K | 2:51 | 1:06 | 5:05 | 0:36 | 6:58 | 6:27 |
1448*6 | 2:55 | 0:45 | 5:37 | 0:33 | 2:30 | 3:30 |
1448*12 | 2:52 | 1:10 | 5:22 | 0:35 | 2:38 | 3:22 |