热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxlowmem使用情况,linux参数之/proc/sys/vm详解

procsysvm该目录下的文件用来优化虚拟内存比较重要的参数如下justin_$uname-aLinuxjustin2.6.32-100.26.2.el5#1SMPTueJan1

/proc/sys/vm

该目录下的文件用来优化虚拟内存

比较重要的参数如下

justin_$ uname -a

Linux justin 2.6.32-100.26.2.el5 #1 SMP Tue Jan 18 20:11:49 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

Swappiness

justin_$ more swappiness

60

--范围从0—100,因为即便有足够空余物理内存,linux也会将部分长期没有用到的页swap,该值越高则linux越倾向于此;

vfs_cache_pressure

默认值100,用于控制回收cache频率,值越小则越倾向于保留cache,0表示从不回收cache容易导致out-of-memory

注:cache用于缓存inode/dentry,而buffer用于缓存data

justin_$ more vfs_cache_pressure

100

stat_interval

VM信息更新频率,默认每1秒更新一次

justin_$ more stat_interval

1

hugetlb_shm_group指定group id,拥有该gid的用户可以使用huge page创建SysV共享内存段;

注:用户可通过2种方式使用huge page

Mmap:使用此API时,如果没有指定MAP_HUGETLB选项,系统必须加载hugetlbfs文件系统到/mnt/huge

SYSV共享内存system call(shmget/shmat):调用此API则需要配置hugetlb_shm_group

如果oracle使用了huge page且通过shm*调用,则将该值设为oracle用户的gid,否则可能会遭遇ORA-27125

ORA-27125: unable to create shared memory segment

Cause: shmget() call failed

Action: contact Oracle support

justin_$ more hugetlb_shm_group

0

nr_hugepages

huge页的最小数目,需要连续的物理内存;oracle使用hugepage可以降低TLB的开销,节约内存和CPU资源,但要同时设置memlock且保证其大于hugepage;其与11gAMM不兼容;

#        - memlock - max locked-in-memory address space (KB)

显然此系统分配了hugepage但没有程序使用

justin_$ more nr_hugepages

5120

justin_$ more /proc/meminfo | grep -i huge

HugePages_Total:    5120

HugePages_Free:     5120

HugePages_Rsvd:        0

HugePages_Surp:        0–当请求的页数超过nr_hugepages时可额外申请的页数,最大值由nv_overcommit_hugepages参数控制

Hugepagesize:       2048

nr_overcommit_hugepages

系统可分配最大huge page数= nr_hugepages + nr_overcommit_hugepages

justin_$ more nr_overcommit_hugepages

0

mmap_min_addr

指定用户进程通过mmap可使用的最小虚拟内存地址,以避免其在低地址空间产生映射导致安全问题;如果非0,则不允许mmap到NULL页,而此功能可在出现NULL指针时调试Kernel;mmap用于将文件映射至内存;

该设置意味着禁止用户进程访问low 4k地址空间

justin_$ more mmap_min_addr

4096

panic_on_oom

用于控制如何处理out-of-memory,可选值包括0/1/2,默认为0

0:当内存不足时内核调用OOM killer杀死一些rogue进程,每个进程描述符都有一个oom_score标示,oom killer会选择oom_score较大的进程

1/2:内存不足时不杀死进程,但具体策略有所差异

justin_$ more panic_on_oom

0

oom_kill_allocating_task

控制如何kill触发OOM的进程,可选值包括0/non-0,受panic_on_oom值影响

0:OOM killer扫描所有的进程寻找oom_score最高的,可通过将其kill释放大量内存

Non-0:kill出发out-of-memory的那个进程,避免进程队列扫描

justin_$ more oom_kill_allocating_task

0

lowmem_reserve_ratio

保留的lowmem,3列分别为DMA/normal/HighMem

justin_$ more  lowmem_reserve_ratio

256     256     32

dirty_background_bytes/ dirty_background_ratio

当内存中脏页达到一定数量或比例时,启用pdflush将其刷新至磁盘,两者只能取其一;

[oracle@usuwsoadb05 vm]$ more dirty_background_bytes

0

[oracle@usuwsoadb05 vm]$ more dirty_background_ratio

10

dirty_bytes/ dirty_ratio

当进程的脏数据达到某个临界点则该进程自动将其刷新至磁盘,dirty_ratio是与整个系统内存相除

