在系统维护的过程中,随时可能有需要查看
CPU
使用率,并根据相应信息分析系统状况的需要。在
CentOS
中,可以通过
top
命令来查看
CPU
使用状况。运行
top
命令后,CPU
使用状态会以全屏的方式显示,并且会处在对话的模式
--
用基于
top
的命令,可以控制显示方式等等。退出
top
的命令为
q
(在
top
运行中敲
q
键一次)。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$
top
-u
oracle
2.
释义:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
Linux 下的 cgroups ,全称叫 Control Groups ,最初由Google工程师提出并实现,linux从2.6开始将这个特性纳入内核。cgroups主要对进程按组( Group )进行资源配额的控制,包括CPU、内存、IO等,相比古老的 ulimit ,cgroups更为平滑和易用,成为容器技术(比如 docker )的基础。
事实上,使用cgroups是非常简单的,几行shell命令就可以。下面以CPU子系统为例,来尝试控制一个进程的CPU利用率。
首先挂载cgroup文件系统:
上面的命令挂载了一个 cpu 子系统,目录为 /cgroup/mave ,名字叫 mave 。cpu子系统用于控制进程的cpu总体占用率,是最常用的子系统。内核会根据配额的设置在调度进程上做出相应的调整。
观察 /cgroup/mave 目录:
这些文件是自动创建出来的,且都跟cpu这个子系统有关。不同的子系统会创建出不同的文件。我们重点关注:
这个文件里面可以写入一个或多个 taskid (pid), /cgroup/mave 这个组中的配额设置将影响这些task。
表示将cpu时间片分成 100000 份。
表示当前这个组中的task( /cgroup/mave/tasks 中的 taskid )将分配多少比例的cpu时间片。由于是双核cpu,这里就表示最多可以用到 200% 的CPU。
尽管根目录( /cgroup/mave )也可以设置配额,但是习惯上,我们在这个目录下创建一个目录,作为一个 控制组 ,这个控制组可以单独设置配额,而不影响其他 控制组 :
可以看到,创建的 steam 目录下也会自动创建出一堆cpu子系统相关的文件,几乎和根目录( /cgroup/mave )完全一样。现在我们再来理解一下什么是 hierarchy :
hierarchy 就是一个带有继承关系的目录层次,每一层形成一个 控制组 ,单独控制其中的task。
采集器进程在不受限制的情况下全速采集,CPU占用率达到 50% :
将5000写入 cpu.cfs_quota_us ,表示希望CPU占用率控制在(5000/100000=5%)以内:
然后将进程号 30126 写入 tasks :
观察cpu占用率,瞬间降到 4% 。
可以看到,使用cgroups十分简单,效果很好。然而,进程id并不是每次都保持不变。我们需要一些自动化的机制。上文提到过 libcgroup ,这个库提供了挂载、配置和运行的程序和库。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)