Zhang Jiuan’ Notes

vmstat工具

如果您是第一次读我的文章,你可能想订阅到我的 RSS feed. 多谢您的光顾!
vmstat 
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写, 是实时系统监控工具。该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。vmstat反馈的与CPU相关的信息包括:
(1)多少任务在运行
(2)CPU使用的情况
(3)CPU收到多少中断
(4)发生多少上下文切换
下面只介绍 Vmstat与CPU相关的参数
vmstat的语法如下:
  vmstat [delay [count]]
参数的含义如下:
参数 解释
delay 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,vmstat则显示系统启动以后所有信息的平均值。有delay时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个delay时间段的平均信息。当系统有多个CPU时,输出为所有CPU的平均值。
与CPU有关的输出的含义 (采用进一法)
参数 解释 从/proc/stat获得数据
任务的信息
r 在internal时间段里,运行队列里等待CPU的任务(任务)的个数,即不包含vmstat进程 procs_running-1
b 在internal时间段里,被资源阻塞的任务数(I/0,页面调度,等等.) ,通常情况下是接近0的 procs_blocked
CPU信息 所有值取整(四舍五入)
user 在internal时间段里,用户态的CPU时间(%) ,不包含 nice值为负进程 usr/total*100
nice 在internal时间段里,nice值为负进程的CPU时间(%) nice/total*100
sys 在internal时间段里,核心时间(%) (system + irq + softirq)/total*100
iowait 在internal时间段里,硬盘IO等待时间(%) iowait/total*100
idle 在internal时间段里, CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%)idle/total*100
系统信息
intr/interval in 在internal时间段里,每秒发生中断的次数
cs 在internal时间段里,每秒上下文切换的次数,即每秒内核任务交换的次数 ctxt/interval
CODE:
total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
total=total_cur-total_pre
范例1:average mode (粗略信息)
当vmstat不带参数时,对应的输出值是从系统启动以来的平均值,而r和b则对应的是完成这一命令时,系统的值。从下面例子,可以看出系统基本出去闲置状态(idle)。自启动以来,CPU在用户态消耗时间为5%,在核心态消耗为本1%,剩下的为闲置时间。需要指出的是:这里的用户态时间包括nice值为负的进程的时间。
CODE:
[root@server ~]# cat 1.img &
[2] [...]

mpstat使用详解

mpstat使用详解
(2010-07-09 11:01:23)
转载

标签:
杂谈

分类:工作

mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍mpstat与CPU相关的参数,mpstat的语法如下:
mpstat [-P {|ALL}] [internal [count]]
参数的含义如下:
参数 解释
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。
从第二行开始,输出为前一个interval时间段的平均信息。与CPU有关的输出的含义如下:
参数 解释 从/proc/stat获得数据
CPU 处理器ID
user 在internal时间段里,用户态的CPU时间(%),不包含 nice值为负 进程 (usr/total)*100  
nice 在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100  
system 在internal时间段里,核心时间(%)   (system/total)*100
iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
irq 在internal时间段里,硬中断时间(%)      (irq/total)*100
soft 在internal时间段里,软中断时间(%)    (softirq/total)*100
idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)(idle/total)*100
intr/s 在internal时间段里,每秒CPU接收的中断的次数intr/total)*100
CPU总的工作时间=total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。
范例1:average mode (粗略信息)
当mpstat不带参数时,输出为从系统启动以来的平均值。
CODE:
[work@builder linux-2.6.14]$ mpstat
Linux 2.6.9-5.31AXsmp (builder.redflag-linux.com) 12/16/2005
09:38:46 AM CPU %user %nice %system %iowait %irq [...]

write a lighttpd plugin

文章分类:操作系统
lighttpd mod
步骤
1. copy src:
2. modify Makefile.am
3. reconfig
4. lighttpd.conf
reference:
步骤
1. copy src:
 
Bash代码
$ cd src/  
$ cp mod_skeleton.c mod_counter.c  
$ vi mod_counter.c  
:%s/skeleton/counter/g 
$ cd src/
$ cp mod_skeleton.c mod_counter.c
$ vi mod_counter.c
:%s/skeleton/counter/g 
2. modify Makefile.am
and add some lines to the src /Makefile.am to tell the build system about your new plugin:
lib_LTLIBRARIES += mod_counter.la
mod_counter_la_SOURCES = mod_counter.c
mod_counter_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_counter_la_LIBADD = $(common_libadd)
3. reconfig
autoreconf -fi
./configure [...]

TCPDump使用方法小结

在进行网络测试的时候,我们经常需要进行抓包的工作,当然有许多测试工具可以使用,比如sniffer, ethreal等.但最为方便和简单得就非TCPDump莫属. Linux的发行版里基本都包括了这个工具. TCPDump将网络接口设置成混杂模式以便捕获到达的每一个数据包.下面给出TCPDump的部分常用选项:
-i <interface> 指定监听的网络接口
-v 指定详细模式输出详细的报文信息
-vv 指定更详细模式输出更详细的报文信息
-x 指定以16进制数格式显示数据包
-X 规定以ASCII码格式显示输出
-n 规定在捕获过程中不需向DNS查询IP地址
-F <file> 从指定文件中读取表达式
-D 显示可用网络接口
-s <length> 设置捕获数据包的长度
TCPDump的表达式:
  默认情况下TCPDump将捕获所有到达网络的数据包.这并不是我们想要的,因此就必须通过表达式来限制不必要的流量,只输出我们需要监听的数据包.
