Some additional factors to consider for low SQL Server Availbility Group log send rate.
This article gives good description and troubleshooting steps for a number of conditions that can result in Availability Group flow control and lower-than-expected log send rates.
Common Causes and Troubleshooting Solutions for SQL AG Data Synchronization Latency
If the Availability Group is synchronous, compression before send is disabled by default(save a little time and a little CPU, use a little more bandwidth). If the Availability Group is asynchronous, compression before send is enabled by default (take a little more time, use a little more CPU in order to reduce bandwidth needs).
For a given workload, the tradeoff might not work out favorably. Trace flags are available to override the default state of compression before send for both synchronous and asynchronous Availablility Groups.
Trace flags for availability group compression
For SQL Server vms, I always recommend boosting the TCP receive buffers for the network adapters. If this is a VMware VM, i strongly recommend the vmxnet3 network adapter. For each vmxnet3 adapter in a VM, the net difference in vRAM use within the vm is less than 18 mb when parameters "small rx buffers" and "rx ring #1 size" are increased from default values to maximum values. (These are the parameters to change if the "Jumbo Packet" parameter has value "Standard 1500" or anything close to 1500 like 1512. If "Jumbo Packet" is 8000 have to find jumbo packet TCP recieve parameters to modify.) In the case of an Availability Group, ensuring adequate TCP recieve resource on the secondary reduces transmission slowdowns due to packet loss along the way.
Large packet loss in the guest OS using VMXNET3 in ESXi (2039495)
Make sure that power plan is high performance on sending and recieving side of the Availability Group. For the VM secondary target, may need to verify at VM and host level. For older processors, if fewer than half the cores on a socket are busy all cores on the socket could be slowed down(rather than power-tuning of individual cores as in later processors). And when cores are slowed down, other components such as network adapters can be slowed down as well (even memory access times can be slowed with some power plan implementations).
Finally, although the log send rate is lower than desired, for that workload it might be at the peak. Many sites avoid large index rebuilds as much as possible in Availability Groups due to the stress, instead focusing on index reorgs.