热门标签 | 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



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文介绍了Linux系统中的文件IO操作,包括文件描述符、基本文件操作函数以及目录操作。详细解释了各个函数的参数和返回值,并提供了代码示例。 ... [详细]
  • MySQL PMM:MyISAM 和 Aria 存储引擎的性能优化
    本文探讨了 MyISAM 和 Aria 存储引擎在 MySQL 中的关键性能指标,包括密钥缓冲区效率、页面缓存读写性能以及事务日志同步策略。通过优化这些参数,可以显著提升数据库的整体性能。 ... [详细]
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社区 版权所有