APP开发Linux系统对于top命令的使用以及他们之间的这关系博纳网络在前面的怎掌中与各位APP开发爱好者进行过详细分析,几天本文主要节前面top命令使用的未完部分继续详解。top命令作为常用性能分析命令,APP开发人员务必要了解输出结果中每项的具体含义。
top命令显示的前5行是统计信息,第一行是基本信息。
第二行是任务信息
深圳APP开发工程师在这里解析下僵尸进程,对于僵尸进程这个概念可能很多APP开发爱好者都不太了解。僵尸进程指的是那些已经终止,但仍然保留些信息的
进程.等待父进程为其调用wait()系统阔用来获取子进程的退出状态和其他的信息(即为其扫尾)。当调用父进程为其调用wait()后,僵尸进程就完全从内存中移除。僵尸进程无法使用kill清理。如果APP开发者需要手动清理僵尸进程,要找到其父进程,把父进程kill掉后Linux的init将接管其子进程Linux中任何一个子进程都必须要有父进程,当父进程被kill后,其所有子进程过继给Linux的init进程,init进程成为僵尸进程的新父进程init进程隔段时间去调用wait()系统调用来清除僵尸进程。
第三行是CPU利用率的统计信息
第四行是内存使用信息
第五行是交换区使用的信息
APP开发需要注意关于第四、第五行的内存和交换区的信息,下面两点需要注意
1.什么是交换区(Swap)
Linux的交换区(Swap):交换区是硬盘上的块空间。在内存不足的情况下.操作系统先把内存中暂时不用的数据存到硬盘的交换区,腾出内存来让别的程序运行。
阿里云服务器上的Linux系统默认是没有设置Swap。由于开启Swap分区会导致硬盘10性能下降,因此阿里云服务器初始状态未配置Swap如果某些应用需要开启Swap分区,也可通过相应的命令开启。
如图4.2所示是UCloud上top命令的截图,由图上可获知UCloud上的Liuux系统是设置了Swap分区,Linux系统在内存不足的情况下会使用Swap分区,这时整个系统的性能急降。如果使用top命令观察到Swap上used值不用为0,那运维人员需要小心了,used值不用为。意味着内存已经不足。这时运维人员先排查有没有不正常使用内存的程序,如果没找到的程序就意味内存已经不足以应对业务的发展,需要升级内存。
APP开发示例图4-2UClouditop命令的截图
2.cached和huffers区别
cached和buffers都是内存中存放的数据,简单来说Ucached足存放从磁盘中读取出的数据.buffers是存放准备写入磷盘的数据cached是Linux把文件从硬盘中读取后在内存中保存的数据,下次要读取这些数据时若在cached命中(找到数据),则不去读硬盘的数据,否则读硬盘的数据。cached中的数据按照读取的频率组织起来,最频繁读取的数据放在最快读取到的地方,把不再读取的数据往后排,直到因为cached空间不足而删除。如果其他应用面临内存不足的情形,Linux会把cached中的文件清理,多腾出给其他应用使用。cached实际缓存的是块而不是文件,块在Liuux中是磁盘I/O操作的最少单位(在Linux中,默认是1KB),这时cached就能保存文件、设备和其他非文件系统的数据。
Linux中的缓存是没有固定大小的,Linux动使用空闲内存作为cached,当内存空间变小时,为了避免内存空间不足而使用Swap,Linux会自动释放部分cached的内存空间。buffers是为磁盘的读写设计的,把分散的磁盘操作集中起来,减少了磁盘寻道的时间和磁盘碎片.从而提高系统性能。在Linux中有个守护进程会定期把buffers中的数据写入到磁盘,也可以通过命令syne手动把buffers数据刷到磁盘中。
cached和buffers都是由操作系统管理,只要Swap分区没有被使用,即使cached和buffers占用了很多内存,运维人员都不需要太担心。运维人员可以使用如下的命令手动清理cached中的数据。
继续返回top命令的讲解,下面这行是进程统计信息区,显示了各个进程的详细信息,如图4.3所示。
APP开发实操示意图4.3进程统计信息区
开发者请注意上面各列的含义如下。
这一栏中常用的列有5个:PID(进程的ID),USER(进程所有者的用户名)%CPU(上次更新到现在的CPU时间占用百分比),%MEM(进程使用的物理内存百分比),COMMAND(命令名/命令行)。注意top命令是有交互操作,例如.在top命令中按下数字“l”,可以显示CPU每个核的使用情况,如图4-4所示的下画线。
APP开发实操示意图4-4显示CPU的核运行情况
在top命令中输入“h”,可看到top命令的详细帮助,如图4-5所示。
APP开发实操示意图4-5top命令的帮助
由于top命令是动态显示全部进程的使用情况,如果只需要观察某个进程的资源使用情况,用如下的命令。
top-p进程id
如图4-6所示是用top命令显示MySQL进程(进程id:7967)的资源使用情况。
APP开发实操示意图4-6用top命令MySOL进程的资源使用情况。好了,深圳APP开发公司对于程序员在开中对于Linux系统中top命令是用的详细操作实例分享本文就写到这里。喜欢本站的朋友请持续关注我们下期关于top命令使用的进程显示实操经验介绍。深圳APP开发博纳网络编辑整理。