top:
* A: PID = Process Id
* E: USER = User Name
* H: PR = Priority
* I: NI = Nice value
* O: VIRT = Virtual Image (kb)
* Q: RES = Resident size (kb)
* T: SHR = Shared Mem size (kb)
* W: S = Process Status
* K: %CPU = CPU usage
* N: %MEM = Memory usage (RES)
* M: TIME+ = CPU Time, hundredths
b: PPID = Parent Process Pid
c: RUSER = Real user name
d: UID = User Id
f: GROUP = Group Name
g: TTY = Controlling Tty
j: P = Last used cpu (SMP)
p: SWAP = Swapped size (kb)
l: TIME = CPU Time
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
y: WCHAN = Sleeping in Function
z: Flags = Task Flags <sched.h>
* X: COMMAND = Command name/line
Flags field:
0×00000001 PF_ALIGNWARN
0×00000002 PF_STARTING
0×00000004 PF_EXITING
0×00000040 PF_FORKNOEXEC
0×00000100 PF_SUPERPRIV
0×00000200 PF_DUMPCORE
0×00000400 PF_SIGNALED
0×00000800 PF_MEMALLOC
0×00002000 PF_FREE_PAGES (2.5)
0×00008000 debug flag (2.5)
0×00024000 special threads (2.5)
0×001D0000 special states (2.5)
0×00100000 PF_USEDFPU (thru 2.4)
进程的优先级和nice级别
进程优先级是一个决定进程被CPU执行优先顺序的参数,内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。(nice值越低优先级越高)
进程优先级是无法去手动改变的,只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了,你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然,这意味着其他的一些进程将被分配更少的CPU资源,运行更慢一些。Linux支持nice值的范围是19(低优先级)到-20(高优先级),默认的值是0。如果需要改变一个进程的nice值为负数(高优先级),必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例,
以nice值-5开始程序xyz
#nice –n -5 xyz
改变已经运行的程序的nice值
#renice level pid
将pid为2500的进程的nice值改为10
#renice 10 2500
vmstat:
·process(procs)
r:等待运行时间的进程数量
b:处在不可中断睡眠状态的进程
w:被交换出去但是仍然可以运行的进程,这个值是计算出来的
·memoryswpd:虚拟内存的数量
free:空闲内存的数量
buff:用做缓冲区的内存数量
·swap
si:从硬盘交换来的数量
so:交换到硬盘去的数量
·IO
bi:向一个块设备输出的块数量
bo:从一个块设备接受的块数量
·system
in:每秒发生的中断数量, 包括时钟
cs:每秒发生的context switches的数量
·cpu(整个cpu运行时间的百分比)
us:非内核代码运行的时间(用户时间,包括nice时间)
sy:内核代码运行的时间(系统时间)
id:空闲时间,在Linux 2.5.41之前的内核版本中,这个值包括I/O等待时间;
wa:等待I/O操作的时间,在Linux 2.5.41之前的内核版本中这个值为0
iostat:
%user:user level(应用)的CPU占用率情况
%nice:加入nice优先级的user level的CPU占用率情况
%sys:system level(内核)的CPU占用情况
%idle:空闲的CPU资源情况
Device:块设备名
Tps:设备每秒进行传输的数量(每秒的I/O请求)。多个单独的I/O请求可以被组成一个传输操作,因为一个传输操作可以是不同的容量。
Blk_read/s, Blk_wrtn/s:该设备每秒读写的块的数量。块可能为不同的容量。
Blk_read, Blk_wrtn:自系统启动以来读写的块设备的总量。
块可能为不同的容量。块的大小一般为1024、2048、4048byte。可通过tune2fs或dumpe2fs获得:
# tune2fs -l /dev/hda1|grep ‘Block size’
Block size: 4096
# dumpe2fs -h /dev/hda1|grep ‘Block size’
dumpe2fs 1.35 (28-Feb-2004)
Block size: 4096
相关推荐
vmstat的输出结果分为几个部分:procs、memory、swap、io、system和cpu。其中,procs中的r列指示等待运行的进程数量,若长期大于CPU核心数,则可能CPU资源不足;b列指示阻塞状态的进程数量。memory中的swpd列显示...
在Linux系统中,当遇到性能问题时,通常需要从以下几个方面进行综合分析: 1. **I/O (Input/Output)**:I/O操作是导致系统性能瓶颈的一个常见原因。包括磁盘I/O和网络I/O等。可以通过监控工具如`iostat`、`iotop`等...
- 进程的内存通常被划分为几个不同的部分: - **代码段**:存放程序的机器指令。 - **数据段**:存放程序的全局变量和静态变量。 - **堆**:动态分配的内存区域,由程序员控制。 - **栈**:用于存储局部变量等...
本文将介绍Linux性能调优的几种方法,这些方法涉及内核、系统、网络等多个层面。 首先,Linux性能调优的第一种方法是Disabling daemons(关闭守护进程,简称daemons)。守护进程是Linux系统中运行在后台的一类进程...
文档进一步列举了几个主要的性能监控领域: - **CPU使用**:监测CPU的利用率,确保CPU资源得到合理利用。 - **内存使用**:监控内存的使用情况,避免内存泄漏等问题导致的性能下降。 - **I/O(磁盘)带宽**:监测...
使用上述三个参数基本上就可以完成大多数调试任务了,下面举几个命令行例子: * truss -o ls.truss ls -al:跟踪 ls -al 的运行,将输出信息写到文件/tmp/ls.truss 中 * strace -f -o vim.strace vim:跟踪 vim ...
本文将深入探讨几个核心的Linux性能优化方法,重点关注网络性能和磁盘子系统的优化。 首先,我们来看网络性能调优。在Linux中,网络性能可以通过调整内核参数来提升。TCP协议的参数设置对网络吞吐量和响应时间有很...
**sar源码——Linux性能测试工具** `sar` 是System Activity Reporter的缩写,它是Linux系统中的一个强大性能监控工具,包含在sysstat软件包之中。sysstat-9.0.6是2010年的一个稳定版本,适用于对Linux系统的性能...
CPU的使用情况记录在`/proc/stat`文件中,包括用户态(user)、nice(nice)、系统态(sys)、空闲(idle)和等待I/O完成(iowait)等几项。要计算CPU负载,可以比较两次读取`/proc/stat`文件中相应字段的差值,然后除以CPU...
如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: Manddrake Linux release 9.1(Bamboo) for i586 renrel 2.4.21-0.13mdk on i686 / tty1 localhost login:root ...
- **历史扩展**:通过`.bash_history`文件来记录命令历史。 **5.5 目录栈操作** - **`dirs`**:显示目录栈。 - **`pushd`**:将当前目录压入目录栈,并切换到指定目录。 - **`popd`**:弹出目录栈顶部的目录,并...
本文主要介绍了几种基础工具,用于监控Linux服务器的性能,包括系统负载、进程运行、内存使用、CPU使用、I/O性能以及网络性能。 首先,系统负载的监测是评估服务器性能的关键指标。我们可以使用`uptime`命令来查看...
这篇教程将深入探讨几个常用的Linux命令,这些命令可以帮助我们获取关于系统硬件、软件、网络以及性能等多方面的信息。 1. `uname` 命令: - `uname -a`:显示系统的内核版本、主机名、操作系统类型、硬件架构等...
软件生命周期是指从软件项目的初始构思到软件退役的全过程,通常包括以下几个阶段: 1. **需求分析**:明确用户需求,形成需求规格说明书。 2. **设计**:根据需求文档设计软件架构和详细设计。 3. **编码**:将...
本文主要介绍了几个常用的Linux网络命令,包括FTP、telnet、rlogin、netstat、nslookup和ping。 FTP(File Transfer Protocol)是最常见的文件传输协议,提供了在TCP/IP网络中计算机之间传输文件的功能。用户可以...
本文将对给出的150个常用Linux命令进行分类汇总,并对每类命令中的几个关键命令进行详细解释。 #### 一、线上查询及帮助命令 1. **`man`**: 显示手册页,提供关于命令、配置文件或函数等的详细文档。 2. **`help`**...
HAProxy的安装分为几个步骤。首先需要从网上下载软件源代码,示例中使用的是Fedora项目的链接。接着,使用tar命令解压源代码包,切换到解压后的目录。然后,需要根据服务器的操作系统和架构来编译源代码。在这个过程...