AIX平台上程序运行及其缓慢的问题

时间:2021-08-14 19:04:47
我有台AIX机器,有程序在上面运行的时候速度特别的慢,用truss命令可以看到有大量的disclaim出现,如下:
disclaim("", 16384, 1) = 0
disclaim("", 32768, 1) = 0
disclaim("", 184320, 1) = 0
disclaim("", 8192, 1) = 0
disclaim("", 16384, 1) = 0
disclaim("", 32768, 1) = 0
disclaim("", 184320, 1) = 0
disclaim("", 8192, 1) = 0
disclaim("", 16384, 1) = 0
disclaim("", 32768, 1) = 0
disclaim("", 184320, 1) = 0
disclaim("", 8192, 1) = 0
这里的disclaim是不是和系统释放内存相关? 在什么样的情况下会出现disclaim的调用?
因为在另外一台机器上,运行同样的程序,没有出现这样的情况.

另外,我注意到程序里大量进行new,delete操作的时候,disclaim出现频率很高,此时的程序运行很缓慢.

请高手指点!

8 个解决方案

#1


猜测一下
disclaim 是不是析构?

#2


哦 应该是delete引起的

#3


justkk能说得详细一点么? 谢谢

#4


我也不确定
与你的设想一样,大量的delete操作表现为disclaim调用


记得有个环境变量,关于内存分配的,针对频繁的内存分配释放的场景,把它设置为pool好像能改善性能
忘记具体名字了

#5


试试
export MALLOCOPTIONS=pool

然后再运行你的程序,看性能是否有改善

#6


谢谢,但是我想解决这个问题,不希望有大量的disclaim产生,不晓得从何处入手

#7


该回复于2012-06-11 08:31:04被版主删除

#8


justkk,非常感谢你的回帖.
问题基本上搞明白了,如果将环境变量MALLOCOPTIONS设为disclaim,系统将在free内存的时候,调用disclaim,但是这样做的坏处是降低系统性能.

#1


猜测一下
disclaim 是不是析构?

#2


哦 应该是delete引起的

#3


justkk能说得详细一点么? 谢谢

#4


我也不确定
与你的设想一样,大量的delete操作表现为disclaim调用


记得有个环境变量,关于内存分配的,针对频繁的内存分配释放的场景,把它设置为pool好像能改善性能
忘记具体名字了

#5


试试
export MALLOCOPTIONS=pool

然后再运行你的程序,看性能是否有改善

#6


谢谢,但是我想解决这个问题,不希望有大量的disclaim产生,不晓得从何处入手

#7


该回复于2012-06-11 08:31:04被版主删除

#8


justkk,非常感谢你的回帖.
问题基本上搞明白了,如果将环境变量MALLOCOPTIONS设为disclaim,系统将在free内存的时候,调用disclaim,但是这样做的坏处是降低系统性能.