![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
Linux操作系统拆解
icepopfh
这个作者很懒,什么都没留下…
展开
-
Linux-CPU分析思路
查看会发现running的进程数比较多。原创 2024-07-07 15:44:20 · 94 阅读 · 0 评论 -
Linux-CPU上下文切换
进程即可以在用户空间运行,又可以在内核空间中运行。进程在用户空间运行时被称为进程的用户态,而通过系统调用在内核空间运行时被称为进程的内核态。从用户态到内核态的转变,需要通过系统调用来完成,比如当我们查看文件内容时,就需要多次系统调用来完成:首先调用open()打开文件,然后调用read()读取文件内容,并调用write()将内容写到标准输出,最后再调用close()关闭文件。需要指出的是,系统调用进程不会涉及进程切换,也不会涉及虚拟内存等系统资源切换。这与我们通常所说的“进程上下文切换”不同。原创 2024-07-07 15:42:20 · 505 阅读 · 0 评论 -
Linux-平均负载
man uptime得到的解释,简单的说,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。可运行状态:正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps -aux 命令看到的,STAT处于 R 状态(Running 或 Runnable)的进程。不可中断状态:正处于内核态关键流程中的进程,并且这些流程是不可打断的。原创 2024-07-07 15:40:16 · 244 阅读 · 0 评论 -
Linux-内存分析思路
buff/cache使用较多通过free -h发现大部分内存都被缓存占用后,可以使用vmstat或者sar观察一下缓存的变化趋势,确认缓存的使用是否还在继续增大。如果继续增大,则说明导致缓存升高的进程还在运行,那你就能用buff/cache分析工具(比如cachetop、slabtop等),分析这些缓存到底被哪里占用。buff/cache使用较少,但内存不足通过free -h发现排除缓存占用后,可以继续用pidstat或者top,定位占用内存最多的进程。找出进程后,再通过进程内存空间工具(比原创 2024-07-07 15:39:37 · 24 阅读 · 0 评论 -
Linux-内存回收
在使用 NUMA 架构的服务器,如果系统出现还有一半内存的时候,却发现系统频繁触发「直接内存回收」,导致了影响了系统性能,那么大概率是因为 zone_reclaim_mode 没有设置为 0 ,导致当本地内存不足的时候,只选择回收本地内存的方式,而不去使用其他 Node 的空闲内存。可以看到,回收内存的操作基本都会发生磁盘 I/O 的,如果回收内存的操作很频繁,意味着磁盘 I/O 次数会很多,这个过程势必会影响系统的性能,整个系统延时会很大。活跃和非活跃的内存页,按照类型的不同,又分别分为文件页和匿名页。原创 2024-07-07 15:36:10 · 376 阅读 · 0 评论 -
Linux-内存管理体系
内存回收首先考虑的是内存规整,也就是内存碎片整理,因为有可能我们不是可用内存不足了,而是内存太分散了,没法分配连续的内存。内存规整之后如果还是分配不到内存的话,就会进行页帧回收。如果页帧回收之后还没有得到足够的物理内存,内核将会使用最后一招,OOM Killer。OOM Killer会按照一定的规则选择一个进程将其杀死,然后其物理内存就被释放了。把进程占用的但是当前并不在使用的物理内存进行回收,并分配给新的进程来使用的过程就叫做换页。分页内存管理(虚拟内存管理)原创 2023-10-06 10:34:56 · 42 阅读 · 1 评论