我正在embedded式系统上创build一个服务器。 我有一个SD卡上的FAT文件系统,其中包含一个文件,该文件应该通过HTTP连接到系统的WiFi发送到某个客户端 。
起初,我试图逐字节读取文件,这是非常缓慢的。 为了改善文件阅读,我介绍了一个缓冲区。 我从文件读取到缓冲区,然后将缓冲区内容写入发送到客户端的stream:
file -> buffer -> network
增加缓冲区大小会增加数据传输速率。 我认为这是因为对文件系统的读操作数量减less了。
但是,任意大的缓冲区(比如说5000字节)会适得其反。 我怀疑这是由于bufferbloat。 服务器花费太多的时间填充缓冲区,这使networking混乱。
显然,有一些最佳的缓冲区大小,读取速度增加,而不会由于缓冲区膨胀而导致放缓。
我想提高数据传输率方面的总体performance。 目前我得到3Mbi / s太慢了。 我在控制缓冲区大小和集群大小。 我可以通过为这两个值做出正确的select来改善系统的性能吗?
如何决定这些尺寸以提高数据传输率?