1. 类型限定词
  类型限定词有: host, port和net. host用来指定主机或目的地址,port指定端口,net可以用来指定某一子网. 如:
tcpdump ‘port 80′ 监听80端口
tcpdump ‘net 192.168.1′ 监听子网192.168.1.0
tcpdump ‘net 192.168.1.0/24′
2. 逻辑运算符
  逻辑运算符有AND,OR和NOT. ()可将多个表达式组合起来.
  tcpdump ‘port 80 and (host 192.168.1.10 or host 192.168.1.11)’
  监听主机192.168.1.10 或 192.168.1.11的80端口.
3. 传输方向限定词
关键词src指定源地址,dst指定目的地址
tcpdump ‘port 80 and (src 192.168.1.10 or src 192.168.1.11)’
tcpdump ‘dst port 25′
4. 协议限定词
  用来捕获特定协议的数据包有: ether(Ethernet), [...]

沁园春《房》

神州大地,
万人蜗居,亿人盼房。
望北京上海,高楼大厦。
售楼中心,房奴滔滔。
祖孙三代,倾尽所有,欲与房价试比高。
须钞票,
清储蓄贷款,分外心焦。
楼价如此虚高,
逼无数白领竞折腰。
昔秦皇汉武,闻所未闻;
唐宗宋祖,紧捏钱包。
一代天骄,成吉思汗,只好蜗居蒙古包。
俱往矣,
数天价楼盘,还看今朝!
If you enjoyed this post, make sure you subscribe to my RSS feed!

GDB Tips

1. 查看寄存器
(gdb) i r
(gdb) i r a                     # 查看所有寄存器(包括浮点、多媒体)
(gdb) i r esp
(gdb) i r pc
2. 查看内存
(gdb) x /wx 0×80040000    # 以16进制显示指定地址处的数据
(gdb) x /8x $esp
(gdb) x /16x $esp+12
(gdb) x /16s 0×86468700   # 以字符串形式显示指定地址处的数据
(gdb) x /24i 0×8048a51      # 以指令形式显示指定地址处的数据(24条)
3. 修改寄存器的值
(gdb) set $v0 = 0×004000000
(gdb) set $epc = 0xbfc00000
4. 修改内存的值
(gdb) set {unsigned [...]

宏中#和##的用法

宏中”#”和”##”的用法
一、一般用法
我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.
用法:
#i nclude
#i nclude
using namespace std;
#define STR(s) #s
#define CONS(a,b) int(a##e##b)
int main()
{
printf(STR(vck)); // 输出字符串”vck”
printf(”%d\n”, CONS(2,3)); // 2e3 输出:2000
return 0;
}
二、当宏参数是另一个宏的时候
需要注意的是凡宏定义里有用’#’或’##’的地方宏参数是不会再展开.
1, 非’#’和’##’的情况
#define TOW (2)
#define MUL(a,b) (a*b)
printf(”%d*%d=%d\n”, [...]

编写Vim 脚本

*41.1* 简介 *vim-script-intro* *script*你最初接触到 Vim 脚本是在 vimrc 文件里。当 Vim 启动时它将读取该文件的内容并执行其中的命令。你可以在其中设置选项。你也可以在其中使用任何冒号命令 (以 “:” 开头的命令;这些命令有时也被称作 Ex 命令或命令行命令)。 语法文件其实也是 Vim 脚本。专为某种文件类型设定选项的文件也是。一个很复杂的宏可以被单独的定义在一个 Vim 脚本文件中。你可以自己想到其它的应用。让我们从一个简单的例子开始: :let i = 1 :while i < 5 : echo “count is” i : let i += 1 :endwhile 备注: 那些 “:” 字符并非必须。只有在你键入命令时才需要,在编写 Vim 脚本时可以 去掉。在这里用一是为了清楚,二是为了区别于普通模式命令。 备注: 你可以拷贝这里的示例文本,然后用 :@” 执行。本例的输出是: count is 1 count is [...]

【母新】天下最亲的人

媳妇说:“煮淡一点你就嫌没有味道,现在煮咸一点你却说咽不下。你究竟怎想怎么样?”
母亲一见儿子回来,二话不说便把饭菜往嘴里送。她怒瞪他一眼。
儿子试了一口,马上吐出来, 儿子说:“我不是说过了吗,妈有病不能吃太咸!”
“那好!妈是你的,以后由你来煮!”媳妇怒气冲冲地回房。
儿子无奈地轻叹一声,然后对母亲说:“妈,别吃了,我去煮个面给?”
“仔,你是不是有话想跟妈说,是就说好了,别憋在心里!”
“妈,公司下个月升我职,我会很忙,至于老婆,她说很想出来工作,所以……”
[...]

三道面试程序设计题

  1、取100之内的20个不重复的随机数
  2、不用字符串截取方式,将“She is a student”变为“student a is She”
  3、13个同学按编号排,从一数到三,报三的同学出列,直到剩下一个同学为止,求最后一个出列的同学是第几好
If you enjoyed this post, make sure you subscribe to my RSS feed!

返回顶部