使用AWS EFS挂载的情况下,随机访问numpy memmap非常慢。
- 论坛
- 使用AWS EFS挂载的情况下,随机访问numpy memmap非常慢。
7 浏览
使用AWS EFS挂载的情况下,随机访问numpy memmap非常慢。
我有一堆大矩阵(n x d,其中 d 远小于 n),保存为二进制文件,使用numpy的memmap类在AWS的弹性文件系统中。我需要能够在我的EC2部署中快速选择一个矩阵,并随机采样m行(m 远小于 n),这些部署中已挂载了弹性文件系统。据我了解,使用memmaps只需将这m行加载到内存中,因此比仅读取整个矩阵并加载到内存中要快得多。
我主要关心的是这个操作所需的时间比我预期的要长得多。对于一个形状为(1m x 1024)的矩阵,仅加载5,000行就需要30秒。我还发现,从磁盘的内存映射文件中采样要比从EFS挂载点中读取随机行的速度快得多。
有人能解释为什么会发生这种情况吗?我可以看到这并不是EFS的吞吐量的问题,实际上只需要几秒钟就可以将整个内存映射复制到磁盘上(此时我认为它已缓存在部署的本地操作系统的RAM中),然后少于一秒钟即可采样所需的行。为什么我不能直接从挂载的EFS中采样?是不是因为它是NFS挂载,我们加载的数据远远超过我们所需的?