跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 可调参数参考手册 Oracle Solaris 11 Information Library (简体中文) |
Oracle Solaris 内核内存分配器在内核中分布内存块以供客户机使用。分配器创建大小不同的的许多高速缓存供其客户机使用。客户机还可以请求分配器创建高速缓存以供其自己使用(例如,分配特定大小的结构)。可以使用 kstat -c kmem_cache 命令查看分配器管理的每个高速缓存的相关统计信息。
有时,系统可能因为内存损坏而崩溃。内核内存分配器支持一个调试接口(一组标志),该接口对缓冲区执行各种完整性检查。内核内存分配器还收集关于分配器的信息。通过完整性检查,可以在错误实际发生之前检测到这些错误。收集的信息在支持人员尝试查明崩溃原因时为他们提供一些额外数据。
使用这些标志会导致在系统操作过程中产生额外的系统开销和内存使用情况。仅当怀疑发生了内存损坏问题时才应使用这些标志。
Oracle Solaris 内核内存分配器具有各种调试和测试选项。
下面介绍了五个受支持的标志设置。
|
带符号整数
0(禁用)
0(禁用)或 1 - 15 或 256 (0x100)
是。运行时所做的更改仅影响新的内核内存高速缓存。在系统初始化后,极少会创建新的高速缓存。
无
怀疑发生内存损坏时。
不稳定
如果创建内核线程时在 /etc/system 中启用了 kmem_stackinfo 变量,将会以特定模式填充内核线程栈,而不是用零填充。在内核线程执行过程中,此内核线程栈模式将被逐步覆盖。从栈顶部开始直到找不到该模式为止,一个简单计数会提供一个高水位值,该值是内核线程使用的最大内核栈空间。该机制允许以下功能:
计算实际为系统中的当前内核线程使用的内核线程栈所占的百分比(高水位)
当某个内核线程结束时,对于最后那些在终止前已使用了其大部分内核线程栈的内核线程,系统会将其记录到一个小的循环内存缓冲区中
无符号整数
0(禁用)
0(禁用)或 1(启用)
是
无
当您希望监视内核线程栈使用情况时。请记住,当启用了 kmem_stackinfo 时,创建和删除 kthreads 时的性能会降低。有关更多信息,请参见《Oracle Solaris Modular Debugger Guide》中的第 5 章 "Built-In Commands"。
此参数必须在全局区域中设置。
不稳定