How to diag High Memory Utilization on HP-UX ? (内存使用高)
山东其他同事遇到一例Oracle on HPUX的环境内存使用率高,这几年hpux使用几乎是个稀罕之物, 想起前几年11g on hpux月月处理故障的日子已经不存在了, 19c on linux如此稳定,DBA价值自然不得体现,草木本无意,荣枯自有时。
上数据
从glancel输出可见filecache占用100GB以上(50%).
常用命令
glance kmeminfo model swapinfo -tam bdf sysdef kmtune -q dbc_max_pct -q dbc_min_pct kmtune -q nbuf -q bufpages kctune -q filecache_max -q filecache_min top
Filecache
file cache用于缓存文件数据的最小和最大内存数量由可调的内核参数filecache_min(5)和filecache_max(5)控制。参数filecache_min指定的部分内存专门用于加速文件I/O活动。内存不能用于任何其他目的,即使它不需要缓存文件数据。参数filecache_max指定filecache的最大大小。filecache_max之外的内存空间用于其他目的,例如缓存进程动态数据和内核数据。只要文件缓存小于其最大大小,它就会随着对其他文件数据的访问而增长。一旦达到filecache_max所建立的限制,缓存的文件数据将从内存推入文件系统,为新引用的文件数据腾出空间。
filecache参数在文件I/O活动的加速性能与所有其他内存竞争用途之间进行权衡。参数的默认设置为文件缓存保留大约5%的物理内存,但不允许它增长到超过50%的物理内存。
如果文件缓存内存中有大量数据等待被刷新到非易失性存储(磁盘驱动器或SAN lun),每次达到“ksyncer”间隔时,数据将被移动到实际存储,在I/O子系统上产生间歇性的高写请求。将文件缓存的大小从默认的50%最大值/ 5%最小值减少到更保守的值,不仅可以为系统进程回收内存,减少需要从缓存刷新到非易失性存储的数据的最大总体大小,而且还可以降低在灾难场景(如停电)中由于刷新数据失败而丢失数据的风险。
要确定当前文件缓存的大小,使用”kctune”命令:
# kctune -q filecache_max -q filecache_min
建议 Buffer Cache Limits
The following table can provides a starting point to replace the default values.
Physical Memory Maximum Minimum
<= 4GB 10% 5%
4GB <= 8GB 5% 3%
> 8GB <= 16 GB 3% 2%
32+ GB 2% 1%
因为Oracle数据库服务器已经启用了buffer cache,并不会从OS filecache中收益,将filecache_max的值减小到物理内存的5% ~ 10%。在HP-UX 11i v2和11i v3上不严格要求重新启动系统,因为在这些版本上可以动态修改这些参数。尽管如此,释放已经被VxFS Buffer Cache使用的物理内存可能需要几个小时。
对不起,这篇文章暂时关闭评论。