大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文先介绍了cpu上下文切换的基础知识,以及上下文切换的类型(进程,线程等切换)。然后介绍了如何查看cpu切换次数的工具和指标的解释。同时对日常分析种cpu过高的情况下如何分析和定位的方法做了一定的介绍,使用一个简单的案例进行分析,先用top,pidstat等工具找出占用过高的进程id,然后通过分析到底是用户态cpu过高,还是内核态cpu过高,并用perf 定位到具体的调用函数。(来自极客时间课程学习笔记)
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的伽师网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
1、多任务竞争CPU,cpu变换任务的时候进行CPU上下文切换(context switch)。CPU执行任务有4种方式:进程、线程、或者硬件通过触发信号导致中断的调用。
2、当切换任务的时候,需要记录任务当前的状态和获取下一任务的信息和地址(指针),这就是上下文的内容。因此,上下文是指某一时间点CPU寄存器(CPU register)和程序计数器(PC)的内容, 广义上还包括内存中进程的虚拟地址映射信息.
3、上下文切换的过程:
4、根据任务的执行形式,相应的下上文切换,有进程上下文切换、线程上下文切换、以及中断上下文切换三类。
5、进程和线程的区别:
进程是资源分配和执行的基本单位;线程是任务调度和运行的基本单位。线程没有资源,进程给指针提供虚拟内存、栈、变量等共享资源,而线程可以共享进程的资源。
6、进程上下文切换:是指从一个进程切换到另一个进程。
(1)进程运行态为内核运行态和进程运行态。内核空间态资源包括内核的堆栈、寄存器等;用户空间态资源包括虚拟内存、栈、变量、正文、数据等
(2)系统调用(软中断)在内核态完成的,需要进行2次CPU上下文切换(用户空间--内核空间--用户空间),不涉及用户态资源,也不会切换进程。
(3)进程是由内核来管理和调度的,进程的切换只能发生在内核态。所以,进程的上下文不仅包括了用户空间的资源,也包括内核空间资源。
(4)进程的上下文切换过程:
(5)、下列将会触发进程上下文切换的场景:
7、线程上下文切换:
8、中断上下文切换
快速响应硬件的事件,中断处理会打断进程的正常调度和执行。同一CPU内,硬件中断优先级高于进程。切换过程类似于系统调用的时候,不涉及到用户运行态资源。但大量的中断上下文切换同样可能引发性能问题。
重点关注信息:
系统的就绪队列过长,也就是正在运行和等待 CPU 的进程数过多,导致了大量的上下文切换,而上下文切换又导致了系统 CPU 的占用率升高。
这个结果中有两列内容是我们的重点关注对象。一个是 cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数。
linux的中断使用情况可以从 /proc/interrupts 这个只读文件中读取。/proc 实际上是 Linux 的一个虚拟文件系统,用于内核空间与用户空间之间的通信。/proc/interrupts 就是这种通信机制的一部分,提供了一个只读的中断使用情况。
重调度中断(RES),这个中断类型表示,唤醒空闲状态的 CPU 来调度新的任务运行。这是多处理器系统(SMP)中,调度器用来分散任务到不同 CPU 的机制,通常也被称为处理器间中断(Inter-Processor Interrupts,IPI)。
这个数值其实取决于系统本身的 CPU 性能。如果系统的上下文切换次数比较稳定,那么从数百到一万以内,都应该算是正常的。但当上下文切换次数超过一万次,或者切换次数出现数量级的增长时,就很可能已经出现了性能问题。这时,需要根据上下文切换的类型,再做具体分析。
比方说:
首先通过uptime查看系统负载,然后使用mpstat结合pidstat来初步判断到底是cpu计算量大还是进程争抢过大或者是io过多,接着使用vmstat分析切换次数,以及切换类型,来进一步判断到底是io过多导致问题还是进程争抢激烈导致问题。
CPU 使用率相关的重要指标:
性能分析工具给出的都是间隔一段时间的平均 CPU 使用率,所以要注意间隔时间的设置,特别是用多个工具对比分析时,你一定要保证它们用的是相同的间隔时间。比如,对比一下 top 和 ps 这两个工具报告的 CPU 使用率,默认的结果很可能不一样,因为 top 默认使用 3 秒时间间隔,而 ps 使用的却是进程的整个生命周期。
top 和 ps 是最常用的性能分析工具:
这个输出结果中,第三行 %Cpu 就是系统的 CPU 使用率,top 默认显示的是所有 CPU 的平均值,这个时候你只需要按下数字 1 ,就可以切换到每个 CPU 的使用率了。继续往下看,空白行之后是进程的实时信息,每个进程都有一个 %CPU 列,表示进程的 CPU 使用率。它是用户态和内核态 CPU 使用率的总和,包括进程用户空间使用的 CPU、通过系统调用执行的内核空间 CPU 、以及在就绪队列等待运行的 CPU。在虚拟化环境中,它还包括了运行虚拟机占用的 CPU。
预先安装 stress 和 sysstat 包,如 apt install stress sysstat。
stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。
下面的 pidstat 命令,就间隔 1 秒展示了进程的 5 组 CPU 使用率,
包括:
perf 是 Linux 2.6.31 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。
第一种常见用法是 perf top,类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数,使用界面如下所示:
输出结果中,第一行包含三个数据,分别是采样数(Samples)如2K、事件类型(event)如cpu-clock:pppH和事件总数量(Event count)如:371909314。
第二种常见用法,也就是 perf record 和 perf report。 perf top 虽然实时展示了系统的性能信息,但它的缺点是并不保存数据,也就无法用于离线或者后续的分析。而 perf record 则提供了保存数据的功能,保存后的数据,需要你用 perf report 解析展示。
1.启动docker 运行进程:
2.ab工具测试服务器性能
ab(apache bench)是一个常用的 HTTP 服务性能测试工具,这里用来模拟 Ngnix 的客户端。
3.分析过程
CPU 使用率是最直观和最常用的系统性能指标,在排查性能问题时,通常会关注的第一个指标。所以更要熟悉它的含义,尤其要弄清楚:
这几种不同 CPU 的使用率。比如说:
碰到 CPU 使用率升高的问题,你可以借助 top、pidstat 等工具,确认引发 CPU 性能问题的来源;再使用 perf 等工具,排查出引起性能问题的具体函数.
如何监视Linux系统资源的使用情况
虚拟终端 命令 free
命令
可以用百度搜索
你值得拥有:25 个 Linux 性能监控工具
里面有一些其它的好工具。
命令、uptime、free
参看::wenku.baidu./link?url=kExcj6W2dhzD6d4UzUW1td4NoIyghYMp3IHo2D8-kNIl0RzwFlR6kahsL6peg8mNWZ6pLaLSwKsaU5PB96MPAoBVu7L_YXSztvNvIykFJ_C
Linux操作系统也会有闹脾气的时候。在某些情况下,其系统的资源使用率(包括CPU或者内存),也会达到90%以上甚至更多。为此系统管理员在必要的时候,仍然需要监视系统资源的使
虽然说Linux操作系统要比Windows操作系统稳定的多。但是这个稳定是相对而言的。也就是说,Linux操作系统也会有闹脾气的时候。在某些情况下,其系统的资源使用率(包括CPU或者内存),也会达到90%以上甚至更多。为此系统管理员在必要的时候,仍然需要监视系统资源的使用情况。笔者今天就给大家介绍一下,在Linux操作系统下如何监视这个系统资源,做到心中有数。
在Windows操作系统中,可以通过任务管理器来查询各个进程所占用的CPU与内存的比率。在Linux操作系统中没有这种图形化的管理。在命令行模式下,键入命令,即可以看到各个进程所占用的系统资源。
ppp作为一个合格的系统管理员,出于系统性能优化或者其他方面的考虑,往往需要掌握系统中最消耗CPU或者内存资源的程序。为了达到这个目的,系统管理员就需要借助系统提供的命令。这个命令可以帮助管理员监控系统资源的使用情况,包括内存、CPU、交换文件分区的使用率等等。就是这个命令的执行结果。系统管理员想要提升操作系统的性能,第一步就是需要读懂上面这张表格。如果这种图中的内容系统管理员无法看懂,那么他就想提升系统的性能根本无法入手。
Top命令的运行结果大致可以分为两个部分。上半部是使一些统计的信息,包括内存和交换分区的使用情况、CPU的运行情况、进程的总数等等。在这些统计信息中,系统管理员除了要关注这些重要资源的使用滤外,还需要注意进程运行的状态。可见在Linux系统中进程的状态主要有四种,分别为running、sleeping、sped和zombie。如果从系统维护与性能优化考虑,则系统管理员需要关注那些状态为zombie的进程。若进程处于这个状态,在Linux操作系统中叫做僵尸进程。什么叫做僵尸进程呢?就是那些父进程还没死、但是子进程却死了的进程。在Linux操作系统中,进程一般分为父进程和子进程。某个进程A可能会调用另外一个进程B。此时这个进程A就叫做父进程,而进程B就叫做子进程。由于一些意外的情况,子进程运行已经停止,但是父进程却还不知道子进程早已停止运行,还在那边傻傻的等待着子进程返回运行结果。由于子进程没有返回结果,则父进程可能一直会在那边等待。从而导致系统性能的下降。如果系统管理员发现有僵尸进程的话,首先要做的就是结束父进程(有时候还需要查看这个父进程打开的其他子进程运行情况),以释放其占用的系统资源。其次如果这种情况发生的比较频繁时,则系统管理员就需要分析到底是什么原因导致这种情况发生的。找到原因后要采取积极的措施。通常情况下,如果子进程的状态为僵尸时,父进程就不会自动结束,从而其占用的系统资源就不会自动释放,从而降低操作系统的性能。
二、Top命令的使用技巧。
1、 选择合适的排序顺序。
在Windows操作系统的任务管理器中,管理员可以根据需要选择合适的排序顺序,如按CPU排序或者按内存的使用率进行排序。而在命令的显示结果中,默认情况下是按照CPU的使用率来进行排序的。如果现在系统管理员想按照内存使用率来排序,该如何处理呢?如果要想改变命令结果的排序顺序,则可以按m键来按内存进行排序。注意这里的m是小写,而不是大写的。在Linux操作系统中大部分命令与参数大小写都是敏感的。这跟微软操作系统中的DOS命令不同。Dos命令是不区分大小写的。虽然这个排序没有像微软操作系统中的任务管理器那么方便,只需要点点鼠标就可以完成排序。但是只要熟悉相关的命令,在命令行中对其排序没有大家想想的那么困难。
2、 监视特定用户使用的资源情况。
在Windows操作系统中,如果想要查看特定帐户所打开的进程以及所耗用的系统资源,操作非常简单。只需要打开系统任务管理器,然后按照用户来进行排序。就可以知道某个用户开启了哪些进程以及所占用的比例。而在命令中,没有按帐户进行排序的功能。即在上面这个显示结果中,只可以按照内存使用率或者CPU负载来进行排序,而无法按照用户来进行排序。在同一个结果中夹杂着系统特权用户root与普通用户所打开的进程。这对于系统管理员查找问题原因非常的不方便。有时候系统管理员往往需要只查看特定用户的进程,如只需要查看oracle帐户所打开的进程以及所占用的系统资源。而忽略掉系统帐户。因为特权帐户其他用户无权进行登陆操作,而其运行的往往是一些系统级别的进程,为此一般不会出现问题。而普通用户可以运行一些应用程序。有时候他们糊里糊涂可能会打开一些非法程序,占用大量的系统资源,从而降低系统性能。废话少说,如何才能够查看特定帐户所启动的进程呢?其实很简单。现运行 命令,让系统统计所有帐户的进程。然后在需要查看特定帐户的进程使,只需要按u键(注意小写),然后输入用户名即可。此时系统会自动把其他帐户的进程过滤掉,方便系统管理员查看。按用户过滤后,仍然可以按m键来对现实的结果进行过滤。如果在一开始就需要查看某个特定用户的进程,那么只需要直接在 命令后面加入-u可选项然后带上具体的用户名即可。但是,此时如果再想查看全部用户的话,那么只有先推出命令,然后再利用命令不带任何选项,来查看所有用户的进程。或者说,再在这个窗口中输入字符u,然后直接按回车键,也可以显示所用用户的进程信息。
3、动态统计信息。
使用命令来统计进程的运行信息,跟微软操作系统的任务管理器一样,都是动态调整的。也就是说,系统会每隔一段时间去统计这个信息,然后动态的显示在窗口中。不需要用户手工去更新相关的信息。而且从上面的图形中可以看出,命令统计的信息要比微软任务管理器统计的信息要多的多。所以对系统管理员来说,具有更大的参考价值。笔者以前也很喜欢采用微软操作系统的任务管理器。而了解了命令后,就对其钟爱有加了。因为其不仅可以完成任务管理器中的所有功能。而且命令中有的信息在微软任务管理器中却无法显示。而这些信息往往对我们维护系统、提升性能具有很大的参考价值。
4、删除有异常的进程。
如果这个窗口中,发现某些进程有异常或者用户执行了规定以外的应用程序,如占用了太多的系统资源或者有僵尸进程的存在,则可以直接在这个窗口中讲其删除。操作的方法很简单,只需要在这个窗口内输入字符p,然后系统会提示系统管理员输入要关闭进程的PID。管理员只需要键入这个值,然后按回车键就可以杀掉不需要的进程。不过在关闭进程的时候,有权限的限制。系统特权帐户root可以关闭所有用户的进程。而普通帐户则只能够删除自己打开的程序,而无法关闭其他用户的进程。如现在系统管理员先以oracle用户登录,发现root帐户下某个进程异常,想要关闭时,系统会提示无法关闭的错误信息。此时管理员必须先终止这个进程,然后利用su命令更改登陆的帐户。然后再关闭这个异常的进程。系统管理员可以同时关闭多个进程。方法很简单,就是同时输入多个需要关闭的进程号。在各个进程号之间需要利用逗号隔开。
在系统维护中是一个很有用的命令。除了可以实现如上的功能外,还可以设置其动态更新的时间间隔等等。不过需要注意的是,在不同版本的 Linux系统中其功能稍有差异,而且其显示的布局与内容也有所不同。为此当系统管理员维护其不怎么熟悉的版本时,有时候需要查看系统的帮助说明。此时只需要在命令后面加上?号就可以获得相关的帮助。这个联机帮助文档根命令一样,都是系统管理员的好帮手。不过可惜的是,现在这些在线帮助文档都是英文的。所以这对系统管理员的英文说明要求比较高。
Linux系统下如何监视系统资源使用率求解答
但是这个稳定是相对而言的。也就是说,Linux操作系统也会有闹脾气的时候。在某些情况下,其系统的资源使用率(包括CPU或者内存),也会达到90%以上甚至更多。为此系统管理员在必要的时候,仍然需要监视系统资源的使
虽然说Linux操作系统要比Windows操作系统稳定的多。但是这个稳定是相对而言的。也就是说,Linux操作系统也会有闹脾气的时候。在某些情况下,其系统的资源使用率(包括CPU或者内存),也会达到90%以上甚至更多。为此系统管理员在必要的时候,仍然需要监视系统资源的使用情况。笔者今天就给大家介绍一下,在Linux操作系统下如何监视这个系统资源,做到心中有数。
在Windows操作系统中,可以通过任务管理器来查询各个进程所占用的CPU与内存的比率。在Linux操作系统中没有这种图形化的管理。在命令行模式下,键入命令,即可以看到各个进程所占用的系统资源。
ppp作为一个合格的系统管理员,出于系统性能优化或者其他方面的考虑,往往需要掌握系统中最消耗CPU或者内存资源的程序。为了达到这个目的,系统管理员就需要借助系统提供的命令。这个命令可以帮助管理员监控系统资源的使用情况,包括内存、CPU、交换文件分区的使用率等等。就是这个命令的执行结果。系统管理员想要提升操作系统的性能,第一步就是需要读懂上面这张表格。如果这种图中的内容系统管理员无法看懂,那么他就想提升系统的性能根本无法入手。
Top命令的运行结果大致可以分为两个部分。上半部是使一些统计的信息,包括内存和交换分区的使用情况、CPU的运行情况、进程的总数等等。在这些统计信息中,系统管理员除了要关注这些重要资源的使用滤外,还需要注意进程运行的状态。可见在Linux系统中进程的状态主要有四种,分别为running、sleeping、sped和zombie。如果从系统维护与性能优化考虑,则系统管理员需要关注那些状态为zombie的进程。若进程处于这个状态,在Linux操作系统中叫做僵尸进程。什么叫做僵尸进程呢?就是那些父进程还没死、但是子进程却死了的进程。在Linux操作系统中,进程一般分为父进程和子进程。某个进程A可能会调用另外一个进程B。此时这个进程A就叫做父进程,而进程B就叫做子进程。由于一些意外的情况,子进程运行已经停止,但是父进程却还不知道子进程早已停止运行,还在那边傻傻的等待着子进程返回运行结果。由于子进程没有返回结果,则父进程可能一直会在那边等待。从而导致系统性能的下降。如果系统管理员发现有僵尸进程的话,首先要做的就是结束父进程(有时候还需要查看这个父进程打开的其他子进程运行情况),以释放其占用的系统资源。其次如果这种情况发生的比较频繁时,则系统管理员就需要分析到底是什么原因导致这种情况发生的。找到原因后要采取积极的措施。通常情况下,如果子进程的状态为僵尸时,父进程就不会自动结束,从而其占用的系统资源就不会自动释放,从而降低操作系统的性能。
二、Top命令的使用技巧。
1、 选择合适的排序顺序。
在Windows操作系统的任务管理器中,管理员可以根据需要选择合适的排序顺序,如按CPU排序或者按内存的使用率进行排序。而在命令的显示结果中,默认情况下是按照CPU的使用率来进行排序的。如果现在系统管理员想按照内存使用率来排序,该如何处理呢?如果要想改变命令结果的排序顺序,则可以按m键来按内存进行排序。注意这里的m是小写,而不是大写的。在Linux操作系统中大部分命令与参数大小写都是敏感的。这跟微软操作系统中的DOS命令不同。Dos命令是不区分大小写的。虽然这个排序没有像微软操作系统中的任务管理器那么方便,只需要点点鼠标就可以完成排序。但是只要熟悉相关的命令,在命令行中对其排序没有大家想想的那么困难。
2、 监视特定用户使用的资源情况。
在Windows操作系统中,如果想要查看特定帐户所打开的进程以及所耗用的系统资源,操作非常简单。只需要打开系统任务管理器,然后按照用户来进行排序。就可以知道某个用户开启了哪些进程以及所占用的比例。而在命令中,没有按帐户进行排序的功能。即在上面这个显示结果中,只可以按照内存使用率或者CPU负载来进行排序,而无法按照用户来进行排序。在同一个结果中夹杂着系统特权用户root与普通用户所打开的进程。这对于系统管理员查找问题原因非常的不方便。有时候系统管理员往往需要只查看特定用户的进程,如只需要查看oracle帐户所打开的进程以及所占用的系统资源。而忽略掉系统帐户。因为特权帐户其他用户无权进行登陆操作,而其运行的往往是一些系统级别的进程,为此一般不会出现问题。而普通用户可以运行一些应用程序。有时候他们糊里糊涂可能会打开一些非法程序,占用大量的系统资源,从而降低系统性能。废话少说,如何才能够查看特定帐户所启动的进程呢?其实很简单。现运行 命令,让系统统计所有帐户的进程。然后在需要查看特定帐户的进程使,只需要按u键(注意小写),然后输入用户名即可。此时系统会自动把其他帐户的进程过滤掉,方便系统管理员查看。按用户过滤后,仍然可以按m键来对现实的结果进行过滤。如果在一开始就需要查看某个特定用户的进程,那么只需要直接在 命令后面加入-u可选项然后带上具体的用户名即可。但是,此时如果再想查看全部用户的话,那么只有先推出命令,然后再利用命令不带任何选项,来查看所有用户的进程。或者说,再在这个窗口中输入字符u,然后直接按回车键,也可以显示所用用户的进程信息。
3、动态统计信息。
使用命令来统计进程的运行信息,跟微软操作系统的任务管理器一样,都是动态调整的。也就是说,系统会每隔一段时间去统计这个信息,然后动态的显示在窗口中。不需要用户手工去更新相关的信息。而且从上面的图形中可以看出,命令统计的信息要比微软任务管理器统计的信息要多的多。所以对系统管理员来说,具有更大的参考价值。笔者以前也很喜欢采用微软操作系统的任务管理器。而了解了命令后,就对其钟爱有加了。因为其不仅可以完成任务管理器中的所有功能。而且命令中有的信息在微软任务管理器中却无法显示。而这些信息往往对我们维护系统、提升性能具有很大的参考价值。
4、删除有异常的进程。
如果这个窗口中,发现某些进程有异常或者用户执行了规定以外的应用程序,如占用了太多的系统资源或者有僵尸进程的存在,则可以直接在这个窗口中讲其删除。操作的方法很简单,只需要在这个窗口内输入字符p,然后系统会提示系统管理员输入要关闭进程的PID。管理员只需要键入这个值,然后按回车键就可以杀掉不需要的进程。不过在关闭进程的时候,有权限的限制。系统特权帐户root可以关闭所有用户的进程。而普通帐户则只能够删除自己打开的程序,而无法关闭其他用户的进程。如现在系统管理员先以oracle用户登录,发现root帐户下某个进程异常,想要关闭时,系统会提示无法关闭的错误信息。此时管理员必须先终止这个进程,然后利用su命令更改登陆的帐户。然后再关闭这个异常的进程。系统管理员可以同时关闭多个进程。方法很简单,就是同时输入多个需要关闭的进程号。在各个进程号之间需要利用逗号隔开。
在系统维护中是一个很有用的命令。除了可以实现如上的功能外,还可以设置其动态更新的时间间隔等等。不过需要注意的是,在不同版本的 Linux系统中其功能稍有差异,而且其显示的布局与内容也有所不同。为此当系统管理员维护其不怎么熟悉的版本时,有时候需要查看系统的帮助说明。此时只需要在命令后面加上?号就可以获得相关的帮助。这个联机帮助文档根命令一样,都是系统管理员的好帮手。不过可惜的是,现在这些在线帮助文档都是英文的。所以这对系统管理员的英文说明要求比较高。
我想监视linux系统的内存使用情况,在linux下有哪
[root@iZ259r7h4pfZ ~]#
- 16:48:24 up 226 days, 8:34, 1 user, load average: 0.00, 0.00, 0.01
Tasks: 204 total, 1 running, 164 sleeping, 0 sped, 39 zombie
Cpu(s): 0.9%us, 0.9%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1920740k total, 1123552k used, 797188k free, 24216k buffers
Swap: 0k total, 0k used, 0k free, 87436k cached
[root@iZ259r7h4pfZ ~]# free -m
total used free shared buffers cached
Mem: 1875 1097 778 0 23 85
-/+ buffers/cache: 988 887
Swap: 0 0 0
也可以用watch监控
[root@iZ259r7h4pfZ ~]# watch -n 1 "free -m"
Every 1.0s: free -m Tue Oct 31 16:48:44 2017
total used free shared buffers cached
Mem: 1875 1098 777 0 23 85
-/+ buffers/cache: 989 886
Swap: 0 0 0
LoadRunner如何监控Linux系统资源
这个需要配置吧
:blogs./yangxia-test/archive/2012/11/27/2790771.
怎样使用loadrunner监控linux系统资源
LR只是模拟客户端和服务器进行交互,并不能直观的收集服务器是内部的信息,如果要监控服务器性能情况,linux系统可以用nmon(或者用命令不过,只能监控内存之类的情况,写一个shell脚本定时输出日志到本地就可以了),oracle可以用awr。
如何查看linux资源使用情况
Linux查看系统资源占用
在系统维护的过程中,随时可能有需要查看 CPU和内存的使用率,并根据相应信息分析系统状况的需求。本文介绍一下几种常见的Linux系统资源查看命令。
1、总体内存占用的查看
命令:free
图1 free命令查看内存占用
(1) free命令默认是以kb为单位显示的,可以用free -m 用Mb单位来显示。
(2) Mem行 : total = used + free 其中buffers和cached虽然计算在used内, 但其实为可用内存。
(3) Mem下一行:used为真实已占内存,free为真实可用内存。
(4)Swap:内存交换区的使用情况。
2、查看内存占用前五的进程
命令:ps auxw | head -1;ps auxw|sort -rn -k4|head -5
图 2.1查看内存占用前5的进程
如图2.1所示, 内存的单位是kb,VSZ是虚拟内存的占用,RSS是真实的内存的占用。
命令分解:
ps auxw显示系统资源占用情况;
head -1表示显示第一列,即标题列;
sort -r 表示反向排序,-n表示按数字排序,-k4表示列的第4个字符。
3、查看CPU占用前三的进程
命令:ps auxw|head -1;ps auxw|sort -rn -k3|head -3
图3.1 查看cpu占用前三的进程
该命令与图2.1相仿,只是选择的资源占用情况的第3列(即cpu),用“-k3”表示。
4、查看系统整体的负载
命令:
图4.1 显示系统整体负载
(1)第一行: 系统时间 + 系统运行时间 + 几个用户 + 1/5/15分钟系统平均负载
(2)第二行:进程总数(total) + 正在运行进程数(running) + 睡眠进程数(sleeping) + 停止的进程数(sped)+ 僵尸进程数(zombie)
(3)第三行:用户空间CPU占比(us) + 内核空间CPU占比(sy)+ CPU空置率(id)
图4.2 各个任务占用资源情况
注解:
PID :进程ID
USER :用户名
PR :优先级
NI :负值表示高优先级,正值表示低优先级。
VIRT :虚拟内存
RES : 真实内存
SHR :共享内存
S :进程状态 D=不可中断的睡眠状态; R=运行; S=睡眠 ;T=跟踪/停止; Z=僵尸进程
参数:
-d 2 :每隔2秒显式所有进程的资源占用情况
-c :每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
-p 12345 -p 6789:每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
-d 2 -c -p 123456 :每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
如何使用vmstat命令监视 CPU 的使用情况
假设一个线程被调度运行,它将一直运行直到它的时间片用完、直到被抢先或直到它自己主动放弃 CPU 控制权。
当另一个线程被赋予 CPU 控制权时,必须保存前一个线程的上下文或工作环境,并载入当前线程的上下文。操作系统有一个很有效的上下文切换过程,所以每次切换并不耗费资源。
任何上下文切换的显著增加,如当 cs 比磁盘 I/O 和网络包速率高的多,都应进行进一步调查。
top,free,cat /proc/meminfo,cat /proc/cpuinfo。
[root@centerlisdb proc]# dmidecode |grep -A16 "Memory Device" | more [object Object]。
查看内存使用情况:cat /proc/meminfo,查看CPU使用情况:cat /proc/cpuinfo。
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。
运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:$ top -u oracle。
扩展资料:
一、查看内存占用:
1、free
# free -m。
以MB为单位显示内存使用情况。
# free -h。
以GB为单位显示内存使用情况。
# free -t。
以总和的形式查询内存的使用信息。
# free -s 5。
周期性的查询内存使用信息。
每5秒执行一次命令。
二、查看CPU使用情况:
1、top。
top后键入P看一下谁占用最大。
# top -d 5。
周期性的查询CPU使用信息。
每5秒刷新一次。
2、ps auxw(查看本机的进程所占cpu和mem的百分比情况)。
使用"ps auxw" 可以查看到本机的进程所占cpu和mem的百分比情况。
# ps auxw | head -1
%CPU 进程的cpu占用率。
%MEM 进程的内存占用率。
3、查看本机所有进程的CPU占比之和。
# cat cpu_per.sh
三、查看cpu信息(信息记录在/proc/cpuinfo中)
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数。
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数。
除了保证程序的正确性以外,在项目开发中往往还关心性能和稳定性。我们往往要对内核、应用程序或整个系统进行性能优化。在性能优化中常用的手段如下:
使用top、vmstat、iostat、sysctl等常用工具
top命令用于显示处理器的活动状况。在缺省情况下,显示占用CPU最多的任务,并且每隔5s做一次刷新;vmstat命令用于报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息;iostat命令用于分析各个磁盘的传输闲忙状况;netstat是用来检测网络信息的工具; sar用于收集、报告或者保存系统活动信息,其中,sar用于显示数据,sar1和sar2用于收集和保存数据
sysctl是一个可用于改变正在运行中的Linux系统的接口。用sysctl 可以读取几白个以上的系统变量,如用sysctl—a可读取所有变量。
sysctl的实现原理是:所有的内核参数在/proc/sys中形成一个树状结构,sysctl系统调用的内核函数是sys_sysctl,匹配项目后,最后的读写在do_sysctl_strategy中完成。
2.使用高级分析手段,如OProfile、gprof
OProfile可以帮助用户识别诸如模块的占用时间、循环的展开、高速缓存的使用率低、低效的类型转换和冗余操作、错误预测转移等问题。它收集有关处理器事件的信息,其中包括TLB的故障、停机、存储器访问以及缓存命中和未命中的指令的攫取数量。OProfile支持两种采样方式:基于事件的采样(Event Based)和基于时间的采样(Time Based)。基于事件的采样是OProfile只记录特定事件(比如L2缓存未命中)的发生次数,当达到用户设定的定值时Oprofile就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(Performace Counter))。基于时间的采样是OProfile借助OS时钟中断的机制,在每个时钟中断,OProfile都会记录一次(采一次样)。引入它的目的在于,提供对没有性能计数器的CPU的支持,其精度相对于基于事件的采样要低,因为要借助OS时钟中断的支持,对于禁用中断的代码,OProfile不能对其进行分析。