【问题标题】:Out of memory error in opencv3.0 which is running inside docker container在 docker 容器内运行的 opencv3.0 内存不足错误
【发布时间】:2016-01-22 11:22:41
【问题描述】:

OpenCV 错误:OutOfMemoryError 中内存不足(分配 995522496 字节失败)。

base_features, base_descs = detector.detectAndCompute(base_img, None)

在这一行中,base_desc 的长度(“len(base_descs)”)约为 70000。base_desc 是一个 numpy 数组。我目前使用的是 4 GB RAM,但它仍然显示此错误。

我在 docker 容器中运行此代码,当我在不使用系统中的容器的情况下运行 python 代码时,上面的代码运行良好。

【问题讨论】:

  • 可能猜测是该 docker 容器中的进程大小可能受到限制。
  • @j.j。 Hakala 即使我认为每个容器都在一个进程中,所以我认为我必须看看在 linux 环境中如何为每个进程分配内存。

标签: python numpy memory-management docker opencv3.0


【解决方案1】:

首先,尝试运行一些docker stats 以查看容器进程执行期间容器的内存使用情况和限制。

然后,尝试增加容器的内存限制 (-m):请参阅“How to measure performance in Docker?

【讨论】:

  • 我已经尝试过 docker stats 并且我已经阅读了 docker 的文档,其中写道,当我们没有在 docker run 命令中指定 -m 时,对内存的使用没有任何限制。但是我对另一个问题感到困惑stackoverflow.com/questions/34972470/…
  • 我在运行 docker stats 后得出的结论是内存快用完了,没有空间让进程继续,我得到了错误
  • @kkk 我同意。你能通过某种方式限制你的进程内存消耗来测试它吗? (例如,根据您当前程序的具体情况,分配更小的数组或打开更小的文件)
  • 我已经尝试过 docker stats 并且我已经阅读了 docker 的文档,其中写道,当我们没有在 docker run 命令中指定 -m 时,对内存的使用没有任何限制。但是我对另一个问题stackoverflow.com/questions/34972470/… 感到困惑。这是我得到的结果,内存限制在 5GB 左右,程序使用了 4.6GB 左右,然后每次都会弹出错误,因为容器需要另外 1GB 的 RAM 空间,这是不可能的
  • @kkk 顺便问一下,你的 VirtualBox VM 中是否设置了内存限制(docker-machine 使用它来处理你做一些 docker 的 Linux 来宾主机)?
【解决方案2】:

按照 VonC 的建议,我尝试运行 docker stats 。我运行我的容器并执行 docker stats 来检查我的容器的统计信息,我的容器的内存使用量正在增加,但限制为 5.028GB,如下所示

 CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O
gigantic_cori        0.02%               4.6 GB / 5.028 GB     2.02%               44.43 MB / 20.51 MB   580.2 MB / 3.196 GB

因此增加 RAM 将是上述问题的解决方案或优化代码以降低 RAM 需求。上述问题发生在容器内部,因为在来宾操作系统(Ubuntu14.04)中运行的容器只有 4GB 的 RAM,而当我在我的主机操作系统(Windows 8.1)中运行代码时,它的 RAM 是 8GB,因此错误没有出现。

【讨论】:

  • 有趣的反馈。 +1
  • @VonC 你能帮我解决这个问题吗stackoverflow.com/questions/34972470/…
  • 我看到了,但还没有答案。我会继续寻找。
  • @VonC 好的。非常感谢您的反馈,这对我帮助很大。如果我得到答案,我会发布它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 2023-04-10
相关资源
最近更新 更多