From eb804aca83309d5b8cf6fbcc5f25f1a9a9ae35c7 Mon Sep 17 00:00:00 2001 From: ghfan Date: Thu, 14 Jul 2016 15:45:09 +0800 Subject: [PATCH] fix typoes in system/cpu.md and system/memory.md --- system/cpu.md | 6 +++--- system/memory.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/system/cpu.md b/system/cpu.md index 2fb42f3..528818c 100644 --- a/system/cpu.md +++ b/system/cpu.md @@ -1,7 +1,7 @@ 进程分析之CPU ================= -在[《进程分析之内存》](./system/memory.md)文中,对系统/进程的内存使用情况进行分析了,本文将从cpu使用情况对进程进行分析;在这之前,先针对cpu比较相关几个概念进行介绍 +在[《进程分析之内存》](./memory.md)文中,对系统/进程的内存使用情况进行分析了,本文将从cpu使用情况对进程进行分析;在这之前,先针对cpu比较相关几个概念进行介绍 ## CPU INFO的阅读以及对基本概念的了解; @@ -113,7 +113,7 @@ cpu物理/逻辑信息数据都可以从/proc/cpuinfo中可以获取,下面将 > 方法二:ps -efL > > ps的-f参数解析:does full-format listing. When used with -L, the NLWP (number of threads) and LWP (thread ID) columns will be added. -> -f参数将会完整的显示进程信息,比如PPID(父进程ID),C(CPU使用率)等,如果-L配合,将会线程每个PID的轻量进程数目和每个轻量进程号 +> -f参数将会完整的显示进程信息,比如PPID(父进程ID),C(CPU使用率)等,如果-L配合,将会显示每个PID的轻量进程数目和每个轻量进程号 ps -efL |grep scribed-lighty UID PID PPID LWP C NLWP STIME TTY TIME CMD @@ -138,7 +138,7 @@ cpu物理/逻辑信息数据都可以从/proc/cpuinfo中可以获取,下面将 此时nice%,就是来度量这种因为改变优先级的进程的占用CPU用户态的比例,即0.5k/总的调度时间;而user%为1k/总的调度时间;那么进程A在一次调度过程占用的**用户态时间片**比例为(0.5k+ 1k)/总的调度时间; -nice值为负数,优先级高了,可以多获取nice%的时间片;如果nice值为0或者为正值,进程被调度的优先级降低,此时nice%=0,但是在在总的调度时间不变的情况,优先级高的进程会多占时间皮,那么低优先级进程的user%就会减少;所以**整个系统用于用户态的CPU比例应该是所有进程的user%+nice%** +nice值为负数,优先级高了,可以多获取nice%的时间片;如果nice值为0或者为正值,进程被调度的优先级降低,此时nice%=0,但是在在总的调度时间不变的情况,优先级高的进程会多占时间片,那么低优先级进程的user%就会减少;所以**整个系统用于用户态的CPU比例应该是所有进程的user%+nice%** 进程的nice值是可以被修改的,修改命令分别是nice和renice。 diff --git a/system/memory.md b/system/memory.md index 8e1a2dd..e9f0395 100644 --- a/system/memory.md +++ b/system/memory.md @@ -19,7 +19,7 @@ used内存会被系统用来做哪些调度? 1. 实实在在被进程占用,比如进程申请的栈内存,**被分配并被使用**的堆内存(这里强调一下分配并被使用,通过new/malloc分配的进程内存空间不一定实实在在占用了物理内存,详情见后面的分析),在进程存活并未主动释放的case下,这块内存是无法被系统调度给其他进程使用,即第三行used=12309972部分; 2. 用于写buffer,即上面buffers:96524,对于文件写操作需要经过写buffer的过程再落盘到磁盘上,而buffer这块内存是可以被系统回收并反复被调度的内存; - 3. 用于读cached,即上面的cached:35946452,系统会将一大部分内存用于cache,比如用于文件预读等,与buffer相同,这部分内存可以被系统重复调度给信息的进程; + 3. 用于读cached,即上面的cached:35946452,系统会将一大部分内存用于cache,比如用于文件预读等,与buffer相同,这部分内存可以被系统重复调度给新的进程; 因此,一个系统被调度内存大小=buffers+cached+第三行的物理used;可用于新进程的内存大小=free+buffers+cached;而这个数字即为上面第三行free=37096168;第三行表示当前物理内存被系统物理占用的内存,used=12309972,以及可以被调度的内存大小free;而这里free+used即为total物理内存大小;在日常运维过程中,可以通过free命令的第三行的free部分来快速获取机器物理内存被实际占用情况 @@ -67,7 +67,7 @@ top不仅仅用于内存分析,还用于进程分析,今天只写关于内 SHR=6992共享内存区大小;在linux系统中进程之间是可以做内存共享,比如一些系统级别的so,只需要加载一次,就可以被所有的进程共享,在不涉及大的进程内存共享的应用程序,基本不需要关注这部分内存的大小; -> free,vmstat,top等命令可以获取当前服务器当前swap的大小;swap空间是一部分磁盘空间,相比内存来说,性能要差很多,但是在机器内存不够的情况下,swap是保证系统正常运行的最后一段关卡了;在系统里,是通过一个swappiness的值来控制对swap使用。如果swappiness=0的时候表示最大限度使用物理内存,才物理内存为0的时间才开始使用swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时搬运到swap空间中。linux的基本默认设置为60(/proc/sys/vm/swappiness=60);也就是说,你的内存在使用到100-60=40%的时候,就开始出现有swap的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。 +> free,vmstat,top等命令可以获取当前服务器当前swap的大小;swap空间是一部分磁盘空间,相比内存来说,性能要差很多,但是在机器内存不够的情况下,swap是保证系统正常运行的最后一段关卡了;在系统里,是通过一个swappiness的值来控制对swap使用。如果swappiness=0的时候表示最大限度使用物理内存,在物理内存为0的时间才开始使用swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时搬运到swap空间中。linux的基本默认设置为60(/proc/sys/vm/swappiness=60);也就是说,你的内存在使用到100-60=40%的时候,就开始出现有swap的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。 > > 目前在使用的服务器上基本都是关闭swap,通过人工运维来合理分配每个机器上最大可使用内存,避免swap对服务的性能造成影响; >