首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux实际内存占用率算法,以及使用Python实现内存监控

网上学习了一番,其实这种计算方法不很准确,原因就是Linux内存管理机制和Windows是不相同的,我理解Linux管理内存的特点,其中之一就是充分利用内存,网上这方面的资料,非常容易检索,我就不班门弄斧了...从不同角度,对内存占用率有不同的理解,以下图为例, ? (1) 站在操作系统的角度,buffer和cache的内存是属于分配的内存,因此内存占用率计算方法=used/total*100%。...(2) 使用第方库psutil psutil是一个跨平台的进程管理,首先需要安装,psutil安装之前需要安装python-devel,均需要root用户,我的操作系统是Linux 6.5,Python...Linux下实际我们关注的是,系统可用内存占用率,计算方法为(used-buffers-cached)/total*100%,并不是执行free指令中free显示的部分。 2....内存占用率监控Python实现,可以使用执行free指令来解析输出,若可以使用psutil第方库,则更为简便。

4.5K50
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内存描述之内存区域zone--Linux内存管理()

ISA总线的直接内存存储DMA处理器有一个严格的限制 : 他们只能对RAM的16MB进行寻址 在具有大容量RAM的现代32位计算机中, CPU不能直接访问所有的物理地址, 因为线性地址空间太小, 内核不可能直接映射所有物理内存到线性地址空间...Linux使用enum zone_type来标记内核所支持的所有内存区域 3.1 内存区域类型zone_type zone_type结构定义在include/linux/mmzone.h, 其基本信息如下所示...这样别人也可以借用这段地址空间访问其他物理内存,实现了使用有限的地址空间,访问所有所有物理内存 关于高端内存的内容, 我们后面会专门抽出一章进行讲解 因此, 传统和X86_32位系统中, 16M...每个zone有个水平标准:watermark[WMARK_MIN], watermark[WMARK_LOW], watermark[WMARK_HIGH],帮助确定zone中内存分配使用的压力状态...这样,就有一些内存不能永久地映射在内核空间上。 为了解决这些制约条件,Linux使用了种区: ZONE_DMA : 这个区包含的页用来执行DMA操作。

9K31

