大型Python Recarre的记忆处理,以便在Gridengine上快速读写



是否有任何方法可以强制将python2.7对象保存在RAM中以进行快速读取和写入访问?或者,无论如何这是一个依赖OS的事项,都可以使网格引擎进行相同的操作?

我有一个大型的全球再派阵列(Myrecarray),其中包括19个田地和5000万行。我正在使用一个定义(myloop)循环一次访问每行的MyRecarray,以更新2个字段的值并将某些数据复制到其他对象。这是通过QSUB在带有256GB RAM的群集上(约10倍的MyRecarray的大小,因此可以应对Myrecarray的大小)运行。这里的问题是循环在集群上运行时是一个巨大的瓶颈。在使用MacBook Pro(4GB RAM,2.53 GHz处理器)上使用TimeIT进行相同的500,000行回归测试循环时,LOOP的时间为250^-6秒,并且比群集上的速度快5倍。

群集似乎很可能没有将Myrecarray固定在RAM中,而是强迫循环每次从光盘中读取它,从而导致放缓。

我已经研究了网格引擎上的内存共享,在python中进行了多处理,并堆积了一些,并且丢失了一点,尤其是因为我不确定这是怎么回事。任何建议都将受到热烈欢迎

recarre的一个示例行是...

(49817038, 'C', 'R', 'O', 'U', 'E', 1, 1, 0, 0, 1, 2, 3, 3, 6, 2, 0, 'Tup', 'Hit')

n.b。我是唯一使用此集群的人,因此与其他作业没有冲突,这是一个线程过程,并且管理员对RAM使用没有限制。

非常感谢

我认为这是一个操作系统设置。查看如何配置交换系数。如果您想将所有内容保留在RAM中,除非已满,请将其设置为0。

http://en.wikipedia.org/wiki/swappiness

最新更新