我尝试通过在单个服务器进程中传输和路由它们来尝试在多个客户端(进程)之间本地移动数据。这个传输是通过localhost:8080上的websockets完成的。服务器和客户端都是用python实现的;客户端是python websocket-client库的简单版本,服务器是tornado.web.Application对象。 现在,当从客户端1 - >服务器 - >客户端2传输数据包(大小约20-100字节)时,我在不同的平台上看到不同的速度: 1.亚马逊AWS:给我一个约0.7毫秒的时间延迟。 2. Raspberry Pi:给我一个4.5msec的时间延迟。树莓中的网络端口传输速度很慢
如果客户端在顶部使用任何排队(collections.deque库),则延迟在RPi中有时超过100毫秒,尽管在AWS中它保持在7.5毫秒内。 我知道本地IP地址套接字必须作为文件描述符保存在易失性内存中,并且增加不同头文件和websocket相关参数的网络开销,会增加数据包处理期间的延迟。 我的猜测是,在RPi上的RAM读写速度比AWS小。我通过在每个平台上运行'dd'来确认这一点,以传输1k大小的块。 RPi不会超过95Mb /秒,而AWS很容易超过900Mb /秒。我想,RPi通过串行接口连接到SD卡。但是,亚马逊必须比他们的EC2虚拟机做得更好。
这里我的问题是这个怀疑是否属实?这两种平台之间的性能差异可能是RAM存取速度的唯一原因吗?
注:我很抱歉,但我不想粘贴我的代码的一部分,除非有一个可怕的原因/需要它。感谢你的理解。
我相当怀疑人能回答这样一个理论性的问题,没有看到相关的代码。 Raspberry PI在你所有的传输级别上都比AWS服务器强大得多。很有可能,你会看到Raspberry Pi上很多链条部分的积累比较慢。 95Mbps的声音听起来像普通SD卡的普通访问速度一样(尽管如果控制器可以更快地购买更快的卡,则可以购买更快的卡)。 – jfriend00