如何监视Linux系统资源的使用情况

如何监视Linux系统资源的使用情况,第1张

如何监视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 -1ps 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 -1ps 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 和网络包速率高的多,都应进行进一步调查。

你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新。

为了使用这个工具,你首先需要安装 sysstat:

# yum update &&yum install sysstat [基于 CentOS 的系统]

# aptitutde update &&aptitude install sysstat [基于 Ubuntu 的系统]

# zypper update &&zypper install sysstat[基于 openSUSE 的系统]

你可以在 Linux 中学习 Sysstat 和其中的工具 mpstat、pidstat、iostat 和 sar,了解更多和 sysstat 和其中的工具相关的信息。

安装完 mpstat 之后,就可以使用它生成处理器统计信息的报告。

你可以使用下面的命令每隔 2 秒显示所有 CPU(用-P ALL 表示)的 CPU 利用率(-u),共显示3次。

# mpstat -P ALL -u 2 3

示例输出:

Linux 3.19.0-32-generic (tecmint.com) Wednesday 30 March 2016 _x86_64_(4 CPU)

11:41:07 IST CPU%usr %nice%sys %iowait%irq %soft %steal %guest %gnice %idle

11:41:09 IST all5.850.001.120.120.000.000.000.000.00 92.91

11:41:09 IST04.480.001.000.000.000.000.000.000.00 94.53

11:41:09 IST12.500.000.500.000.000.000.000.000.00 97.00

11:41:09 IST26.440.000.990.000.000.000.000.000.00 92.57

11:41:09 IST3 10.450.001.990.000.000.000.000.000.00 87.56

11:41:09 IST CPU%usr %nice%sys %iowait%irq %soft %steal %guest %gnice %idle

11:41:11 IST all 11.600.121.120.500.000.000.000.000.00 86.66

11:41:11 IST0 10.500.001.000.000.000.000.000.000.00 88.50

11:41:11 IST1 14.360.001.492.480.000.000.000.000.00 81.68

11:41:11 IST22.000.501.000.000.000.000.000.000.00 96.50

11:41:11 IST3 19.400.001.000.000.000.000.000.000.00 79.60

11:41:11 IST CPU%usr %nice%sys %iowait%irq %soft %steal %guest %gnice %idle

11:41:13 IST all5.690.001.240.000.000.000.000.000.00 93.07

11:41:13 IST02.970.001.490.000.000.000.000.000.00 95.54

11:41:13 IST1 10.780.001.470.000.000.000.000.000.00 87.75

11:41:13 IST22.000.001.000.000.000.000.000.000.00 97.00

11:41:13 IST36.930.000.500.000.000.000.000.000.00 92.57

Average: CPU%usr %nice%sys %iowait%irq %soft %steal %guest %gnice %idle

Average: all7.710.041.160.210.000.000.000.000.00 90.89

Average: 05.970.001.160.000.000.000.000.000.00 92.87

Average: 19.240.001.160.830.000.000.000.000.00 88.78

Average: 23.490.171.000.000.000.000.000.000.00 95.35

Average: 3 12.250.001.160.000.000.000.000.000.00 86.59

要查看指定的 CPU(在下面的例子中是 CPU 0),可以使用:

# mpstat -P 0 -u 2 3

示例输出:

Linux 3.19.0-32-generic (tecmint.com) Wednesday 30 March 2016 _x86_64_(4 CPU)

11:42:08 IST CPU%usr %nice%sys %iowait%irq %soft %steal %guest %gnice %idle

11:42:10 IST03.000.000.500.000.000.000.000.000.00 96.50

11:42:12 IST04.080.000.002.550.000.000.000.000.00 93.37

11:42:14 IST09.740.000.510.000.000.000.000.000.00 89.74

Average: 05.580.000.340.850.000.000.000.000.00 93.23

上面命令的输出包括这些列:

CPU: 整数表示的处理器号或者 all 表示所有处理器的平均值。

%usr: 运行在用户级别的应用的 CPU 利用率百分数。

%nice: 和 %usr相同,但有 nice 优先级。

%sys: 执行内核应用的 CPU 利用率百分比。这不包括用于处理中断或者硬件请求的时间。

%iowait: 指定(或所有)CPU 的空闲时间百分比,这表示当前 CPU 处于 I/O *** 作密集的状态。

%irq: 用于处理硬件中断的时间所占百分比。

%soft: 和%irq相同,但是是软中断。

%steal: 虚拟机非自主等待(时间片窃取)所占时间的百分比,即当虚拟机在竞争 CPU 时所从虚拟机管理程序那里“赢得”的时间。应该保持这个值尽可能小。如果这个值很大,意味着虚拟机正在或者将要停止运转。

%guest: 运行虚拟处理器所用的时间百分比。

%idle: CPU 没有运行任何任务所占时间的百分比。如果你观察到这个值很小,意味着系统负载很重。在这种情况下,你需要查看详细的进程列表、以及下面将要讨论的内容来确定这是什么原因导致的。

运行下面的命令使处理器处于极高负载,然后在另一个终端执行 mpstat 命令:

# dd if=/dev/zero of=test.iso bs=1G count=1

