It's not easy to produce answers to your questions. Part of the problem is that VFP does not have a centralized controller, that can allocate buffer RAM to the various VFP processes, based on how much RAM is available at any given moment.
FoxWeb takes the amount of buffer memory you entered in the FoxWeb Control Center, divides it by the number of channels and uses the result to set SYS(3050, 1) and SYS(3050, 2) for each channel. A couple of years back we thought about getting rid of this algorithm and simply let administrators determine the amount of buffer memory that each channel would be allocated, without regard for the total number of channels. In the end we scrapped this idea, because it would change the meaning of the current field and could have adverse effects to existing installations, if the configured value was not changed to match the new algorithm.
Regardless, One problem with determining the optimum amount of buffer memory for FoxWeb channels is that if you are running a large number of channels (and have configured your buffer RAM accordingly), but only a couple are being used at a time, you are missing the opportunity to utilize a higher amount of RAM per channel. VFP instances do not claim the buffer memory that was configured via sys 3050, but rather use *up* to that amount, if and when they need it.
Lately, I have been recommending that customers override FoxWeb's configuration via a direct call to SYS(3050) in fw_enter.prg. This would essentially remove the total number of channels from the determination of the amount of buffer memory per channel and allow administrators to experiment with different values.
FoxWeb Support Team
Sent by Cory Brasel on 06/28/2011 04:34:35 PM:
I have been looking through prior postings and etc regarding optimal setups for number of channels /buffer memory and how it relates to actual RAM on the machine and etc...
I read that generally speaking, 3-6 channels per processor is a good target.
I am trying to find what the optimal buffer memory is with respect to how it gets divided among the total channels and how it relates to the actual RAM amount on the server. We have a 4 CPU 4GB RAM server, we have 2500 in the buffer memory setting. We migrated an older server to a new box with better CPU and memory, so I am looking to optimaize what we have. I suspect the we are configured optimaly or have too much than what we really need or can use..
I get 1,466,695,680 for SYS(3050, 1) and 366,739,456 for SYS(3050, 2) when I check the values from VFP outside of Foxweb.
When Foxweb runs, is it changing the SYS(3050) values to the 2500 we have stored in the Foxweb setup? For "basic" type of processes , what is optimal buffer size for each channel? How does it realate to the actual amount of RAM on the machine? I want to change our channels to 12 or so and trying to find good info on the memory and etc.
Any info or previous knowledge would be a great help. Trying to optimize what we have now and use that knowledge for 11 more servers we are getting ready to replace. Thanks.