AIX环境变量详解.docx
- 文档编号:569176
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:15
- 大小:23.21KB
AIX环境变量详解.docx
《AIX环境变量详解.docx》由会员分享,可在线阅读,更多相关《AIX环境变量详解.docx(15页珍藏版)》请在冰点文库上搜索。
AIX环境变量详解
1月11日
AIX环境变量详解
环境变量
线程支持可调参数
下面是一个可调谐的线程支持参数的列表:
1.AIXTHREAD_COND_DEBUG(AIX4.3.3及后续版本)
用途:
保留调试器使用的条件变量列表
值:
缺省值:
ON
范围:
ON、OFF
显示:
echo$AIXTHREAD_COND_DEBUG(这是由内部打开的,因此初始的缺
省值不能通过命令echo看到)
更改:
AIXTHREAD_COND_DEBUG={ON|OFF}
exportAIXTHREAD_COND_DEBUG
更改会在该shell中立即生效。
更改在退出这个shell之前一直有效。
当
将命令AIXTHREAD_COND_DEBUG={ON|OFF}加入文件/etc/environment时
会产生持久的更改。
诊断:
用它可以很容易调试多线程应用程序但会增加额外的开销。
调谐:
如果程序包含很多活动的条件变量并经常创建和破坏条件变量,保
存这个条件变量列表会产生很大的开销。
设置变量到OFF会禁用该列表。
参考线程调试选项
2.AIXTHREAD_ENRUSG
用途:
启用或禁用p线程资源集合。
值:
缺省值:
OFF
范围:
ON,OFF
显示:
echo$AIXTHREAD_ENRUSG(这是由内部打开的,因此初始的缺省值
不可以由命令echo看到)
更改:
AIXTHREAD_ENRUSG={ON|OFF}
exportAIXTHREAD_ENRUSG
更改会在shell中立即生效。
在退出这个shell之前一直有效。
当加上命
令AIXTHREAD_ENRUSG={ON|OFF}到文件/etc/environment时会产生持久
的变化。
检测:
打开它要考虑进程中所有p线程资源集合但会增加一些开销。
调谐:
参考线程环境变量
3.AIXTHREAD_GUARDPAGES(AIX4.3和最近的)
用途:
控制保护页数,加到p线程栈尾。
值:
缺省值:
0范围:
一个正整数
显示:
echo$AIXTHREAD_GUARDPAGES(这是由内部打开的,因此初始的
缺省值不可以由命令echo看到)
更改:
AIXTHREAD_GUARDPAGES=nexportAIXTHREAD_GUARDPAGES更改会在
shell中立即生效。
在退出这个shell之前一直有效。
当加上命令
AIXTHREAD_GUARDPAGES=n到文件/etc/environment时会产生持久的变化。
检测:
N/A
调谐:
N/A
参考线程环境变量
4.AIXTHREAD_MINKTHREADS(AIX4.3和最近的)
用途控制可用的最小量的内核线程。
值:
缺省值:
8
范围:
一个正整数值
显示:
echo$AIXTHREAD_MINKTHREADS(这是由内部打开的,因此初始的
缺省值不可以由命令echo看到)
更改:
AIXTHREAD_MINKTHREADS=nexportAIXTHREAD_MINKTHREADS更改会
在shell中立即生效。
在退出这个shell之前一直有效。
当加上命令
AIXTHREAD_MINKTHREADS=n到文件/etc/environment时会产生持久的变化。
检测:
N/A
调谐:
库调度程序不会收回低于某个数的内核线程。
实际上在任何数时内
核线程都可以被收回。
一般来说,内核线程是作为p线程中止结果的目标。
参考:
进程范围的争用作用域的变量
5.AIXTHREAD_MNRATIO(AIX4.3和最近的)
用途:
控制库的比例因子。
这个比率用于创建和终止p线程。
值:
缺省值:
8:
1
范围:
两个正值(p:
k)中,k可用来处理p个可执行p线程的内核线程
数。
显示:
echo$AIXTHREAD_MNRATIO(这是由内部打开的,因此初始的缺省
值不可以由命令echo看到)
更改:
AIXTHREAD_MNRATIO=p:
kexportAIXTHREAD_MNRATIO更改会在
shell中立即生效。
在退出这个shell之前一直有效。
当加上命令
AIXTHREAD_MNRATIO=p:
k到文件/etc/environment时会产生持久的变化。
检测:
N/A
调谐:
这个对拥有很多线程的应用程序十分有用。
但它总是测试1:
1的
比率,因为它要提供更优的性能。
参考:
进程范围的争用作用域的变量
6.AIXTHREAD_MUTEX_DEBUG(AIX4.3.3和最近的)
用途:
保留调试器使用的互斥变量列表。
值:
缺省值:
OFF
范围:
ON,OFF
显示:
echo$AIXTHREAD_MUTEX_DEBUG(这是由内部打开的,因此初始的
缺省值不可以由命令echo看到)
更改:
AIXTHREAD_MUTEX_DEBUG={ON|OFF}exportAIXTHREAD_MUTEX_DEBUG
更改会在shell中立即生效。
在退出这个shell之前一直有效。
当加上命
令AIXTHREAD_MUTEX_DEBUG={ON|OFF}到文件/etc/environment时会产生
持久的变化。
检测:
设置变量值为ON会使调试多线程应用程序变得容易,但会增加额
外开销。
调谐:
如果程序包含很多活动的互斥变量并经常创建和破坏互斥变量,保
存这个互斥变量列表会产生很大的开销。
设置变量为OFF会禁用该列表。
参考:
线程调试选项
7.AIXTHREAD_RWLOCK_DEBUG(AIX4.3.3和最近的)
用途:
保留调试器使用的读写锁列表。
值:
缺省值:
ON
范围:
ON,OFF
显示:
echo$AIXTHREAD_RWLOCK_DEBUG(这是由内部打开的,因此初始的
缺省值不可以由命令echo看到)
更改:
AIXTHREAD_RWLOCK_DEBUG={ON|OFF}export
AIXTHREAD_RWLOCK_DEBUG更改会在shell中立即生效。
在退出这个shell
之前一直有效。
当加上命令AIXTHREAD_RWLOCK_DEBUG={ON|OFF}到文件
/etc/environment会产生持久的变化。
检测:
用它可以很容易调试多线程应用程序但会增加额外的开销。
调谐:
如果程序包含很多活动的读写锁并经常创建和破坏读写锁,保存这
个读写锁列表会产生很大的开销。
设置变量到OFF会禁用该列表。
参考:
线程调试选项
8.AIXTHREAD_SCOPE(AIX4.3.1和最近的)
用途:
控制争用作用域。
P意味着基于进程的争用作用域(M:
N)。
S意
味着基于系统的争用作用域(1:
1)。
值:
缺省值:
P
可能的值:
P或S
显示:
echo$AIXTHREAD_SCOPE(这是由内部打开的,因此初始的缺省值
不可以由命令echo看到)
更改:
AIXTHREAD_SCOPE={P|S}exportAIXTHREAD_SCOPE更改会在shell
中立即生效。
在退出这个shell之前一直有效。
当加上命令
AIXTHREAD_SCOPE={P|S}到文件/etc/environment时会产生持久的变化。
检测:
如果分到的线程比期望的少,那么系统作用域应该再试一下。
调谐:
在AIX4.3.2上的测试显示某些应用程序使用基于系统的争用作
用域(S)会运行的更好。
使用环境变量仅影响用缺省属性创建的线程。
缺
省属性被启用是在pthread_create的参数attr设为NULL的时候。
参考:
线程环境变量
9.AIXTHREAD_SLPRATIO(AIX4.3和最近的)
用途:
控制预留给睡眠线程的内核线程数。
值:
缺省值:
1:
12
范围:
两个正值(k:
p),其中k是预留给p睡眠线程的内核线程数。
显示:
echo$AIXTHREAD_SLPRATIO(这是由内部打开的,因此初始的缺省
值不可以由命令echo看到)
更改:
AIXTHREAD_SLPRATIO=k:
pexportAIXTHREAD_SLPRATIO更改会在
shell中立即生效。
在退出这个shell之前一直有效。
当加上命令
AIXTHREAD_SLPRATIO=k:
p到文件/etc/environment时会产生持久的变化。
检测:
N/A
调谐:
一般来说,支持睡眠线程需要的内核线程是很少的。
因为它们一般
是一次醒一个。
这就保存了内核资源。
参考:
进程范围的争用作用域的变量
10.AIXTHREAD_STK=n(AIX4.3.3ML09和最近的)
用途:
十进制字节应该分配到每个p线程。
这个值可以被
pthread_attr_setstacksize覆盖。
值:
缺省值:
对于32bit的应用程序是98,304字节,对于64bit的应
用程序是196,608字节。
范围:
对于最新的页(当前是4,096),十进制整数会从0到
268,435,455循环。
显示:
echo$AIXTHREAD_STK(这是由内部打开的,因此初始的缺省值不
可以由命令echo看到)
更改:
AIXTHREAD_STK=sizeexportAIXTHREAD_STK更改会在shell中
立即生效。
在退出这个shell之前一直有效。
当加上AIXTHREAD_STK=size
到文件/etc/environment会产生持久的变化。
检测:
如果失败程序的分析结果是由于堆栈溢出,缺省的栈大小应该增加。
调谐:
如果在一个32bit的应用程序中要达到32,000的线程极限数就
需要减小缺省堆栈大小。
11.MALLOCBUCKETS(Version4.3.3.25和最新的)
用途:
在缺省内存分配器中启用基于桶形的扩展会提高有很多小内存分配
要求的应用程序的性能。
值:
MALLOCTYPE=buckets
MALLOCBUCKETS=[[number_of_buckets:
n|bucket_sizing_factor:
n|
blocks_per_bucket:
n|
bucket_statistics:
[stdout|stderr|pathname]],...]
下列表格显示了缺省的MALLOCBUCKETS值。
MALLOCBUCKETSDefaultValues
MALLOCBUCKETSOptions
DefaultValue
number_of_buckets^1
16
bucket_sizing_factor(32-bit)^2
32
bucket_sizing_factor(64-bit)^3
64
blocks_per_bucket
1024^4
注意:
1.允许的最小值是1,最大值是128。
2.对于32-bit的情况,bucket_sizing_factor的专有值必须是8的倍数。
3.对于64-bit的情况,bucket_sizing_factor的专有值必须是16的倍数。
4.选项bucket_statistics在缺省情况下被禁用。
显示:
echo$MALLOCBUCKETS;echo$MALLOCTYPE
更改:
使用shell专用变量来导出环境变量。
检测:
如果malloc性能很差而且很多小的malloc要求被争用,功能部
件应该要提高性能了。
调谐:
为了启用malloc存储区,环境变量MALLOCTYPE一定要设置为
‘bucket’。
环境变量MALLOCBUCKETS可以用来更改malloc存储区的缺省配置,尽管缺
省值对大多数应用程序已经够用了。
选项number_of_buckets:
n可以用来设定用于每堆的存储区数量,其中n
是存储区数量。
指定的n值会用于所有有效的堆。
选项bucket_sizing_factor:
n可以用于设定存储区大小因子,其中n是
用字节表示的存储区大小因子。
选项blocks_per_bucket:
n可以设定初始化时每个存储区的块数,其中n
是块数。
这个值用于所有存储区。
当所有块被分配出去后,这个n值也可
在自动扩大存储区时用来确定每个存储区要增加多少块。
选项bucket_statistics会使malloc子系统输出一个关于每个进程终止
时调用malloc系统而malloc存储区正被启用的malloc存储区的统计摘
要。
这个摘要会显示存储区配置信息和处理每个存储区时分配内存的需要
量。
如果通过malloc很多堆被启用,每个存储区的分配需求量就是处理那
个存储区所有堆的分配需求量之和。
存储区统计摘要位于下列输出目标文件中,由选项bucket_statistics设定。
stdout
标准输出
stderr
标准错误
pathname
用户指定路径名
如果提供了用户指定路径名,统计输出会附加到已存在的文件内容后面。
应
当避免本应成为另一进程输入内容的某进程输出成为了以标准输出形式存在
的终端输出。
Referto:
MallocBuckets<../../aixprggd/genprogc/malloc_buckets.htm>
12.MALLOCMULTIHEAP(AIX4.3.1和最新的)
用途:
在进程私有段内控制堆数
值:
缺省值:
4.3.1和4.3.2是16,4.3.3和更新版本是32
范围:
1到32之间的正数
显示:
echo$MALLOCMULTIHEAP(这是由内部打开的,因此初始的缺省值
不可以由命令echo看到)
更改:
MALLOCMULTIHEAP=[[heaps:
n|considersize],...]export
MALLOCMULTIHEAP更改会在shell中立即生效。
在退出这个shell之前一
直有效。
当加上命令MALLOCMULTIHEAP=[[heaps:
n|considersize],...]
命令到文件/etc/environment时会产生持久的更改。
检测:
在malloc锁(位于F段)中寻找锁争用或少于需要的可执行线程。
调谐:
较小的堆数可以减小进程大小。
大量使用malloc子系统的某些多
线程用户进程在开始应用程序前输出环境变量MALLOCMULTIHEAP=1可以得到
更加好的性能。
潜在的性能优化最可能出现在多线程C++程序中,因为无论调用构造函数
或析构函数这些都要用到malloc子系统。
在多线程用户进程运行于SMP系统时,任何性能优化都是可以得到的,尤
其是在使用系统作用域线程(M:
Nratioof1:
1)时。
但是,在一些条件下
和在单一处理器中性能也能得到提高。
如果选项considersize被设定,交替堆选择算法将用来选择有足够空间处
理需求的有效堆。
通过减小sbrk()调用次数,可以使进程工作集大小最小
化。
但是这个算法需要更多一点的处理时间。
参考:
线程环境变量
13.SPINLOOPTIME
用途:
在转到其他处理器(仅对于libpthreads)前控制时间量来重试繁
忙的锁。
值:
缺省值:
单一处理器是1,多处理器是40
范围:
一个正整数
显示:
echo$SPINLOOPTIME(这是由内部打开的,因此初始的缺省值不可
以由命令echo看到)
更改:
SPINLOOPTIME=nexportSPINLOOPTIME更改会在shell中立即生
效。
在退出这个shell之前一直有效。
当加上命令SPINLOOPTIME=n到文
件/etc/environment时会产生持久的更改。
检测:
如果线程经常睡眠(很多空闲时间),说明SPINLOOPTIME不够高。
调谐:
如果p线程互斥锁被争用,那么在多处理器系统中从40开始增
加缺省值会很有好处。
参考:
线程环境变量
14.YIELDLOOPTIME
用途:
在忙锁(仅用于libpthreads)上分块前控制使用处理器的次数。
假如有另一个优先级较高的可执行内核线程,处理器就会去处理那个内核线
程。
值:
缺省值:
0
范围:
一个正值
显示:
echo$YIELDLOOPTIME(这是由内部打开的,因此初始的缺省值不
可以由命令echo看到)
更改:
YIELDLOOPTIME=nexportYIELDLOOPTIME更改会在shell中立即生
效。
在退出这个shell之前一直有效。
当加上命令YIELDLOOPTIME=n到文
件/etc/environment时会产生持久的更改。
检测:
如果线程经常睡眠(很多空闲时间),说明YIELDLOOPTIME不够高。
调谐:
如果您不想让线程在等待锁的时候睡眠,从0开始增加缺省值是
很有好处的。
参考:
线程环境变量
各类可调参数
以下是可调谐的其它参数列表:
1.EXTSHM(AIX4.2.1和更新的)
用途:
打开扩展共享内存设备。
值:
缺省值:
不设
可能值:
ON
显示:
echo$EXTSHM
更改:
EXTSHM=ONexportEXTSHM更改会在shell中立即生效。
在退出这
个shell之前一直有效。
当加上命令EXTSHM=ON到文件
/etc/environment时会产生持久的更改。
检测:
N/A
调谐:
设定值为ON就会允许进程分配最小为1字节的共享内存段(尽
管这可以加到最近的页上),这样有效地解决了11用户共享内存段地的限
制。
所有段总的大小最大也只有2.75GB,相当于32-bit处理器中的内
存。
64-bit处理器不需要设置这个变量,因为很大数量的段可以使用。
在
处理时有一些诸如设置变量的限制,这些限制与使用mmap缓冲区的进程中
的是一样的。
参考:
扩展共享内存(EXTSHM)
2.LDR_CNTRL
用途:
允许调谐内核安装器。
值:
缺省值:
未设置可能的值:
PREREAD_SHLIB、LOADPUBLIC、
IGNOREUNLOAD、USERREGS、MAXDATA和DSA
显示:
echo$LDR_CNTRL
更改:
LDR_CNTRL={PREREAD_SHLIB|LOADPUBLIC|...}export
LDR_CNTRL更改会在shell中立即生效。
在退出这个shell之前一直有
效。
当加入命令LDR_CNTRL={PREREAD_SHLIB|LOADPUBLIC|...}到文件
/etc/environment时会产生持久的更改。
检测:
N/A
调谐:
环境变量LDR_CNTRL可以用来控制一个和多个有关系统安装器行
为的因素。
用变量DR_CNTRL您可以设定多个选项。
设定时,用符号@(即
LDR_CNTRL=PREREAD_SHLIB@LOADPUBLIC)来分离不同选项。
设定选项
PREREAD_SHLIB会使访问库的同时读取库。
当VMMreadahead被调谐时,
库可以从磁盘读入,并可以在程序访问它的页时放入高速缓存。
虽然这个方
法使用更多的内存,它可以优化使用很多共享库页面的程序的性能,只要
访问模式是非连续的。
(如,Catia)。
设定选项LOADPUBLIC引导系统安
装器安装应用程序需要的所有模块到通用共享库段中。
如果一个模块不可以
公用地装入到一个通用共享库段中,那么它只能私有地被装入应用程序中。
设定选项IGNOREUNLOAD会使标记模块被卸载或再次被使用(如果这个模块
还没有被卸载)。
作为这个选项的附加效应,你可以终止该模块的两个不同
的数据实例。
设定选项USERREGS会告诉系统通过应用程序的系统调用,保
存所有一般用途的用户寄存器数值。
这在应用程序处理垃圾收集时十分有
用。
变量LDR_CNTRL中的选项MAXDATA允许您设置或覆盖可执行程序中设
定的最大值。
如果你要使用数据堆大小为0x30000000的LargeProgram
Support,就需要设定LDR_CNTRL=MAXDATA=0x30000000。
关闭Large
ProgramSupport时,设定LDR_CNTRL=MAXDATA=0。
设定选项DSA(动态
段分配)会告诉系统安装器使用VeryLargeProgramSupport运行程序。
选项DSA仅用于最大数据值非零的应用程序时有效。
3.NODISCLAIM
用途:
控制怎样调用正在处理的free()。
当PSALLOC设为early时,
所有free()调用导致一个disclaim()系统调用。
当NODISCLAIM设为
True,这个不会发生。
值:
缺省值:
不设
可能值:
True
显示:
echo$NODISCLAIM
更改:
NODISCLAIM=trueexportNODISCLAIM更改会在shell中立即生
效。
在退出这个shell之前一直有效。
当加入命令NODISCLAIM=true到文
件/etc/environment时会产生持久的更改。
检测:
如果disclaim()系统调用数很大,您应该设置这个变量。
调谐:
如果PSALLOC被设为early,设置这个变量会消除从free()到
disclaim()的调用。
参考:
先页面空间分配
4.NSORDER
用途:
重写集合名称分辨率搜索顺序。
值:
缺省值:
bind、nis、local
可能值:
bind、local、nis、bind4、bind6、local4、local6、nis4和nis6
显示:
echo$NSORDER(这是由内部打开的,因此初始的缺省值不可以由
命令echo看到)
更改:
NSORDER=value,value,...exportNSORDER更改会在shell中
立即生效。
在退出这个shell之前一直有效。
当加上命令NSORDER=value
到文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AIX 环境变量 详解