justin_$ more dirty_bytes

0

justin_$ more dirty_ratio

20

drop_caches

默认为0,可选值包括1/2/3

1:释放页缓存,即buffer

2:是否inode和dentries缓存,即cache

3:包含1和2

注:由于buffer/cache里的值

justin_$ more drop_caches

0

max_map_count

一个进程最多可用于的内存映射区(memory map areas),在调用malloc会用到,由mmap/mprotect生成

Memory map areas are used as a side-effect of calling malloc, directly by mmap and mprotect, and also when loading shared libraries.

大部分程序使用数量不会超过1000,默认值65536

注:该值若太小某些情况下会导致ora-4030,详情参照ID 1325100.1,

当4030跟踪文件的process map dump记录如下,此时max_map_cout设置为65536导致资源不足,可适当调大

----- Process Map Dump -----

00400000-0954f000 r-xp 00000000 fd:09 3131376 /e00/oracle/prod/v11.2.0/bin/oracle <<

0974e000-0a2be000 rwxp 0914e000 fd:09 3131376 /e00/oracle/prod/v11.2.0/bin/oracle

0a2be000-0a304000 rwxp 0a2be000 00:00 0

0c8c9000-0c950000 rwxp 0c8c9000 00:00 0 [heap]

60000000-60001000 r-xs 00000000 00:13 9374560 /dev/shm/ora_DSSP_11698195_0

60001000-70000000 rwxs 00001000 00:13 9374560 /dev/shm/ora_DSSP_11698195_0

70000000-80000000 rwxs 00000000 00:13 9374561 /dev/shm/ora_DSSP_11698195_1

80000000-90000000 rwxs 00000000 00:13 9374565 /dev/shm/ora_DSSP_11730964_0

90000000-a0000000 rwxs 00000000 00:13 9374566 /dev/shm/ora_DSSP_11730964_1

a0000000-b0000000 rwxs 00000000 00:13 9374569 /dev/shm/ora_DSSP_11763733_0

b00

2aed84a4f000-2aed86e5f000 rwxp febe2000 00:11 29160 /dev/zero

7fffea3ca000-7fffea418000 rwxp 7ffffffb1000 00:00 0 [stack]

ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0 [vdso] <

******************* End of process map dump ***********

justin_$ more max_map_count

65530

nr_pdflush_threads

当前pdfflush线程数量&#xff0c;为read-only&#xff0c;系统会根据脏页数自动调整&#xff0c;1秒增加1个直至nr_pdflush_threads_max&#xff1b;

justin_$ more nr_pdflush_threads

0

overcommit_memory

为一个flag&#xff0c;可选值包括0/1/2&#xff0c;用于控制内存过度分配

0&#xff1a;当用户空间请求更多内存时&#xff0c;内核则评估当前空闲内存量&#xff0c;如果足够则分配

1&#xff1a;内核假定系统中始终有足够的内存直至耗尽为止

2&#xff1a;内核采用”never overcommit”策略&#xff0c;以避免内存被耗尽

有很多程序调用malloc()请求大量内存却很少使用&#xff0c;该参数则十分有用

justin_$ more overcommit_memory

0

overcommit_ratio

该值为物理内存比率&#xff0c;当overcommit_memory&#61;2时&#xff0c;进程可使用的swap空间不可超过PM * overcommit_ratio/100

justin_$ more  overcommit_ratio

50

page-cluster

一次写入swap的内存页数&#61;2的page-cluster次方&#xff0c;若该值为0则一次写入1个页&#xff0c;为1

justin_$ more page-cluster

3



推荐阅读
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • Java 架构:深入理解 JDK 动态代理机制
    代理模式是 Java 中常用的设计模式之一,其核心在于代理类与委托类共享相同的接口。代理类主要用于为委托类提供预处理、过滤、转发及后处理等功能,以增强或改变原有功能的行为。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 利用YAML配置Resilience4J的Circuit Breaker
    本文探讨了Resilience4j作为现代Java应用程序中不可或缺的容错工具,特别介绍了如何通过YAML文件配置Circuit Breaker以提高服务的弹性和稳定性。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • Spring Security核心概念与应用实践
    本文详细介绍了Spring Security的核心机制,包括其作为一系列过滤器的工作原理,如何实现用户认证与授权,以及常见的配置方法和高级特性如CSRF防护。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
author-avatar
情若自已_650
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有