Hi Vivek,
Linking myself in since I have been working on c core flow control these days. Neither the grpc_fd objects, or the flow control parameters are made available to the user. This is a very conscious choice as we want to do all the fd bookkeeping ourselves and we want to optimize flow control ourselves. At the moment there are some known issues with flow control stalls under large message throughput situations, but that is under investigation.
In the mean time, you are welcome to do some experimentation, but it will have to happen through actually modifying the c core. Here are some interesting places you might look in the code based on this discussion and the on you had with Carl in a different thread:
target_write_size() is where we set a target size for the chunks actually hitting a write syscall. It's currently 1M
update_bdp() is where we update the connection's initial window to our estimate of the bdp. Note that a few lines later we update the max frame size to max(bdp and bandwidth per ms). I saw you mentioned this in the other thread.
Check those out to start. We can keep discussing in this thread if you want to start experimenting with performance. I am currently working on refactoring the flow control code to exist in one module with a clear interface.
Hope this helps!
Noah