我的EC2机器上的内存副本似乎出乎意料地慢了。我想找出原因。
在大多数计算机上,我观察到大容量内存复制带宽为3000 MB / s。请参阅以下Python代码段:
In [1]: data = b'0' * int(1e8) # 100 MB
In [2]: %time len(data[1:]) # memcopy
CPU times: user 18.4 ms, sys: 8.62 ms, total: 27.1 ms
Wall time: 27.1 ms
Out[2]: 99999999
In [3]: 100000000 / 0.027 / 1e6 # MB/s
Out[3]: 3703.703703703704
但是,在EC2上,这会发生显着变化
In [1]: data = b'0' * int(1e8) # 100 MB
In [2]: %time len(data[1:]) # memcopy
CPU times: user 44 ms, sys: 148 ms, total: 192 ms
Wall time: 192 ms
Out[2]: 99999999
In [3]: 100000000 / 0.192 / 1e6 # MB/s
Out[3]: 520.8333333333333
我永远不会看到memcpy之前慢慢运行。可能的原因是什么?
软件环境大致相同。我在每台机器上运行Ubuntu 14.04和Anaconda和Python 2.7。硬件 不同