How do I resolve a problem with VxWorks buffers?

Note: Applies to NDDS 3.x and earlier, RTI Data Distribution Service 4.0 and 4.1

To monitor the state of the data buffer usage inside the stack, you can use the  netStackDataPoolShow or  mbufShow functions. Both commands give the same information. If the stack has been running out of clusters, these commands will show an increasing "number of times failed to find space". If the command indicates that the stack sometimes runs out of buffers, you either need to reduce the socket receive queues as above (which will result in dropped packets), or --better-- increase the number of clusters available to the stack. 

The kernel should be configured with clusters of appropriate size, in order to improve performance. If you find that you're running out of large clusters and your application is sending or receiving data larger than the largest cluster size, you may need to also add larger buffer sizes, as described next. 

The following examples describe how to increase the number of clusters if you're building your kernel using the project facility. There is a set of parameter located under the properties for network components, basic network initialization, network buffer initialization in your kernel configuration. (Select the VxWorks tab of your Workspace window, expand the tree to the above entry, right-click and select Properties, then select the Params tab.) 

The parameters are: 

  • NUM_64 -- number of 64 byte clusters in the data pool (default: 100)
  • NUM_128 -- number of 128 byte clusters in the data pool (default: 100)
  • NUM_256 -- number of 256 byte clusters in the data pool (default: 40)
  • NUM_512 -- number of 512 byte clusters in the data pool (default: 40)
  • NUM_1024 -- number of 1 Kbyte clusters in the data pool (default: 25)
  • NUM_2048 -- number of 2 Kbyte clusters in the data pool (default: 25) 

These parameters normally control the number of buffers of each size within the data pool. Increasing the values will increase the number of data clusters available to the stack. 

After making the changes, rebuild the kernel and reboot. You can confirm the changes by running  mbufShow from a WindShell or the target-resident shell. The number of clusters shown in the CLUSTER POOL TABLE section should match the parameters you specified. 

The VxWorks manuals contain additional information.