Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2521199
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-08-21 12:16:07

                          

优化步骤

  1. 确定优化目标
  2. 收集性能数据
  3. 分析,做出假设
  4. 进一步收集数据证明或否定假设
  5. 调整系统

硬件性能

  • CPU
    • /proc/cpuinfo
    • bit: uname -m
    • 个数:cat /proc/cpuinfo | grep processor | wc
    • 主频:cat /proc/cpuinfo | grep "cpu MHz"
    • BogoMIPS: cat /var/log/dmesg | grep BogoMIPS
  • Memory
    • /proc/meminfo
    • level 1 and leve 2 cache
    • free
  • I/O
    • hdparm -Tt [device]


性能工具

  • 进程:top, ps, pmap, pstack
  • 内存:vmstat, free
  • 磁盘:iostat, hdparm
  • 网络:netstat, tcpdump, MRTG, pmacct, ntop
  • 其他:strace, ltrace, oprofile, dprobes, performance inspector, isag, LKST, sysctl, syslog

apache

基准测试工具

  • linpack
    • 运行一些浮点矩阵运算
    • 主要测量CPU浮点计算能力,也受到内存带宽的影响。
    • top500.org用的是linpack
    • 测量方法:
      1. wget
      2. cc -DDP -DUNROLL -O2 linpackc -lm -o linpack
      3. ./linpack
    • 测量结果:
      • 我的ASUS V6800V (PentiumM 2.0G) 的linpack结果为:340Mflops
      • 我的desktop (Celeron 1.7G) 的结果为:200Mflops
      • builder (4 Xeon 3.4G) 的结果为:680Mflops
      • 目前世界第一的Blue Genes的结果为:70720Gflops (Rmax)
      • 曙光4000A的结果为:8061Gflops (Rmax)
  • nbench
    • 运行一些典型算法
    • 测量整数、浮点以及内存性能
  • iozone
  • bonnie++
  • netbench
  • tiobench
  • loadrunner
  • mysql-bench
  • apache bench (AB)

性能数据

/proc/meminfo

MemTotal: 1032048 kB <= 所有物理内存-保留内存-核心代码
MemFree: 16600 kB <= 所有Zone的空闲内存总数 (DMA+Normal+High)
Buffers: 74064 kB <= 不与具体文件对应的缓冲页面
Cached: 631356 kB <= 和具体文件对应的缓冲页面 (pagecache-buffers-swapcache)
SwapCached: 0 kB <= swap cache
Active: 852132 kB
Inactive: 102244 kB
HighTotal: 130688 kB
HighFree: 784 kB
LowTotal: 901360 kB
LowFree: 15816 kB
SwapTotal: 514040 kB
SwapFree: 514040 kB
Dirty: 184 kB
Writeback: 0 kB
Mapped: 329292 kB
Slab: 49104 kB
Committed_AS: 636328 kB
PageTables: 4664 kB
VmallocTotal: 106488 kB
VmallocUsed: 2640 kB
VmallocChunk: 103488 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 4096 kB


重点工具介绍

vmstat

是procps项目中的一员,除了ps, top, kill之外,procps还提供很多有用的工具,比如: watch, pmap等。

vmstat = "Virtual Memory Statistics". 虽然从名称上看是收集有关内存管理系统性能数据的,但其实vmstat还提供进程,CPU, 磁盘I/O等其他性能数据:
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 105128 232828 29852 405364 11 27 58 50 1125 821 6 1 91 1
0 0 105128 232828 29860 405364 0 0 0 72 1090 301 3 0 96 1
  • 进程
    • r - 正在等待CPU的进程数目(包括正在运行的进程),也就是run-queue的大小。
    • b - 处于不可中断睡眠状态的进程数目。比如等待I/O完成。
  • 内存
    • swpd - 交换分区中已经被使用的交换内存大小。
    • free - 空闲内存大小
    • buff - 用于写缓冲的内存大小
    • cache - 用于读缓冲的内存大小
  • 交换分区
    • si - 每秒交换入内存页
    • sw - 每秒交换出内存页
  • I/O
    • bi - 每秒从块设备中读入的块数
    • bo - 每秒向块设备中写入的块数
  • 系统
    • in - 每秒发出中断数目
    • cs - 每秒进行上下文切换时间
  • CPU
    • us - 用户时间百分比
    • sy - 系统时间百分比
    • id - 空闲时间百分比
    • wa - IO等待时间百分比
    • 2.4核心
      • 只有 user, nice, system, idle
      • us = user+nice
      • sy = system
      • id = idle
      • irq = softirq = wa = 0
    • 2.6核心
      • 有 user, nice, system, idle, iowait, irq, softirq
      • us = user+nice
      • sy = system+irq+softirq
      • id = idle+iowait

Rule of Thumb

现象

说明

解决方案

运行队列个数 >> CPU个数

CPU是系统性能瓶颈

  • 纵向扩展:升级CPU或增加CPU个数

  • 横向扩展:做负载均衡

  • 调节应用

swap-io, swap-out较高

内存压力较大

  • 增加内存

误解问题

用户的描述有时会有岐义

从多个角度问同一个问题


小技巧

  • 更好的ps结果输出
    • ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command --forest
    • ps -emo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command
  • top -id 1
  • watch
  • 仔细记录
  • free's free != real free
  • try truss

Case Study

  • ICBC
  • china news (Oracle 9.2.0.1)
  • 内存泄漏检查

ToDo

  • strace, ltrace 原理
  • hdparm 原理
  • try kprobes/dprobes
  • try LKST
  • try kdb
  • sysctl
  • cook the sar result a little bit more:
    • average CPU time (user, sys, iowait)
    • peak CPU time (what? when?)
    • average run queue size
    • peak run queue size
    • network send/recv
    • I/O read/write
    • used memory size


参考资料

  • Performance Tuning for Linux® Servers

阅读(989) | 评论(0) | 转发(0) |
0

上一篇:Linux性能优化- -

下一篇: qmail安装文档

给主人留下些什么吧!~~