当前位置:首页 > 内存 > 正文

linux增加内存使用率

  • 内存
  • 2024-05-10 19:31:24
  • 5837

一、Centos内存使用与优化技巧
Linux服务器将实际内存和虚拟内存分配给处理器,并通过交换来管理内存使用情况。 了解Linux内存的类型以及进程如何共享内存有助于优化内存使用。
当程序执行过程开始时,要从Linux内核下载内存,需要所有虚拟内存。 Linux中的虚拟内存是无限的,进程启动时可以分配内存。 Linux内核可以通过交换将虚拟内存映射到实际内存。
与内存交换软件可能很慢的Windows不同,Linux支持内存交换,因为Linux分析进程分配内存页面的方式。 Linux内核运行一种新使用的算法来确定哪些内存页需要进入RAM,哪些不需要。 在某些情况下,进行Linux内核交换可以使其在内存上运行得更快。
系统进程通常需要比实际需要更多的虚拟内存。 在Linux的最高开发水平上,虚拟内存要求在VIRT卷和常驻内存(RAA)中得到满足。 当进程开始使用分配的内存页面执行某些操作时,该页面将移动到RAM并显示为RSS。 监视Linux内核内存使用情况允许管理员仅保留那些经常使用的内存页面。 很少使用的访问页面可以与核心隔离或交换。
Linux服务器上的进程使用匿名内存,即与代码和数据关联的文件内存。 匿名内存必须直接可用,以便在内存资源受到限制时,匿名内存页会被包装。
内存数据是另一回事。 当处理器从磁盘读取数据时,会将其保留在内存中,以便处理器下次快速检索数据。 在内存压力下,核心可以将数据储在内存中。 没有性能优势,因为将未使用的文件移动到内存是比交换更好的选择。
当决定是分配还是交换内存时,Linux内核会区分活动内存和非活动内存。 如果最近没有使用过被动内存,那么通过交换或简单地丢弃它来移动它并没有明显的危害。 /proc/meminfo文件显示了匿名内存和文件内存的活动内存和空闲内存之间的差异,如下图1所示。
图1:Linux内核中主动内存和被动内存的区别
[root@IAD~]#minus/proc/meminfo
MemTotal:7971636kB
MemFree:2653648kB
缓冲区:250868kB
缓存:2974052kB
交换缓存:0kB
活动:2530380kB
非活动:2323604kB
活动(匿名):1633532kB
非活动(匿名):125712kB
活动(文件):896848kB
不活动(文件):2197892kB
不可避免:0kB
锁定:0kB
SwapTotal:10059772kB
SwapFree:10059772kB
Shmem:132kB
Slab:0kB
AnonPages:1629052kB
映射:162396kB
Shmem:130192kB
Slab:296332kB
SReclaimable:233344kB
SUnreclaim:62988kB
在此示例中,您需要大量匿名活动内存和少量匿名非活动内存。 如果系统面临内存压力,内核会将125MB匿名内存移至交换区。 对于1.6GB内存,活动页内存不应该很复杂,因为内存页必须在RAM和磁盘之间频繁移动,这会降低性能。 如果包装空间大于惰性(匿名)内存,则需要添加更多RAM来优化Linux内存页面。
对于理想的Linux内存页,使用的交换项总数不应超过惰性(匿名)内存页的数量。 活动内存量等于核心所需的单元内存量。 否则,无法提高服务性能。
当内核需要更多内存时,标记为非活动的内存文件将被丢弃。 由于Linux内核无法更好地处理它,因此内存文件保留在缓存中。 如果数据被丢弃,不会有任何影响。