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空间不足了,导致看上去有很多内存,但实际上用不了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
data seg size 受到maxdsiz限制没法再调了啊
但在root下我可以把data seg size设置为unlimited,然后再跑程序可以超过4G
data seg size (kbytes, -d) 4194300
这个设置改大一点啊
shmmax设置为多少呢?