我在Linux 64位(Redhat Enterprise)上运行一个进程,将一百万条记录存入内存,每条记录为4KB,因此总内存消耗约为4GB。
我的计算机有2GB的RAM和3GB的交换空间。所以显然部分数据将被放入交换空间。问题是我不知道为什么遍历所有这些记录需要太长时间。我有一个循环遍历每个记录并执行一些操作的函数。它可以处理大约500,000条记录,该函数只需要几分钟就能完成。但是,如果是双倍数量的记录,即1,000,000条记录,则需要数小时才能完成相同的功能。我使用Linux中的top命令检查CPU负载,并看到它约为90%wa(等待I / O的时间)。我猜想这可能是问题的原因,但真的不知道为什么会发生这种情况。
非常感谢您提供任何有用的想法。
我的计算机有2GB的RAM和3GB的交换空间。所以显然部分数据将被放入交换空间。问题是我不知道为什么遍历所有这些记录需要太长时间。我有一个循环遍历每个记录并执行一些操作的函数。它可以处理大约500,000条记录,该函数只需要几分钟就能完成。但是,如果是双倍数量的记录,即1,000,000条记录,则需要数小时才能完成相同的功能。我使用Linux中的top命令检查CPU负载,并看到它约为90%wa(等待I / O的时间)。我猜想这可能是问题的原因,但真的不知道为什么会发生这种情况。
非常感谢您提供任何有用的想法。