Linux之《荒岛余生》(内存

内存问题,脑瓜疼脑瓜疼。脑瓜疼的意思,就是脑袋运算空间太小,撑的疼。本篇是《荒岛余生》系列第篇,让人脑瓜疼的内存篇。...其余参见: Linux之《荒岛余生》(一)准备篇 Linux之《荒岛余生》(二)CPU篇 小公司请求量小,但喜欢滥用内存,开一堆线程,大把大把往jvm塞对象,最终问题是内存溢出。...(#3) jvm # 查看系统级别的故障和问题 dmesg # 统计实例最多的类十位 jmap -histo pid | sort -n -r -k 2 | head -10 # 统计容量十的类 jmap...CPU问题,CPU都间歇性的增高,那是因为Linux内存管理机制引起的。...我们来解释一下上图,第一部分是逻辑内存和物理内存的关系;第二部分是top命令展示的一个结果,详细的列出了每一个进程的内存使用情况;第部分是free命令展示的结果,它的关系比较乱,所以给加上了箭头来作说明

1.2K20

Redis删除数据后,为什么内存占用率还是很高?

而主进程消耗又主要包括自身内存、对象内存、缓冲区内存内存碎片四个方面:自身进程占用内存Redis进程自身所占用的内存,这部分内存通常很小,一个空的Redis进程所消耗的内存几乎可以忽略不计数据对象内存对象占用的内存是...缓冲区Redis主要有大缓冲区:客户端缓冲区、AOF缓冲区、复制缓存区 客户端缓冲区: 为了解决客户端和服务端请求和处理速度不匹配问题(即CPU 与 I/O 设备速度不匹配的矛盾),分为输入和输出缓冲区...有下面种方式可处理 :重启Redis实例重启Redis属于直接当时粗暴的方式,在重启之前要考虑两点:若Redis的数据没有持久化,数据会丢失即使做了持久化,重启需要通过AOF或RDB恢复数据,恢复时间取决于日志的大小...如上图碎片整理过程:清理,C和D之间多了2字节的内存碎片清理过程:将B和D的数据分别拷贝到C和D之间的闲置空间,这样2个字节的闲置空间就形成了连续空间。...朋友,希望本文对你有帮助~欢迎点赞 、收藏 、关注 连支持一下~知道的越多,不知道的也越多,我是小许,下期见~参考:Redis删除数据后,为什么内存占用率还是很高?

419101

Linux磁盘占用率与使用率不符

--记一次磁盘占用率过高问题排查过程与总结...排查过程 第一步,当然是确认磁盘的当前占用率,登陆上机器执行 “df -h” 命令查看挂载盘占用率,果然非常高,已经达到了96% image.png 第二步,确认占用率高的文件夹,排查是哪些文件占用磁盘...第步,搜寻资料,定位问题。根据自己薄弱的运维知识,这超出了我的知识面。谷歌之后发现,这种问题并不离奇是操作系统常见的问题。...第五步,问题处理,面对这样的问题,只有一种处理方式就是重启服务,服务停止后,文件也会被释放,磁盘占用率瞬间下降。...Linux也同理,不过Linux在删除时不会报错,会假装的让你看到以为删除了,但文件被进程依然关联着并在写入,磁盘占用也还在。但通过du -h 扫不出来。

3.2K60

Linux内存描述之高端内存--Linux内存管理(五)

(DMA Zone)、低端内存区(Normal Zone)与高端内存区(Highmem Zone)部分。...1G) 2.3 Linux内核高端内存的理解 面我们解释了高端内存的由来。...Linux将内核地址空间划分为部分ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM,高端内存HIGH_MEM地址空间范围为 0xF8000000 ~ 0xFFFFFFFF(896MB...3 Linux内核高端内存的划分与映射 在32位的系统上, 内核占有从第3GB~第4GB的线性地址空间, 共1GB大小 内核将其中的896MB与物理内存的0~896MB进行直接映射, 即线性映射, 将剩余的...内核通过内核页全局目录来管理所有的物理内存,由于线性地址3G空间为用户使用,内核页全局目录768项(刚好3G)除0、1两项外全部为0,后256项(1G)用来管理所有的物理内存

12.2K22

内存的攻略

看到这张图,你应该知道我是多少需要一根内存条啊 内存条价格在18年,到19年会大降价,因为中国要做半导体了,星的闪存涨价,导致半导体相关的好多东西都涨价了,作为要靠电脑吃饭的人,真是无语。。。。...,期待星无良商家早点倒闭 内存条小常识 准备买内存条,一定要弄清楚内存条相关的参数,比如型号是DDR3,还是ddr4,笔记本内存条的电压是低压1.35v,还是标压1.5v,以及内存条的主频是1600mhz...要确定自己笔记本时候有多余的内存条接口,以及获取主频,在任务管理器,内存中 要知道自己cpu参数,看是否支持ddr4,一般intel6代以后都支持ddr4内存条。...,主板,显卡,内存等 aida64基础教程 在CPU信息中我们可以看到处理器的名称,架构,频率,指令集,级缓存等有关信息,以及CPU的制造工艺和功耗等。...** 参考文章 内存条怎么正确选择 怎样选购笔记本内存条 DDR4内存用什么主板 怎么看主板是否支持DDR4内存 aida64基础教程

3.9K80

Redis删除数据后,为什么内存占用率还是很高?

实际上,这是因为,当数据删除后,Redis 释放的内存空间会由内存分配器管理,并不会立即返回给操作系统。所以,操作系统仍然会记录着给 Redis 分配了大量内存。...但是,这往往会伴随一个潜在的风险点:Redis 释放的内存空间可能并不是连续的,那么,这些不连续的内存空间很有可能处于一种闲置的状态。...Redis内存碎片的形成可以由两方面引起 内因是操作系统的内存分配机制 外因是 Redis 的负载特征 内因:内存分配器的分配策略 内存分配器的分配策略就决定了操作系统无法做到“按需分配”。...这是因为,内存分配器一般是按固定大小来分配内存,而不是完全按照应用程序申请的内存空间大小给程序分配。...这表明内存碎片率已经超过了 50%。一般情况下,这个时候,我们就需要采取一些措施来降低内存碎片率了。 如何清理内存碎片?

1.8K21

Linux - Linux内存管理

要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。...第二行的Mem代表物理内存使用情况。 第行的(−/+ buffers/cache)代表磁盘缓存使用状态。 第四行的Swap表示交换空间内存使用状态。...---- 从应用层的角度来看系统内存的使用状态 从应用层的角度来看,系统内存也就是Linux上运行的应用程序可以使用的内存大小,即free命令第行“(-/+ buffers/cached)”的输出。...-c:建立交换区,先检查是否有损坏的区块。 -v0:建立旧式交换区,此为预设值。 -v1:建立新式交换区。 交换区大小:指定交换区的大小,单位为1024字节。

52.1K41
领券