热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » Linux系统管理 » Solaris 10上的性能调优的一些总结

Solaris 10上的性能调优的一些总结

论坛链接
  • Solaris 10上的性能调优的一些总结
  • 发布时间:2007-12-24 14:31:29    浏览数:7741    发布者:superadmin    设置字体【   
做性能调优首先需要了解系统的现象,一个应用如果出现性能问题,大部分应用都会在操作系统层面表现出问题,比如CPU使用过度, 程序中锁使用过于频繁, 内存泄露等等, 这些都可用Solaris的基本命令看出来, 基本上在性能调优过程, 我们需要通过Solaris 10的一些常用命令比如mpstat, vmstat, iostat等等确定问题所在, 然后再用dtrace进行深入调查。

  比方说, 如果是CPU方面使用有问题, 我们通过mpstat, prstat来看。 下面是一个例子, 只是一个范例而已:

  # mpstat 2

  CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl

  0 117 0 1583 883 111 1487 593 150 6104 64 11108 7 92 0 1

  1 106 0 557 842 0 1804 694 150 6553 84 10684 6 93 0 1

  2 112 0 664 901 0 1998 795 143 6622 64 11227 6 93 0 1

  3 95 0 770 1035 0 2232 978 131 6549 59 11769 7 92 0 1

  可以看到cpu使用在系统态层面大概平均93%, 用户层大概6%左右, 1%左右是闲置的,而sys call调用是大量而且频繁的, 良好的系统应用应该是大部分的时间花在用户层面, 而少部分时间使用在系统调用层面。

  我们使用dtrace往下追踪是什么应用导致这么多的sys call:

  # dtrace -n 'syscall:::entry { @[execname] = count(); }'

  dtrace: description 'syscall:::entry ' matched 229 probes

  ^C

  inetd 1

  svc.configd 1

  fmd 2

  snmpdx 2

  utmpd 2

  inetd 1

  svc.configd 1

  fmd 2

  snmpdx 2

  utmpd 2

  svc.startd 13

  sendmail 30

  snmpd 36

  nscd 105

  dtrace 1311

  filebench 3739725
       知道了是filebench应用导致了这么多的sys call, 但我们不知道是哪一个具体的sys call, 依然可以通过dtrace来查找:

  # dtrace -n 'syscall:::entry /execname == "filebench"/ { @[probefunc] = count(); }'

  dtrace: description 'syscall:::entry ' matched 229 probes

  ^C

  lwp_continue 4

  lwp_create 4

  mmap 4

  schedctl 4

  setcontext 4

  lwp_sigmask 8

  nanosleep 24

  yield 554

  brk 1590

  pwrite 80795

  lwp_park 161019

  read 324159

  pread 898401

  semsys 1791717

  我们可以知道semsys sys call调用得最多, 但不知道在应用中是通过应用的哪些函数调用和怎样调用的, 依然可以通过dtrace。

  # dtrace -n 'syscall::semsys:entry /execname == "filebench"/ { @[ustack()] = count(); }'

  dtrace: description 'syscall::semsys:entry ' matched 1 probe

  ^C

  libc.so.1`_syscall6+0x1c

  filebench`flowop_start+0x408

  libc.so.1`_lwp_start

  10793

  libc.so.1`_syscall6+0x1c

  filebench`flowop_start+0x408

  libc.so.1`_lwp_start

  10942

  libc.so.1`_syscall6+0x1c

  filebench`flowop_start+0x408

  libc.so.1`_lwp_start

  11084

  这样我们可以知道filebench的flowop_start函数调用此semsys sys call最多,我们就可以着手去寻找这个flowop_start函数看是否有改进的方法。
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理