# mpstat -u -P 0 2 3

# ping -f localhost # Interrupt with Ctrl + C after mpstat below completes

# mpstat -u -P 0 2 3

最后,和 “正常” 情况下 mpstat 的输出作比较:

正如你在上面图示中看到的,在前面两个例子中,根据%idle的值可以判断 CPU 0 负载很高。

在下一部分,我们会讨论如何识别资源饥饿型进程,如何获取更多和它们相关的信息,以及如何采取恰当的措施。

Linux 进程报告

我们可以使用有名的ps命令,用-eo选项(根据用户定义格式选中所有进程) 和--sort选项(指定自定义排序顺序)按照 CPU 使用率排序列出进程,例如:

# ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu

上面的命令只会显示PID、PPID、和进程相关的命令、 CPU 使用率以及 RAM 使用率,并按照 CPU 使用率降序排序。创建 .iso 文件的时候运行上面的命令,下面是输出的前面几行:

一旦我们找到了感兴趣的进程(例如PID=2822的进程),我们就可以进入/proc/PID(本例中是/proc/2822) 列出目录内容。

这个目录就是进程运行的时候保存多个关于该进程详细信息的文件和子目录的目录。

例如:

/proc/2822/io:包括该进程的 IO 统计信息(IO *** 作时的读写字符数)。

/proc/2822/attr/current:显示了进程当前的 SELinux 安全属性。

/proc/2822/cgroup:如果启用了 CONFIGCGROUPS 内核设置选项,这会显示该进程所属的控制组(简称cgroups),你可以使用下面命令验证是否启用了 CONFIGCGROUPS:

# cat /boot/config-$(uname -r) | grep -i cgroups

如果启用了该选项,你应该看到:

CONFIG_CGROUPS=y

根据红帽企业版 Linux 7 资源管理指南第一到四章的内容、openSUSE 系统分析和调优指南第九章、Ubuntu 14.04 服务器文档Control Groups 章节,你可以使用cgroups管理每个进程允许使用的资源数目。

/proc/2822/fd这个目录包含每个打开的描述进程的文件的符号链接。下面的截图显示了 tty1(第一个终端) 中创建 .iso 镜像进程的相关信息:

上面的截图显示 stdin(文件描述符 0)、stdout(文件描述符 1)、stderr(文件描述符 2) 相应地被映射到 /dev/zero、 /root/test.iso 和 /dev/tty1。

在 Linux 中为每个用户设置资源限制

如果你不够小心、让任意用户使用不受限制的进程数,最终你可能会遇到意外的系统关机或者由于系统进入不可用的状态而被锁住。为了防止这种情况发生,你应该为用户可以启动的进程数目设置上限。

你可以在 /etc/security/limits.conf 文件末尾添加下面一行来设置限制:* hard nproc 10

第一个字段可以用来表示一个用户、组或者所有人(*), 第二个字段强制限制可以使用的进程数目(nproc) 为 10。退出并重新登录就可以使设置生效。

然后,让我们来看看非 root 用户(合法用户或非法用户) 试图引起 shell fork 炸d时会发生什么。如果我们没有设置限制, shell fork 炸d会无限制地启动函数的两个实例,然后无限循环地复制任意一个实例。最终导致你的系统卡死。

但是,如果使用了上面的限制,fort 炸d就不会成功,但用户仍然会被锁在外面直到系统管理员杀死相关的进程。

提示:limits.conf文件中可以查看其它 ulimit 可以更改的限制。

其它 Linux 进程管理工具

除了上面讨论的工具, 一个系统管理员还可能需要:

a) 通过使用 renice 调整执行优先级(系统资源的使用)。这意味着内核会根据分配的优先级(众所周知的 “niceness”,它是一个范围从-20到19的整数)给进程分配更多或更少的系统资源。

这个值越小,执行优先级越高。普通用户(而非 root)只能调高他们所有的进程的 niceness 值(意味着更低的优先级),而 root 用户可以调高或调低任何进程的 niceness 值。

renice 命令的基本语法如下:

# renice [-n] <new priority><UID, GID, PGID, or empty>identifier

如果 new priority 后面的参数没有(为空),默认就是 PID。在这种情况下,PID=identifier 的进程的 niceness 值会被设置为<new priority>

b) 需要的时候中断一个进程的正常执行。这也就是通常所说的“杀死”进程。实质上,这意味着给进程发送一个信号使它恰当地结束运行并以有序的方式释放任何占用的资源。

按照下面的方式使用 kill 命令杀死进程:

# kill PID

另外,你也可以使用pkill结束指定用户(-u)、指定组(-G), 甚至有共同的父进程 ID (-P)的所有进程。这些选项后面可以使用数字或者名称表示的标识符。

# pkill [options] identifier

例如:

杀死组GID=1000的所有进程.

# pkill -G 1000

杀死PPID 是 4993的所有进程.

# pkill -P 4993

在运行pkill之前,先用pgrep测试结果、或者使用-l选项列出进程名称是一个很好的办法。它需要和pkill相同的参数、但是只会返回进程的 PID(而不会有其它 *** 作),而pkill会杀死进程。

# pgrep -l -u gacanepa


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8157034.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存