c++ - Linux 中的交换内存速度

标签 c++ linux

我在 Linux 64 位 (Redhat Enterprise) 中有一个进程将一百万条记录登记到内存中,每条记录为 4KB,因此总内存消耗约为 4 GB。

我的电脑有 2GB RAM 和 3GB 交换内存。所以很明显,一部分数据会被放入交换内存中。问题是我不知道为什么遍历所有这些记录真的需要很长时间。我有一个循环遍历每条记录并做一些事情的函数。它适用于大约 500,000 条记录,该功能只需几分钟即可完成。然而,对于双倍数量的记录,即 1,000,000 条记录,执行相同的功能需要数小时。我在 Linux 中使用 top 命令检查 cpu 负载,看到它大约是 90%wa(等待 I/O 的时间)。我想这可能会导致问题,但真的不知道为什么会这样。

如果您有任何有用的想法,我将非常感谢。

最佳答案

交换区是磁盘。磁盘带宽比内存带宽低两个或三个数量级。

关于c++ - Linux 中的交换内存速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7009619/

相关文章:

c++ - 我的线程仍然卡住我的 GUI

linux - 如何将终端的数值传递给计算器?

linux - 如何在 Linux 上的 .Net Core 中捕获双页错误(内存映射文件读取错误)?

linux - 安装 php-devel centos

c++ - 警告 : extended initializer lists only available with -std=c++0x or -std=gnu++0x

c++ - libtiff 与 VS2012

c++ - spdlog 错误 : "don' t know how to format the type, 包括 fmt/ostream.h(如果它提供了应使用的运算符 <<)”

c++ - 从规则间隔的数据生成等高线

c++ - 使用 gcc 在 linux 中链接 <iostream.h>

linux - ping 命令在 CentOS 中不起作用