Chinaunix
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
[打印本页]
作者:
solstice
时间:
2003-06-25 16:18
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
呵呵,接着贴,好久没这么爽了,
我粘!!
第十章 性能概念
目标
通过本章的学习,你将会学到:
l 定义性能
l 描述一个重复的过程来标识和解决一个性能问题
l 描述通常的应用,系统及网络活动的性能瓶颈
介绍
——什么是性能
在一个计算机环境里,性能被定义成:用来执行一个最小资源消耗和最快反应时间的的这项活动的能力。
——性能活动层
响应时间也许会在以下的级别中与差劲的性能产生冲突。
l 应用层
l 内核层
l 系统配置层
l 网络层
性能
每一个层所完成的任务会影响其它活动层的性能指数。在一个活动层增强性能也会使其它层有所提高。
——为何要对性能进行调节
调节性能将会使你:
l 对更好的性能请求做出应答
l 对网络和服务做个评价
l 可以容量做个计划
——性能瓶颈
在应用,内核,系统及网络活动层这些对终端用户,程序,或系统的响应有着关键影响的资源就是瓶颈。
性能调节的过程
全部的性能调节就是最大可能的去除反向的冲突所造成的影响。性能调节是一个反复的使用几个阶段来标识和解决一个性能问题的过程。
——观察问题
性能问题的特征就是由直接观察得出或由终端用户质询得出。如果问题不能被直接观察到,那么终端用户会保持一个记载相关问题信息的记录。举个例子来说,如果网络存取变慢,可以查看日志的入口时刻。其它一些有用的工具会被继续讨论。
不要试图去解决在观察时期所产生的性能问题。我们的目的是在试图解决一个性能问题前能对问题有个充分的理解。
——建立度量
一个性能的度量是可以测量的,它由网络的管理者和终端用户共同同意的。在可测量方面能用状态来表示,是性能的目的。
性能的度量设置了终端用户和系统管理者的期望值,并且他们尽量避免在性能调试周期中的误解和不必要的反复。
——获取数据
与性能问题相关的信息在这个阶段获取。数据的获取与内核,系统,网络及应用级的活动相关;每个方面也许需要唯一的命令来获取信息。
在这个阶段,与系统,网络和应用的监视命令相关的知识非常重要,也就是能够对网络的瓶颈有一个基本的理解。
——识别瓶颈
在前几个阶段中收集的信息被用来分析和解释以标识可能引起的性能问题瓶颈的原因。
所有瓶颈的号码可能会很明显。识别出瓶颈可以减少系统冲突,并最大化的增强系统性能。
——测试假设
一个可能的网络瓶颈的解决方案产生于对关键系统和网络资源的相关性的理解。基于这个理解,系统管理者可以评估移除或减少的调节所需。
首先发现一个临时的解决方案,或调节动作,是大多数服务器瓶颈的第一步。另外,对于每个重复的性能调节过程来说,可能只有一个调节动作执行。
——分析数据
数据获取动作被重复,使用同样的条件,系统,网络和应用监视命令在初始数据获取阶段。在性能问题首先获取外观上帮助的地方精确的复制活动级别和条件来评测一个性能调节动作所起的作用。
收集的信息要对最初捕获的数据进行对比,以便于在去除或减轻系统的瓶颈后评测性能调节的作用。
——实现解决方案
决定是否永久的执行性能调节动作要基于它对系统的效用。理论上来说,每个性能调节会得到一个肯定的结果,但,有些时候,一次性能调节可能会毫无作用而言。另外,要注意,在每次的性能调节后不要引入新的不被注意的性能瓶颈。
The entire process is repeated any number of iterations required to meet the performance metrics established during the initial pass.
通常的性能瓶颈
——系统配置
在客户端或服务器上的关键性系统资源也会表现出潜在的系统瓶颈。理解CPU,磁盘,以及内存资源间的关系对正确的识别出系统瓶颈是至关重要的。
——瓶颈对比
内存速度可以用纳秒来计算,而磁盘的速度则要用毫秒来计算。如果我们以一个乘数和以秒计的内存速度状态做一计算,则会有以下的关系。
数据通过系统资源到达到CPU进行处理,存取时间会大辐度增长。
—— CPU
CPU提供执行周期用来处理很多任务,包括网络服务如NFS服务。一个负荷很重的CPU必须对所有进程共享执行周期,并且每个进程在一个执行队列中等待。较长的等待时间,或潜在的,也许都会影响到进程提供足够响应的能力,这也是一个瓶颈。
——磁盘
在当一个系统不能有足够快的速度对磁盘进行读写时,这也就是磁盘瓶颈。这在NFS服务器所支持的客户端是很常见的问题,因为服务器磁盘的文件系统所需要的数据往往要通过很过不同的物理位置。
——内存
在执行中,一个进程所需要的数据可以位于内存中或本地磁盘中。如果CPU直接从内存中读取数据,则瓶颈会极大的减小,因为内存的存取速度要比磁盘的存取速度快得多。内存少会造成对磁盘的大量读取及后来的瓶颈。
——虚拟内存
Solaris操作系统使用磁盘区做为虚拟内存,并把它做为对物理内存的扩展。分页是一个从内存到磁盘移动页或从磁盘到内存称动页的进程。重要的是在系统分页过程中,磁盘带宽会被消耗,因为必须对磁盘进行读写数据,又可能会为性能引入瓶颈。
Swapfs是一个Solaris 2.x系统中假的文件系统,它提供虚拟的交换空间。它在磁盘设备的交换空间上使用主内存来为匿名内存做背向存储,或者一个进程的各个部分包括虚拟或未初始化的数据。
当一个进程启动时,如果内存不足,则把它分配到内存事件的背向空间。在低内存的状态下,系统试图移动这些进程的部分(未初始化的,虚拟数据,和不是进程的文档,这些都可以从一个本地或远程文件系统来获取)从物理内存到磁盘上已经划分出来的区域,或交换空间。
——虚拟内存之 swapfs
swapfs 用来捕获诸多请求,并在背向空间为系统提供假冒的磁盘地址。这又有了运行时超出背向存储空间或交换空间在运行超出主内存之前,甚至不能通过物理内存来执行一个进程,这个问题是很广泛的(在 SunOS 4.x操作系统中)。
在低内存的状态下,系统会试图移动进程的页到假冒的磁盘地址去,swapfs 会再次捕获这些请求。如果磁盘上的交换空间可用,swapfs 会重新发布有效的磁盘地址,并且页会由内存移动到磁盘。如果磁盘上的交换不可用,那么 swapfs 则会简单的返回一个“out of swap space” 的错误信息。
——虚拟内存之 tmpfs
tmpfs 是Solaris 2.x 的另一种文件系统类型。它映射了磁盘对虚拟内存的固有目录如(/tmp)。在物理内存资源丰富的情况下,使用 tmpfs 可以使对目录的读写存取时间大幅减少,因为这可以避免磁盘设备的等待时间。但是,如果内存过小,那么 tmpfs 中的文件被交换出磁盘,它对固有磁盘的优势也就不复存在了。
使用 tmpfs 只适用于易变的数据,如在 /tmp 中的文件。系统掉电将会毁掉所有在tmpfs中的数据。
——内核
系统内核使用很多的缓存来存储那些被频繁存取的数据。每个缓存中的信息被存储在内核的内存中,可以减少存取时间。先前版本中的SunOS软件使用静态的内核缓存大小,有些时间,这需要重新来调整。
在Solaris 2.x系统环境中,基于安装的系统内存来动态的创建优化的内核缓存大小,在大多数情形下不必要调整。
——网络
——网络之存取方式
CSMA/CD 即指,所有的设备连接在单一的介质上,每次只能有一次传输,而且他们可以同时接收。如果两个设备试图在同一时刻同时传输,那么,冲突将会被检测到,两个设备都将会等待一个随机时间段(很短)后再次发次。
——网络之网络负荷
这是在数据包的传输,碎片和阻塞信号所消耗的网络带宽(通信连接中的信息容量)的百分率。
如果没有足够的可用带宽,它将影响到一个服务器用来对客户请求提供足够的响应时间的性能,也就是会引入一个瓶颈。
以太网络是一个只能负荷40%的低效网络(这个值是理论上网络带宽的消耗值)。
——网络之以太网碎片
以太网的碎片是一个损坏的帧。它是由两个主机试图在同一时刻的传输造成的。信号冲突所致的断裂或碎片必须重传。
以太网的碎片需要信息的重新发送,这导致了网络负荷的加重。举个例子来说,一个2版本的NFS服务器要应答所读到的8K信息的请求。一个8K的NFS ver 2 信息由六个以太帧构成(以太网的MTU的值为1500字节),按顺序传输。如果这六个帧的任何一个坏掉了,全部的8K信息都要重传。
不止是消耗网络带宽,大量的碎片是网络高负荷的暗示,因为他们产生于大量主机的试图同时传输。大量的冲突被检测到则说明在局域网上没有足够的网络带宽可以提供给所有的主机。
如果只有极少的或没有冲突,那么主机对网络的存取是没有竞争的。
——网络之阻塞信号
以太网的阻塞信号是主机在检测到冲突后向网络发送的广播。阻塞信号指明了网络负荷。
——网络之网络延迟
一个需要存取网络的主机如果检测到以太网正在使用,它将会延迟传输。它会继续监视网络直到网络变为可用。一个忙的,高负荷的网络会经常强迫主机推迟传输。
——网络之差劲的以太应用软件
以太网使用的存取方式(10M/s,CSMA/CD)不适合几种类型的应用,如:持续的大体积文件系统的备份,介质复制,或连续的大的数据传输。
这些网络负荷的类型快速的消耗了网络带宽,潜在的迫使其它主机延迟网络传输并降低所有网络的响应和存取时间。
因为这些操作属于带宽密集型,也可能导致网络的超负荷运载,使其不能再对传输进行处理。
——网络之空闲以太应用软件
Sun 的网络趋势于突发性的,除非他们是密集型的网络应用如大体积的数据传输,备份等。以太网也可以很好的适应突发性的传输,包括零星的文件传输,命名服务的查找,窗口下的客户对服务器的交互,及一个NFS分布式的文件系统。
应用:NFS
NFS应用允许通过网络使用分布式的文件系统。这是在Sun的网络中通常使用的服务级应用。
在网络和系统级别中所出现的瓶颈可能会潜在的影响NFS的性能。这在性能的调整过程中来标识和寻找真正的NFS的瓶颈的初始原因是非常重要的。
——NFS 版本 2
NFS在TCP/IP模式中在应用层使用Sun 的RPC服务。NFS的传输机制是UDP。UDP是一个无状态的协议,它无需使用顺序发送。流控制和其它数据的可靠性机制则由定向连接协议如:TCP来实现。因此,在系统级别处理UDP的包只占用最少的CPU资源。
因为UDP是无状态类的协议,一个NFS用户经常面对如下的错误信息:“NFS server not responding,still trying”而拿不定主意,不知道瓶颈在网络还是在主机?进一步说,NFS服务器给客户端提供无状态信息,客户没有办法知道一个未响应的服务器是慢还是已经断线了。
——NFS 版本 3
在1992年,IBM,Digital,SunSoft和其它几个网络商组织在一起开始了定义下一个NFS的修订版。结果是产生了NFS Version 3。NFS版本3在NFS版本2上有了实质性的增强。增强的有以下几个方面:
l 增强了客户端的写入的量
l 降低了服务器的负荷
l 增加了客户端的磁盘缓存
l 在NFS服务器上支持大文件(几个G字节)
NFS最初被设计为使用UDP作为既可在本地网又可在广域网通信的传输协议。选择
UDP是因为它比TCP提供了更好的性能。UDP在局域网内工作得很好,但在广域网的使用中有些局限性。
NFS 版本 3
——增强了客户端的写入的量
NFS版本3协议提供了更好的选择来增加写入的量,通过去除同步写的请求而保留了关——开的简单形式。NFS 版本3的客户端发送一个写请求给服务器,随即,它提交了一个确认请求给服务器,这将导致服务器在同一时间写入所有数据到可靠的空间。这就是我们所知道的安全的异步写功能。因为客户端写入服务器的缓存,写入的量提高了,并且写请求完成的更快了。
——减少了网络负荷
NFS版本2的客户单独的查询服务器上所有目录入口的文件和目录名列表及属性信息在一个查找请求中。NFS返回一个文件修改前和修改后的属性,所以客户可以检测到服务器上一个文件或目录的改变,而不需要发送一个单独的 GETATTR 调用。这样,大大减少了客户端的 GETATTR的调用,也就减少了网络和服务器的负荷。
——增强了客户的磁盘缓存(caching)
项目“caching”是指文件数据的临时存储在一个快速存取的本地存储区称为缓存。一旦文件数据被缓存后,随后的客户端请求直接到达缓存而不再需要经过网络的数据传输。缓存在内存中的数据被划分为8K每块。
然而,可用来进行缓存的内存数量通常都很有限。一个解决方法就是通过CachsFS来把本地的磁盘做为一个缓存。CacheFS,是Solaris 2.3后的工具,通过使用客户端的本地磁盘可以为NFS增加大量的可用缓存空间。它缓存文件数据在大于64K字节的块中,也缓存整个的目录,它还缓存象征性的链接。扩大缓存的空间也就是说客户可以更快的存取数据,也可以更少的向服务器发出请求信息。
——支持大的文件系统
NFS版本2支持文件的偏置,文件系统最大为32位或文件的最大值为2.1GB。在磁盘存储器持续下跌的价格和磁盘容量的不断增大,不断增长的用户对文件的需求,文件系统的容量必须大于2.1GB。
NFS版本3支持64位的文件偏置,最大支持文件和文件系统到18MT。NFS版本3的实现由它们把支持的操作系统限制。Solaris 2.5软件不支持64位文件偏置;UFS文件系统只支持文件偏置到40位,也就是1TB。
NFS版本3的功能
——NFS的读请求
以下描述了NFS的对读的处理步骤
1. 在执行中客户进程请求数据。如果请求不能完成,进程不能继续。
2. 客户端检查数据是否已经存储在内存或缓存中。如果数据可用,那么进程使用这个数据并重新开始执行。
如果数据存在于客户端的内存中,那么,数据将会以8k每块进行存取;如果数据存在于客户端的缓存系统(CacheFS),那么,数据将会以64k每块进行存取。
另外,NFS客户端将会维持一个文件的缓存甚至在它关闭之后。因为,在通常情况下,当一个文件被重新打开时,读请求将会被存储在本地缓存数据满足。
3. 如果数据没有被预先存储在内存中,那么客户端必须在服务器上来获得它。客户端需求的数据通过一个NFS 的RPC服务。
4. RPC 信息通过网络进行发送。
5. RPC信息被服务器接收。服务器调度一个 nfsd 来为请求服务。nfsd 是一个运行在服务器上的守护进程并且接受客户端的RPC调用。
6. 服务器检测数据是否已经存储在内存中。如果数据已经存在,那么服务器将封装数据到一个RPC信息中,发给客户端。客户端接收到这个信息,并把数据拷贝到有效的内存中,并且客户进程使用它来重新开始执行。
如果文件被继续读取,NFS客户端可以通过一个叫 readahead 的进程来预料将来的数据需求。Readahead 允许客户端使用它的本地高缓来存储预料的将来的信息。
7. 只要数据保留在内存中,那么,随后同样的数据请求将会在本地完成。
8. 如果数据在内存中不可用,那么,服务器将初始化一个磁盘操作来检索数据。数据将被拷贝到有效的内存中并被封装在一个RPC信息中,发送给客户端。客户端接收到信息,拷贝数据到有效的内存中,并且客户端使用它来重新开始执行。
如果服务器接收到对同一数据的另一个请求,它将避免直接从内存中读取数据的磁盘存取。
——NFS缓存一致性的校验
回忆一下,在一个客户发送一个NFS读RPC之前,它检测在前一个请求后,数据是否已经存储在内存中。如果数据是有效的,那么进程将使用它并重新开始执行。但是,当它被初始化的拷贝到客户端的内存后,服务器上的数据改变了,该如何做?
客户端使用一个缓存一致性的校验来证实内存中存储的数据内容。
1. 客户端在内存中发现一个请求数据的拷贝并且由时间限制被缓存数据的有效性来管理缓存的一致性。拿文件来说,介于3到60秒的时间变化,依赖于刷新的频率。相似的,在目录中维持的缓存的一致性可以限制在30秒到60秒。校验的限制时间可以进行配置在CacheFS 选项中。
2. 如果数据已经存储的时间超过了校验的时间限制,客户端发送一个NFS的 getattr 请求来对比修改的数据和缓存数据的时间戳和服务器上的数据。
Bear ->; Zebra NFS C GETATTR3 FH=009F
Zebra ->; bear NFS R GETATTR3 OK
Bear ->; zebra NFS C GETATTR3 FH=009F
Zebra ->; bear NFS R GETATTR3 OK
3. 如果缓存数据的改变的时间戳与服务器上的改变的时间戳相同,客户端对另一个时间间隔延长它的生存期,客户端的进程重新执行。
4. 如果改变的时间戳不同,数据将会被舍弃,客户端为一个新的数据拷贝发送一个NFS读请求。
——NFS写请求
以下描述了一个NFS的写处理:
l 使用安全的异步写,在数据中的几个写操作结果将会被存储在客户端的本地缓存中。
l 数据通过异步写方式稳定的写入到服务器中,相关的位被设置为 FALSE,通常,当一个写操作通过页的边界时,数据被写入到页面大小的块。
l 如果返回的应答的提交段被设置为TRUE,客户将会标识写请求已经执行,不需要更进一步的操作。如果提交被设置为FALSE,则指出这个缓存还没有和服务器的磁盘同步,客户需要来标志缓存来指明服务器端有一个活动的缓存拷贝,不需要发送一个新拷贝,但是需要一个新的提交。
一个缓存有三个状态:坏的,执行但需要一个提交,已经执行。
l 写被认为是安全的,因为数据的状态信息由客户端维护,指明了数据是否已经被成功存储。如果在一个提交操作前,服务器断掉,客户将会知道是否需要重新提交一个写请求当服务器重新上线的时候。
——NFS 重发
NFS重发是由一个客户端无法忍受一个慢速的服务器应答所产生的。
l 在发送一个信息给服务器之后,客户端在一个单位的时间内预料返回的应答。
l 如果在有效的时间期内没有接收到肯定的应答,客户端重发请求,timeo 乘2,一个计数器,请求时间的响应值被发送,值增加一。
l 当重发的数量等于由retrans 值指定的值时,(指定一个NFS的载入点可以从命令行执行也可在客户端的载入表或图中执行),有一件或两件事情将会发生。
l 如果系统由软选项载入,客户端发送一个请求NFS文件系统的错误,并将提示返回给使用者。如果系统由硬选项载入,打印警告信息: NFS server not responding并且继续重试请求。
这也就是所说的主时间周期(major time-out)。
总结
在本章中,你已经学会:
l 定义性能
l 描述一个重复的过程来标识和解决一个性能问题
l 描述在系统配置,网络和NFS活动层的通常的性能瓶颈问题
作者:
solstice
时间:
2003-06-25 16:18
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
第十一章 性能监视
目标
完成本章的学习后,你将能够:
l 描述监视系统,网络和应用级别负荷的命令
l 计算网络带宽消耗的百分比
l 测试NFS客户/服务器的效率
介绍
本章描述的命令可以帮助你定位和查找网络,应用程序和系统级瓶颈的故障点。
监视服务器
——关于命令: /usr/bin/iostat
————磁盘负荷
命令:iostat 报告了终端和(更多有用的)磁盘的I/O活动。Iostat 用来测定一个服务器系统的磁盘负荷。
在下面的例子中,iostat 每5秒来测定一个磁盘的 I/O:
# iostat –D 5
输出的第一行总结了自系统第一次启动后,I/O的统计。随后的每行则表现了每隔一个具体的时间的活动。
以下的例子显示了一个磁盘负荷不平衡的服务器:
# iostat –D 5
sd0 sd1 sd2 sd3
rps wps util rps wps util rps wps util rps wps util
0 0 0.0 0 0 0.2 0 0 0.2 19 0 56.5
0 1 2.6 0 0 0.0 0 0 0.0 0 17 99.2
4 0 8.0 0 0 0.0 0 0 0.0 14 0 89.3
0 2 2.3 0 0 0.0 0 0 0.0 7 17 78.0
.
.
对比 sd0,sd1,sd2和sd3的util字段。注意,磁盘sd3被高负荷的使用着,并且读和写的I/O是混合的。其它磁盘 sd0,sd1,和sd2未被充分使用。
下面的这个例子是一个磁盘负荷比较平衡的服务器:
# iostat –D 5
sd0 sd1 sd2 sd3
rps wps util rps wps util rps wps util rps wps util
6 8 8.0 10 9 40.2 7 6 20.2 9 0 25.5
0 1 2.6 8 4 36.8 5 14 45.0 7 9 39.2
4 0 8.0 7 4 27.0 6 12 37.0 4 7 29.3
0 2 2.3 4 6 23.0 0 8 23.3 7 1 38.6
.
.
iostat 是一个有用的服务器配置命令。用来在每个磁盘上测量利用的程度和活动(读/写)的类型,管理员可以为服务器上的数据选择最佳位置来共享给使用NFS的客户端。
例如,当配置一个服务器来支持额外的客户时,可以iostat 来识别磁盘的可选用的级别。为了保持全部磁盘的负荷平衡,管理员可以使用 iostat 统计来为客户端的根区,交换区,和体系统结构区,以及终端用户的home目录分配空闲的位置。
——关于命令:/usr/bin/vmstat
命令:vmstat 报告关于进程,虚拟内存,磁盘,中断,及CPU活动的统计。
更为重要的是, vmstat 可以用来快速的发现CPU和内存的瓶颈,以下举个例子来说明 vmstat 的输出。
# vmstat 1
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s3 s6 in sy cs us sy id
1 0 5 516 0 0 1 0 0 0 0 0 0 0 9 60 48 4 2 94
0 0 3 75980 0 0 13 184 4 236 0 76 1 0 187 245 127 6 14 80
1 0 4 75984 0 0 0 96 0 40 0 60 0 0 148 152 100 7 5 88
0 0 2 75984 0 0 0 120 0 176 0 53 0 0 131 84 86 6 5 89
————执行队列
在字段 procs 下的列描述了在可执行队列中的进程号。字段 r 表示进程已经装入内存中。下一个字段 b 描述了不能被执行的进程号,因为这些进程要等待磁盘,终端或网络的I/O操作来完成。在字段 w 中所表示的是进程已经被交换出去。
————虚拟内存
字段 sr 指出了每秒中页守护进程的循环次数。这个进程只在有效的内存很少的情况下才运行。如果每秒的连续值大于20,则说明内存已经不足。
————CPU的利用率
字段cpu所在的列描述了基于用户和系统调用的CPU的利用率。连续的低值在cpu的id字段(值低于10)说明CPU非常忙。
许多可猎取的进程被交换出去(如在procs字段中所指明的那样),内存中的少量的可猎取进程指出了物理内存的缺点。
在例子中,虚拟内存的大负荷使用,磁盘的I/O可能会是系统的瓶颈。
# vmstat 1
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s3 s6 in sy cs us sy id
1 0 5 516 0 0 1 0 0 0 0 0 0 0 9 60 48 4 2 94
0 0 3 75980 0 0 13 184 4 236 0 76 1 0 187 245 127 6 14 80
1 0 4 75984 0 0 0 96 0 40 0 60 0 0 148 152 100 7 5 88
0 0 2 75984 0 0 0 120 0 176 0 53 0 0 131 84 86 6 5 89
——关于命令:/usr/sbin/sar
命令:sar 是系统活动的指示器。Sar 可以交互式的或用批处理方式来报告系统资源的利用率。
————交互式的报告
以下这个交互式的例子测试了CPU的利用率并且每隔10秒取得一个样本,共两个。
# sar 10 2
SunOS bear 5.5 Generic sun4m 01/20/96
01:53:14 %usr %sys %wio %idle
01:53:24 0 0 0 100
01:53:34 0 1 2 97
Average 0 1 99
#
————批处理方式报告
如果指定 –o ,那么样本将会保存在一个二进制格式的文件中。
# sar –o /tmp/sar.file 10 2
#
文件中收集的信息也许可以用选项 –f 来重新进行。
# sar –f /tmp/sar.file
SunOS bear 5.5 Generic sun4m 01/20/96
01:53:14 %usr %sys %wio %idle
01:53:24 0 0 0 100
01:53:34 0 1 2 97
Average 0 1 99
#
下面使用 sar 的选项来帮助你发现关键性系统资源的利用率。
————磁盘利用率
使用 –d 选项来发现不平衡的磁盘负荷。注意在下面的例子中,字段 %busy 中的磁盘 sd3 比所有其它的设备都要忙。
# sar –d 10 2
SunOS bear 5.5 Generic sun4m 01/20/96
02:03:05 device %busy evque r+w/s biks/s avwait avsery
02:03:15 fd0 0 0.0 0 0 0.0 0.0
sd2 0 0.0 0 0 0.0 0.0
sd3 67 0.7 9 2206 0.0 75.5
02:03:25 fd0 0 0.0 0 0 0.0 0.0
sd2 2 0.2 1 22 88.5 46.1
sd3 69 0.7 9 2182 0.0 79.7
Average fd0 0 0.0 0 0 0.0 0.0
Sd2 1 0.1 1 11 88.5 46.1
Sd3 68 0.7 9 2194 0.0 77.6
#
————虚拟内存
使用选项 –g 来监视虚拟内存的使用。字段 pgscan /s 指出了由守护进程 pageout执行的每秒搜索的页面数。这个守护进程只运行在有效内存很低的情况下。连续的值大于20每秒说明内存已经不足。
# sar –g 10 2
SunOS bear 5.5 Generic sun4m 01/20/96
02:22:34 pgout /s ppgout /s pgfree /s pgscan /s %ufs_ipf
02:22:44 1.20 12.08 21.06 23.85 7.06
02:22:54 1.10 9.00 19.30 21.30 10.81
Average 1.15 10.54 20.18 22.58 7.35
#
————执行队列
使用 –q 选项来查找执行队列中有多少进程在排队。字段 runq-sz 中指出了内存中等待执行的进程线数。如果值始终大于2,那么系统限制于CPU。
字段 %runocc 表示运行队列是否被占用。较小的值是比较可取的,因为它表明每个队列中的进程都被较好的分配了时间。
# sar –q 10 2
SunOS bear 5.5 Generic sun4m 01/20/96
02:35:31 runq-sz %runocc swpq-sz %swpocc
02:35:41 12.6 100 0
02:35:51 12.0 100 0
Average 12.3 100 0
#
————自由内存
使用 –r 选项来查找可用内存页和交换文件磁盘块的平均数量。
Freemem 字段指出了每个间隔中能为用户进程有效使用的内存(在 SPARC结构中为4K)页的平均数量。
Freeswap 字段显示了有多少个512字节的扇区是可以为交换使用的。
Freemem 的连续低值(少于安装内存的6%)则表示有效的内存不够,和一个可能的瓶颈。
# sar –r 10 2
SunOS bear 5.5 Generic sun4m 01/20/96
02:55:11 freemem freeswap
02:55:22 2686 178006
02:55:32 2208 160269
Average 2447 169151
#
——命令:/usr/sbin/swap
命令:swap 用来显示使用的交换空间,和在磁盘上增加和移动交换区。
————显示交换空间
下面这个例子使用选项 –l 在每个交换设备上显示全部的磁盘扇区(块)列表和未使用的扇区(自由)。
# swap –l
swapfile dev swaplo blocks free
/dev/dsk/e0t3d0s1 32,25 8 187912 127088
#
默认的交换区是第二个磁盘设备分区包括根分区,就象在例子中显示的那样。
——创建和增加交换区
附加的交换分区可以是规则文件(由命令 mkfile 创建)也可以是磁盘分区。下面的例子用命令: mkfile 来创建一个10M的交换分区。
# mkfile 10m /exp/swap
#
附加的交换空间也可以使用命令:swap 的选项 –a 。下面的例子增加一个交换文件,然后更新交换空间列表。
# swap –a /exp/swap
# swap –l
swapfile dev swaplo blocks free
/dev/dsk/c0t3d0s1 32,25 8 187912 126920
/exp/swap 8 20472 20472
#
————移除交换区
使用选项 –d 来移除交换区。在这个例子中,先前增加的交换区被移除,并核实调整之后的交换空间。
# swap –d /exp/swap
# swap –l
swapfile dev swaplo blocks free
/dev/dsk/c-t3d0s1 32,25 8 187912 126920
#
如果交换区有任何活动的磁盘扇区包含交换到进程中的数据,命令: swap 在移除交换区前会安全的对数据进行重新定位。
——命令:/usr/bin/ps
命令:ps 打印所有活动进程的信息。更重要的是,ps 命令可以查找进程的ID号(PID),(可用来向进程发送终止或挂起的信号),进程状态(进程是否已经被装入内存等待执行,交换到磁盘等等),累计的CPU资源消耗(通常用来捕获失控的进程)。
下面举例说明 ps 的输出:
# ps –el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CO
8 R 7198 22028 19551 80 1 30 ff7c0000 349 ? 83:53 xl
19 S 0 3 0 80 0 SY ff19d000 0 f00c26ae ? 265:00 fsfl
8 O 0 26070 26053 14 1 20 ff78c000 142 pts/4 0:00 p
字段S来描述每个进程的状态(从剩余的秒来说)。下面对每个可能出现的进程状态做一个描述。
————进程状态
l O 进程正在被处理器运行
l S 睡眠状态:进程正在等待一个事件来完成
l R 可捕获的:进程正在运行队列中
l I 空闲的:进程正准备创建
l Z 僵尸进程:进程终止,父进程不必等待
l T 追踪:进程被一个信号停止,因为父进程正在追踪于它
l X SXBRK 状态:进程正在等待更多的主内存
——命令:/usr/bin/netstat
命令:netstat 显示了多种网络关系信息,包括每个网络接口的传输统计。
————冲突比率
在下面的例子中使用 10秒的间隔来测试包冲突的比率。
# netstat –i 10
input le0 output input (Total) output
packets errs packets errs colls packets errs packets errs colls
1929138 0 1590861 3 73176 1946182 0 1607905 3 73176
16 0 1 0 0 16 0 1 0 0
3 0 3 0 0 3 0 3 0 0
一个单一主机的冲突比率是输出冲突的数量除以总共的输出包的量。网络冲突比率按如下的方式计算:
l 在所有活动主机上运行这个命令来收集网络的统计量,用总共的冲突数除以总共的输出包数就可以得出网络的冲突比率。
l 冲突的比率被定义为:输出的冲突数除以总共的输出包,再乘以100。拿上个例子来说:
73176 / 1590861 * 100=4.6% 的冲突比率。
冲突比率超过5%,则要先考虑网络的负荷是否过重。
冲突比率超过10%,这是一个超负荷的网络,要考虑把它分段。
——命令:/usr/sbin/snoop
命令: snoop 在网络上捕获和显示包的内容。Snoop 可以用来定位许多网络异常的源和目标如NFS的重发。
这个命令的输出可以用它所捕获的大量数据快速的淹没磁盘的可用空间。超负荷的有用信息包括如下:
l 捕获一个二进制文件
# snoop –o packet.file
# CTRL-c
显示这个二进制文件的内容
# snoop –i packet.file
l 只捕获有关的信息如包含在前120个字节内的包的头文件
# snoop –s 120
l 捕获指定的包的数量
# snoop –c 1000
l 捕获 tmpfs 来避免因磁盘瓶颈撤消的包信息
# snoop –o /tmp/packet.file
l 指定过滤器来捕获指定类型网络活动
# snoop broadcast
l 使用 awk ,sed ,grep ,来解释和总结 snoop 输出。
——命令:/usr/bin/nfsstat
命令:nfsstat 显示了关于NFS和RPC的内核接口的统计信息。
NFS对决定NFS的客户/服务器的一个时期内的工作负荷也是很有用的。字段 calls 显示了NFS的操作数量,也就是服务器提供的服务或客户端的请求。
# nfsstat –rc
Client rpc:
Calls badcalls retrans badxid timeout wait newcred timers
186992 7 225 170 166 0 0 370
.
#
字段 badxid 显示了客户端接收了多少次关于一个单一请求的肯定应答。
字段 retrans 指明了在一个时间周期内,客户端因没有接收到一个肯定的应答而重新发送请求的次数。
————评价NFS的客户/服务器统计
如果 badxid 和 retrans 值都关闭的话,那么,服务器对客户端的响应则不够快速。优化服务器的性能也就相应提高了网络的性能。
客户端可查觉到的性能可以通过增加客户的文件系统表或映射的time-out(timeo)选项值来提高。默认值为11(1.1秒)。网络的响应时间不会提高,但客户会体验到更少的timeout,重新发送,和并发的错误信息。
如果 badxid的值比retrans的值小得许多或为0,那么,混合了NFS,RCP的信息没有到达服务器,网络或服务器上的网卡是可疑的。
如果重新发送的与全部的调用的比率大于5%(retans/calls *100),重传率就过高。这可能表示客户端正在存取一个不同子网或网段的服务器。如果客户端的数据报在它们到达目标服务器之前导致了过多的重传,那么它们有可能会被中间的路由或桥取消。
为了更好的适应中间结点的数据报大小的处理能力,NFS的传输信息大小可以减少。读和写的大小可以通过 nfsstat 加选项 –m 来测定。
# nfsstat –m
/mnt/opt from zebra:/opt
Flags:vers=3,proto=udp,auth=unix,hard,intr,link,sylink,acl,
rsize=32768,waize=32768,retrans=5
Lookups: srtt=7 (17ms), dev=3 (15ms), cur=2 (40ms)
Reads: srtt=1 (2ms), dev=1 (5ms), cur=0 (0ms)
All: srtt=7 (17ms), dev=3 (15ms), cur=2 (40ms)
注意:如果使用NFS版本3,那么TCP协议将会自动的降低段大小一直到它适合通过”bad routers”。这是在路由器不支持 back-to-back的IP碎片时发行的,这些碎片是由NFS版本2的8k字节的读和写产生的。但,只有在客户端使用UDP时,rsize/wsize会被设小来适应一个MTU,如512或1k字节。
——重新初始化统计
在命令:nfsstat 中使用选项 -z 来重新初始化统计报告。在下面的例子中,客户的RPC统计被设置为0。
# nfsstat –rcz
Client rpc:
Calls badcalls retrans badxid timeout wait newcred timers
5815 0 0 0 0 0 0 39
#
——守护进程 /usr/lib/nfs/nfsd
在Solaris 2.x操作系统中,nfsd 是一个使用内核线程来处理所有的NFS请求的单一进程。如果服务器上没有足够的可用线程来服务每个客户端的请求,客户端性能也是可以忍受的。
你可以配置两个线程为每个活动的客户端机器,或32个每以太网络。默认为16个线程给每个偶然的NFS用户。但是,如果一个低终端SPARC类的服务器同时运行几百个线程还是有些负荷过重的。
调整系统启动时的nfsds数在脚本:/etc/rc3.d/S15nfs.server或 /etc/init.d/nfs.server
——总结
在本章中,你已经学会:
l 描述用来监视系统,网络和应用级别负荷的命令
l 决定消耗网络带宽的比率
l 测试NFS客户/服务器的效率
作者:
lycxlove
时间:
2003-06-25 17:57
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
好呀,怎么没人顶
作者:
Bimm
时间:
2003-06-25 19:06
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
非常有用!
作者:
weinylee
时间:
2003-06-25 19:15
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
ding
作者:
jye
时间:
2003-06-25 23:09
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
GOOD, VERY GOOD, VERY VERY GOOD.
EXCELLENT.
AMAGING.
作者:
moocher
时间:
2003-06-26 22:07
标题:
这是偶99年翻译的SUN的网络管理员(SA-387)的东东(6)
基础中见精华!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2