Chinaunix

标题: HP-UX上64位程序使用到4G内存就溢出了? [打印本页]

作者: tristan0720    时间: 2010-08-25 11:27
标题: HP-UX上64位程序使用到4G内存就溢出了?
本帖最后由 tristan0720 于 2010-10-24 14:52 编辑

IA64机器、HP-UX 11.31、机器内存56G还有很多空闲

跑一perl脚本,因为使用了大量hash,所以相当耗内存,perl是使用64位的/opt/perl_64/bin/perl
现在用top看到程序使用内存一到4G就out of memory了

64位进程现在设置的是最多使用8G数据段,参数如下:
$ ulimit -a
core file size          (blocks, -c) 2097151
data seg size           (kbytes, -d) 4194300
file size               (blocks, -f) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 2048
pipe size            (512 bytes, -p) 16
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 257
virtual memory          (kbytes, -v) unlimited

$ kctune -v maxdsiz
Tunable             maxdsiz
Description         Maximum size of the data segment of a 32-bit process (bytes)
Module              vm
Current Value       4294963200
Value at Next Boot  4294963200
Value at Last Boot  1073741824
Default Value       1073741824
Constraints         maxdsiz >= 262144
                    maxdsiz <= 4294963200
Can Change          Immediately or at Next Boot

$ kctune -v maxdsiz_64bit
Tunable             maxdsiz_64bit
Description         Maximum size of the data segment of a 64-bit process (bytes)
Module              vm
Current Value       8589934592
Value at Next Boot  8589934592
Value at Last Boot  8589934592
Default Value       4294967296
Constraints         maxdsiz_64bit >= 262144
                    maxdsiz_64bit <= 4396972765184
Can Change          Immediately or at Next Boot

不明白为什么64位程序似乎是受到maxdsiz限制而不是maxdsiz_64bit限制

请问如何调整我的脚本使用到的内存?
还是64位perl编译有问题,根本就是32位,如何确定?

==============================================
问题已经解决,其实只要设置maxdsiz_64bit,使用64位perl就行了,之前就是这样设的,出问题的原因是系统的swap空间不足了,导致看上去有很多内存,但实际上用不了。
作者: leelangco    时间: 2010-08-25 16:14
shmmax设置为多少呢?
作者: michael1983    时间: 2010-08-26 11:27
data seg size           (kbytes, -d) 4194300
这个设置改大一点啊
作者: tristan0720    时间: 2010-08-26 16:39
data seg size 受到maxdsiz限制没法再调了啊
但在root下我可以把data seg size设置为unlimited,然后再跑程序可以超过4G




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2