UNIX系统性能优化solaris.ppt

上传人:仙人指路1688 文档编号:2349254 上传时间:2023-02-14 格式:PPT 页数:96 大小:570KB
返回 下载 相关 举报
UNIX系统性能优化solaris.ppt_第1页
第1页 / 共96页
UNIX系统性能优化solaris.ppt_第2页
第2页 / 共96页
UNIX系统性能优化solaris.ppt_第3页
第3页 / 共96页
UNIX系统性能优化solaris.ppt_第4页
第4页 / 共96页
UNIX系统性能优化solaris.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《UNIX系统性能优化solaris.ppt》由会员分享,可在线阅读,更多相关《UNIX系统性能优化solaris.ppt(96页珍藏版)》请在三一办公上搜索。

1、UNIX系统性能优化 solaris,亿阳信通培训部 方景明Email:MSN:facesmile_,性能管理介绍,1.1 什么是性能调整 性能调整是指让系统有效地运用系统资源,以便工作负载更好的运行在系统上。性能调整的两个主要工作:1、消除系统上运行的不必要的工作;2、获取系统的优势,以满足系统运行的工作负荷。几乎所有的性能调整行为都包含在这两类工作中。1.2 基本的调试过程 查找系统的瓶颈并且消除它。性能调整的工作永远不可能结束,因为瓶颈永远存在。性能调整提供一种花销与硬件之间的折衷方案。,性能管理介绍,1.3 影响系统性能的因素 有许多因素会影响系统的运行方式,这包括:1、系统自身的工作

2、负载 工作负载也许是由于I/O的限制、CPU限制或者是由于网络访问的密度的限制。2、网络访问的随机组成 网络中询问的多少、记录的多少、发送E-mail的多少,以及登录系统的用户的多少都会影响系统的性能。3、系统自身的改变 系统添加新的硬件、新的网络访问、新安装软件、patch的新的运算规则,也都会影响系统的性能。,性能管理介绍,1.4 性能度量的术语 性能调整是指让系统有效地运用系统资源,以便工作负载更好的运行在系统上。1、带宽(bandwidth)不能超越的最大容量;忽略超载部分的数量值;刚好达到最佳的数量值;在实际运用中永远不能达到的值 2、吞吐量(throughput)在指定的时间间隔内

3、完成的工作量;实际运用中带宽的大小;,性能管理介绍,依赖于许多因素,如硬件、软件、人为行为以及系统的随 机因素;难以计算,但可以近似估计。3、响应时间(response time)用户或请求者的请求完成所花费的时间;一个操作完成所花费的时间;通常与等待时间相同。4、服务时间(service time)实际的请求处理时间;服务时间等于没有队列等待时间的响应时间。服务时间+队列等待时间=响应时间,调试工具,2.1 sunos所提供的调试工具 1、sar(system activity reporter)命令 sar 命令提供覆盖系统大部分范围的系统测量信息。options:-a:报告DNLC(di

4、rectory name lookup cache)信息;-A:包含所有的参数;-c:报告系统调用和读/写传输;-d:报告block设备(disk、tape)的情况;-g:报告页面调度的情况;-k:报告kernel、memory的分配情况;-p:报告页面调度的错误;,调试工具,-r:有效的memory页面和swap空间;-u:CPU的利用率;-w:系统swap和进程交换的状态;-y:TTY设备状态。#sar c 10Sunos sun250 5.8 Genric_105181_26 sun4u 07/31/0218:38:03 scall/s sread/s swrit/s fork/s ex

5、ec/s rchar/s wchar/s18:38:13 306 27 31 0.00 0.00 5643 5942,调试工具,2、vmstat(virtual memory statistics)命令 vmstat命令报告虚拟内存的统计信息。options:-c 报告缓存刷新的信息;-i 报告每个设备的中断数目;-s 显示系统引导之后的系统事件统计;-S 报告交换行为而非分页行为。#vmstat procs memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1-in sy cs us sy id 0 0

6、0 217352 60448 0 5 6 0 0 0 0 1 0 0 0 115 114 55 1 3 96,调试工具,procs:报告进程的状态及其数目 r:运行的队列里的进程 b:I/O、分页被阻隔的进程 w:可运行但被交换的进程 memory:报告虚拟内存和真实的内存 swap:当前可用的交换空间 free:闲置的空间 page:报告页面活动数量的信息 re:被回收的页面 mf:次要错误,地址空间或硬件地址转换错误 pi:页面调入(K bytes),调试工具,po:页面调出(K tybes)fr:被释放的空间(K tybes)de:预期的内存缺乏(K tybes)sr:被扫描的页面 di

7、sk:报告每秒钟内磁盘操作的总数 S:SCSI I:IDE faults:报告中断的比率 in:(无时钟)设备的中断 sy:系统调用 cs:cpu的上下文交换 cpu:使用cpu的时间百分比 us:用户时间 sy:系统时间 id:空闲时间,调试工具,3、iostat(I/O statistics)报告disk 和TTY设备的I/O性能 options:-c:cpu状态-d:disk数据传输以及平均服务时间-D:disk每秒钟的读写次数及使用百分比-e:设备错误统计(硬错误、软错误)-E:所有设备的错误及其详细信息-M:以m为单位报告I/O的吞吐量-x:显示磁盘扩展的统计信息-t:显示终端设备信

8、息,调试工具,#iostat xtc 5 2 extended device statistics tty cpu device r/s w/s kr/s kw/s wait actv svc_t%w%b tin tout us sy wt id sd0 1.6 0.3 23.0 2.7 0.0 0.1 0.1 0 1 0 761 0 1 2 97 sd6 0.0 0.0 0.0 0.0 0.0 0.0 12.5 0 0 disk:磁盘名 r/s:每秒读盘次数 w/s:每秒写盘次数 kr/s:每秒读的字节数(K bytes)kw/s:每秒写的字节数(K bytes)wait:队列的长度 act

9、v:正在接收服务的平均事务数 svc_t:平均服务时间%w:有事务在等待服务的时间(百分比)%b:磁盘繁忙时间(百分比)tin:终端输入,调试工具,4、mpstat 报告每个处理器的统计信息#mpstat 5 cpu minf mjf xcal intr ithr csw icsw migr smtx srw syscal usr sys wt idl 0 1 0 368 102 102 36 0 0 0 0 420 0 1 2 96 1 1 0 186 420 220 39 0 0 6 0 82 0 0 2 98 cpu:处理器ID minf:次要的故障 mjf:主要的故障 xcal:跨处理

10、器的调用 intr:中断 ithr:线程中断,调试工具,csw:上下文交换 icsw:强制的上下文交换 migr:向另一处理器的线程传递 smtx:互斥信号的转换 srw:读写锁的转换 syscal:系统调用 usr:用户时间百分比 sys:系统时间百分比 wt:等待时间百分比 idl:空闲时间百分比,调试工具,5、netstat 报告网络利用信息,包括DHCP(动态主机配置协议),arp信息和传输情况。options:-a:显示所有的套接字(sockets)和路由表信息;-d:显示所有的运用DHCP协议的接口状态;-D:显示DHCP 配置接口;-i:显示所有的TCP/Ip接口状态;-k:ke

11、rnel memory 分配的细节;-n:显示所有的网络地址;-p:显示arp列表;-r:显示路由表;-s:显示每种协议的状态。,调试工具,#netstat i name mtu net/dest address ipkts iperrs opkts oerrs collis queue lo0 8232 lookback localhost 1780 0 1780 0 0 0 hme0 1500 sun250 sun250 161636 0 230771 0 0 0#netstat p device ip address mask flags phys addr hme0 192.168.1

12、.27 255.255.255.255 00:40:d0:1d:00:1e hme1 192.168.1.37 255.255.255.255 00:00:e8:7b:f7:39,调试工具,6、nfsstat:报告系统nfs 状态的详细信息,包含server 和client 的信息,帮助寻找问题的位置。options:-c:只显示client的信息;-m:显示nfs 挂接的状态;-n:显示nfs的信息,包括server 和client的信息;-r:显示rpc的信息;-s:只显示server信息,2.2 其它的工具 1、/usr/proc/bin(/usr/bin)目录/usr/proc/bin

13、目录中的工具与/proc文件系统相关联,允许报告进程的细节信息。/usr/proc/bin/ptree:列出与当前进程相关的父进程与子进程,以及提供进程运行的文件信息。#ptree/usr/sbin/inetd-s t 565 rpc.ttdbserverd 571 rpc.rstatd,调试工具,/usr/proc/bin/pcred:显示进程的凭证(有效、真实的UID、GID)/usr/proc/bin/pmap:显示进程的地址空间图。/usr/proc/bin/pldd:列出每个进程的动态数据库连接,包括共享目录。/usr/proc/bin/psig:列出每个进程的信号的作用。/usr/

14、proc/bin/pstack:显示进程的堆栈。/usr/proc/bin/pwdx:显示每个进程当前的工作目录。/usr/proc/bin/pstop:停止指定的进程。/usr/proc/bin/prun:运行指定的进程。/usr/proc/bin/pwait:等待指定的所有进程结束。,调试工具,2.3进程管理器(process manager)进程管理器能查找有问题的进程,并且跟踪当前系统资源的运用情况。#/usr/dt/bin/sdtprocess&它所显示的信息是从ps 命令和/proc文件系统得到的。这包括:1、cpu的利用率 2、I/O的利用率 3、memory利用率 4、进程的凭

15、证 5、跟踪与反向跟踪 6、调度参数,调试工具,调试工具,2.4显示调度参数 1、sysdef命令可以显示近60个运行的调度参数。#sysdef system configuration swapfile dev swaplo blocks free/dev/dsk/c0t0d0s1 32,1 16 2101536 2101536 tunable parameters10362880 maximum memory allowed in buffer cache 7914 maximum number of processes,调试工具,2、adb命令,内核调试器。允许你察看并改变调整参数的值。

16、3、ndd 命令,能查看并且改变网络设备和协议栈的参数。#ndd get/dev/ip ip_forwarding 1#ndd set/dev/ip ip_forwarding 0关闭ip转发。#ndd set/dev/ip ip_respond_to_echo_broadcast 0关闭echo广播响应,防止dos攻击,调试工具,2.5 一些有用的命令 1、/usr/platform/sun4u/sbin/prtdiag 显示系统的配置信息,包括cpu的频率、ecache大小、存储器的大小以及外围设备的配置。2、psrinfo 显示处理器的配置与诊断信息。#psrinfo 0 on-line

17、 since 09/22/02 17:38:18 1 off-line since 09/22/02 17:38:18-v 选项还可以显示处理器的类型与时钟速率信息。3、psradm命令可以设置处理器在线或离线。#psradm-f 1;将cpu 1 设置位离线。#psradm-n 1;将cpu 1 设置位在线。,调试工具,2.6 设置调试参数 在/etc/system文件里可以改变调试参数,内核被加载到memory之后会读一次/etc/system文件。在/etc/system文件中所定义的参数被放置在kernel里的合适的位置,然后系统继续初始化。因此,在改变/etc/system文件后,必

18、须reboot系统。#vi/etc/system set maxusers=40 forceload:/drv/foo,调试工具,注意:/etc/system 文件能用来设置常驻在kernel 里的调试和一些选项参数的值,如果/etc/system 文件中的参数改变不正确,可能会导致系统无法启动。,调试工具,3.1 Virtual Memory Virtual memory 是提供给程序比系统真实的内存更多的存储空间的一种技术。Memory 能为程序所见,能被使用的memory的总数,叫虚拟内存。它通过OS在应用程序需要的时候创建,在它被程序使用完成之后释放。如果虚拟内存中的物理内存部分没有足

19、够的空间,就会产生页面输出(paged out).每一个进程能够得到它自己的Virtual memory 空间,当前的系统能达到4GB.这叫进程运行的地址空间。Virtual memory是通过段(segment)来管理的。,内存调整,3.2 进程的地址空间进程的地址空间被分配到不少于15个段(segments)里。正文(text)是可执行程序中的可执行指令通过编译器(compiler)所产生的。数据(data)包含程序当中的全局变量、常量、静态变量,它同样是从程序的初始化过程中得到的。heap(堆):是用来存储一些类型程序的memory。hole:是未被分配的地址空间部分,还未被使用。sha

20、red libraries:是被程序应用的共享程序库。它带有data、text段,与普通的可执行文件有相同的结构。Stack(堆栈):程序的地址空间。堆栈的大小是8M。,内存调整,Kernel:通常是虚拟内存的1/2。Kernel的实际大小的改变依赖于许多因素,如外围设备配置和系统真实的memory的大小。,内存调整,3.3 segment(段)的类型 段是其驱动程序管理的,正如设备是它的驱动程序管理一样。段的驱动程序负责段的创建、复制(fork)和删除,同时处理段的页面错误。用于用户进程的公共段的驱动程序是segvn driver,它映射文件到地址空间。设备的段是segdev,为frame

21、buffer.,内存调整,内存调整,3.4 伪地址的翻译 memory 类似于disk,需要一个目录机制来允许系统确定真实的Memory中的页面(page),这个过程叫地址翻译。地址翻译执行3个阶段的查找,逻辑地址部分能被翻译成列表当中的引索,最终提供与逻辑地址相对应的真实地址。翻译在CPU中的MMU硬件中进行,如果翻译不能执行,则发生中断标志页面错误,OS 必须修复它。如果翻译合法,OS必须查找页面和其包含的数据。,内存调整,内存调整,3.5 页面描述缓存(page Descriptor cache)地址翻译过程花销昂贵,在数据被访问之前需要3次memory访问,必须完成每一个指令和操作。被

22、翻译的地址保存在特定的cache 里,通常能保存256条纪录,这就叫PDC(page Descriptor cache),也叫TLB(translation lookaside buffer)或DLAT(dynamic lookaside table)。访问PDC速度很快,事实上比cache one 速度快。在多CPU系统中,每一个CPU(和I/O接口)都有它自己的PDC。,内存调整,3.6 伪地址的查找,内存调整,3.6 页面调度与交换 页面调度是在swap区与物理内存之间移动进程的个别页 交换是在swap区与物理内存之间移动进程全部地址空间3.7 监控页面调度和交换 vmstat 报告虚拟

23、内存的统计信息、cpu符合、页面调度和交换#vmstat procs memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1-in sy cs us sy id 0 0 0 217352 60448 0 5 6 0 0 0 0 1 0 0 0 115 114 55 1 3 96,内存调整,3.8 swap命令也可监视页面调度和交换。swap命令可以增加、删除和监视系统的交换空间。#swap-s total:25728k bytes allocated+6140k reserved=31868k used,56

24、496k available,内存调整,#swap l swapfile dev swaplo bloks free/dev/dsk/c0t0d0s1 32,25 8 132040 119944/dev/dsk/c0t1d0s1 32,9 8 132040 120176 swapfile:交换空间(swap)的路径名 dev:块设备 swaplo:交换区开始的地方。blocks:交换区的长度。free:当前未被分配的块数。1 blocks=512 bytes,内存调整,增加交换区空间#swap a/dev/dsk/c0t1d0s1#mkfile 20m/export/data/swapfile

25、#swap-a/export/data/swapfile 删除交换区空间#swap d/dev/dsk/c0t1d0s1#swap-d/export/data/swapfile#rm/export/data/swapfile,内存调整,3.9 页面调度技巧1、交换区空间不小于32M。小于32M,系统会快速从swap区中溢出,一些程序将被中止。2、空闲页扫描速度不要超过192页/秒。如果速度大于192页/秒,表明物理内存严重匮乏。,内存调整,3.10 系统配置要点 有三个因素显著影响存储子系统的性能:1、交换空间的大小和分布 2、/etc/system文件的maxslp变量的值 maxslp系统

26、跟踪进程修休眠时间的参数。它的最大值为127,若参数值大于128,将抑制系统对休眠时间的检测 3、设置改变页面调度机制的参数,以及空闲页面扫描速度的参数。/etc/system 文件的fastscan、slowscan 和handspreadpages可以实现对空闲页面扫描速度的控制。,内存调整,4.1 磁盘性能调整 调整磁盘的性能涉及两个方面:1、总的系统磁盘I/O的吞吐量 2、磁盘的存储效率 进程间的冲突使用模式会使I/O的吞吐量受到影响。顺序读取与随机读取文件位置的不同,I/O 性能管理,4.2 对硬件的考虑 影响磁盘性能的三个因素是:1、查找延时 2、转动延时 3、数据传输的速率4.3

27、 磁盘控制器与接口 在sun机器上有3种类型的磁盘接口:IDE(集成驱动电路)一般16bit 的带宽,最大传输速率为3.33M bps,增强IDE为16.7M bps,I/O 性能管理,SCSI(小型计算机系统接口)SCSI-1:8 bit的数据总线,最大传输速率5 M bps SCSI-2:快速SCSI,最大传输速率可达10 M bps wide ultra SCSI:最大传输速率可达40 M bpsFC(光通道):双向传输,最大传输速度为100 M pbs4.4 RAID 技术 RAID技术是通过软件,如disksuite,volume manager,或者是通过硬件控制器将2个或者多个磁

28、盘结合起来,组成逻辑上的存储设备。RAID技术允许数据分布在多个磁盘上面,从而提高容错性或改进存储性能。,I/O 性能管理,1、raid 0 将数据划分,并存放在多个磁盘上。读取数据时,从全部的磁盘上提取信息并重新组合。特点:读写书读快,安全性差,磁盘空间利用率高。2、raid 1 也叫镜像,同时将数据写在两份相同逻辑设备上。特点:安全性高,读取速度快,但写操作速度慢,磁盘空间利用率低。适合于I/O操作只是读而不是写的系统。,I/O 性能管理,3、raid 3 除了一个磁盘用于存储其它磁盘的数据的奇偶信息外,使用其余的磁盘用于存储数据。特点:较高的安全性,磁盘空间利用率较高。写操作和读取速度较

29、慢。奇偶盘可以使错误得到修复,但寄偶盘的损毁会使数据全部丢失。4、raid 5 使用了raid 3的概念,但它将奇偶信息混合到了全部的磁盘中。这样得到了很好的容错性和性能。特点:较高的安全性,磁盘空间利用率较高。读写速度较慢。,I/O 性能管理,4.5 文件系统的注意事项 在创建文件系统时要注意:1、I/O 工作负荷应尽可能平均分布在系统中的磁盘上 2、为尽可能多的设备分配交换区,尽量使用单独分区 3、尽量使磁盘上的文件系统最少;4、将大文件集合单独创建一个系统。4.6 监控文件系统性能 监控I/O工作负荷的基本工具是iostat 命令,它可以测出吞吐量、使用率、队列长度、处理速度和设备的服务

30、时间。,I/O 性能管理,#iostat tty sd0 sd1 sd2 sd6 cpu tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id 6 293 17 3 64 46 3 61 2 0 15 1 0 13 2 3 9 85 3 932 17 3 13 2 1 12 0 0 0 0 0 0 1 1 5 92 tty:与终端有关的I/O操作 tin:每秒输入的字符数 tout:每秒输出的字符数 sd0,sd1,sd2,sd6:系统磁盘设备 kps:每秒传输的千字节(k/s)tps:每秒传输操作次数

31、 serv:平均服务时间,I/O 性能管理,cpu:cpu的使用率 us:用户状态所占百分比 sy:系统状态所占百分比 wt:等待状态所占百分比 id:空闲状态所占百分比#iostat D;显示设备的传输率和使用率 sd0 sd1 sd2 sd6 rps wps util rps wps util rps wps util rps wps util 0 2 3.5 1 2 4.4 0 0 0.2 0 0 0.1 rps:每秒读操作次数 wps:每秒写操作次数 util:平均设备使用率,I/O 性能管理,4.7 设置磁盘限额 每个限额有两个值:硬限制和软限制。软限制相当于警告级,仍可以分配;硬限

32、制的系统停止分配资源。1、设置定额#vi/etc/vfstab mount point mount option/export/home rq#cd/export/home#touch quotas#chmod 600 quotas,I/O 性能管理,#edquota hy;hy 为/export/home 目录下hy 用户主目录。fs/export/home blocks(soft=0,hard=0)inodes(soft=0,hard=0)#eduota p hy user1 user2 user3;将hy 用户的限额复制给user1#/usr/sbin/quotacheck a;初始化#

33、/usr/sbin/quotaon a;打开监控功能2、自动开启定额功能#vi/etc/rc2.d/S01MOUNTFSYS echo n checking quotas:/dev/console/usr/sbin/quotacheck a/dev/console 2&1 echo Enabling quota limits/dev/console/usr/sbin/quota a/dev/console 2&1,I/O 性能管理,5.1 调度类型 SunOS缺省提供四种调度类:l分时TS 针对普通用户的工作,根据CPU的使用情况来调整优先级 l交互IA 基于分时类,给在CDE和OpenWin

34、dows环境中活动窗口的任务提供更好的性能l系统SYS 系统类,又称作内核优先级,主要为系统线程使用,如页面进程和始终线程l实时RT 在系统中具有最高优先级(除了中断处理),甚至高于系统类,CPU 调度(Scheduling),这些类在他们使用时被动态地调用,像设备驱动和其他内核模块等,进度类是在他们被使用才被调用。5.2 调度类的特征 分时/交互类 时间分片 平均等待调度时间 系统类 没有分时片 固定的优先级 实时类 时间分片 固定的优先级,CPU 调度,5.3 调度优先级,CPU 调度,系统线程被分配一个优先级基于它的优先级类和在系统范围内分配的优先级(基于它的优先级)。如果新的进度类被激

35、活,例如实时进度类,他被插入到层次中合适的位置,所有其他的现存类作相应的调整。5.4 调度状态 一个内核线程以下面三种状态中的一个存在。运行(running)在CPU中执行 等待(ready)等待CPU处理 睡眠(sleeping)等待事件,如I/O中断,可提供锁定等,CPU 调度,CPU 调度,应用线程本身不直接在CPU队列里,但系统线程是这样的。它们依附于LWP和内核线程。当应用线程需要工作时,内核线程就会被加入到分配队列中。,CPU 调度,5.5 分时/交互类型分配参数表 分时类分配参数表就是一列数,每个优先级一行。该表格根据线程优先级排序,同时提供该线程的进度参数。初始时,根据quan

36、tum参数分配CPU时间(以时钟ticks为单位)。如果处理使用大量的CPU时间,超过了分配的CPU时间(ts_quantum),同时根据ts_tqexq指定新的优先级。新的优先级常常比原先的优先级小10,但取得了更长的时间片。因等待系统资源而被阻止(block)的线程将当它返回用户模式时被分配ts_slpret 定义的优先级。如果线程在ts_maxwait秒内没有使用完时间限额,其优先级升至ts_lwait(ts_maxwait数值为0等于1秒)。,CPU 调度,CPU 调度,CPU 调度,当改变特定优先级的时间数值大小时,你改变了线程使用的CPU状态。例如,为了获得更好的性能,增加quan

37、tum数值时,必须确信线程使用的数据仍然在CPU的缓存中。减少quantum数值时,I/O密集的任务性能提高,因为进入和离开CPU加快。如果你的工作在I/O和CPU之间变化很小时,你可以缓慢改变ts_tqexp和ts_slpret数值来提高和减少优先级。,CPU 调度,5.6 dispadmin 命令 该命令能够显示或改变调度参数。options:-l 列出有效的调度类型;-c class 指定要显示或改变调度参数的类型;-g 显示配置参数;-s file 从文件中设置参数。,CPU 调度,该命令能够提供当前激活的、加载的类的列表(-l),或允许你检测或改变当前表,如修改TS表,步骤:1、保存

38、当前表到一个文件#dispadmin c TS g tfile 2、编辑tfile,修改表 3、激活修改过的表(重新启动后生效)#dispadm c TS s tfile,CPU 调度,dispadmin示例,CPU 调度,5.7 交互调度类 交互进度类是基于分时类的,使用了分时类大部分的代码和数据结构。该类增强了交互应用的性能。OpenWindows或CDE缺省使用交互进度类,它自动给活动窗口内任务的优先级加上10,通过这项功能,给用户等待的任务获得更好的性能。当活动窗口改变,新的活动窗口将获得优先级增加。如果当前激活的进程通过nice或priocntl命令,已经获得了优先级调整,无论优先级

39、是增加还是降低了,则优先级将不再提升(指优先级自动增加10)。,CPU 调度,5.8 实时调度类 硬实时系统必须在一段时间内(the latency)响应中断或其他外部事件,否则问题会产生。在SunOS环境中没有提供一个硬实时功能,它提供了一个软实时功能,即系统试图运行一个实时线程时,系统将尽一切可能提供一个实时进度,通常会在小于一毫秒。实时任务对系统由明显的影响,应该慎重使用。它比系统线程具有更高的优先级。决不要将一般功能的程序,如数据库管理系统(DBMS),置为实时类来提高其性能。,CPU 调度,关于实时调度类的讨论 实时调度的线程对其他竞争系统资源的处理有影响,尤其:很大所有其页面锁定在

40、内存中,预留了可能需要大量的主存储空间。计算密集如果它们要使用大量的CPU时间,它会阻止系统线程获取CPU。派生其他进程子进程将从其父进程中继承优先级,除非运用了priocntl命令。循环堵塞在一个小的系统中很难中止一个失控的实时线程,因此分时线程可能被锁定。,CPU 调度,需要实时进程,要注意:1、实时进程不象分时线程那样可以改变优先级,在其运行期间,其优先级是固定的。2、尽量使用应用线程。通过priocntl系统调用,固定LWP的线程被放至实时类,对系统只有很小的影响,同时能够将实时和普通任务很容易分开。3、如果你考虑道实时分配的等待时间,在/etc/system文件中设置hires_ti

41、ck为1。其将系统时钟运行在1000Hz而不是100Hz。虽然它会对中断处理CPU产生大量负荷,但是实时任务会很快被分配。,CPU 调度,5.9 priocntl 命令 priocntl命令用来改变一个进程的进度状态,或使用priocntl系统调用一个独立的LWP。使用priocntl命令或调用,你可以改变:1、调度类别 2、类中相对的优先级 3、时间片大小 options:-l 列出当前加载的调度类型;-d 显示出进程的调度参数;-s 设置进程的调度参数;-e-c class 创建新进程。-p 指定优先级;-t 时间片(time quantum),CPU 调度,#priocntl-e-c R

42、T-p 50-t 500 ps-ecf-c RT:实时类-p 50:相对优先级(绝对优先级为150)-t 500:时间片 500毫秒,CPU 调度,5.10 内核线程分配,CPU 调度,老进程:当一个更高优先级线程放到分配队列或线程使用完它的时间片,交换请求被调用。它有两个职责:从CPU中移去当前的线程,在当前位置分配一个新的进程。第一个调用是启动一个调度类进程,允许调度类执行任何必须的任务。这些进程检测移去的线程放至分配队列的前面还是后面。如果线程没有用完其时间片,线程将放到分配队列的前面。因为每个CPU都有自己的分配队列,所以必须知道CPU的队列应该放至哪里。对于分时线程,选择取决于:1、

43、如果线程运行小于三个CPU时间片(ticks),它被放到上次执行任务的CPU分配队列上。2、不然,选择当前运行最低优先级线程的CPU。,CPU 调度,新线程 当一个被替换的线程放至分配队列中,一个新的线程必须选择在CPU上运行。被选择的线程装载到CPU运行。如果被选择的线程就是刚刚从CPU移走的线程,那么线程就会直接运行,因为它已经被加载到CPU上了。,CPU 调度,5.11 处理器的设置1、pbind 控制和查询进程和处理器的绑定关系。#pbind b 2 10966;将10966进程绑定在处理器2上。#pbind q 10966 12345;显示绑定关系。process id 10966:

44、2 process id 12345:no bound#pbind u 10966;取消绑定关系。,CPU 调度,2、prtinfo 显示配置后的处理器的信息。#psrinfo 0 on-line since 09/22/01 17:38:10 1 off-line since 09/22/01 17:38:103、psradm-设置处理器在线或离线#psradm-f 1;将处理器1设置为off-line.#psradm n 1;将处理器1设置为on-line.,CPU 调度,5.12 cpu 的控制和监控有许多命令可以提供CPU控制和状态信息:mpstat显示单个CPU活动统计 psrinf

45、o那个CPU被激活和其速度 psradm使能/关闭CPU/usr/platform/sun4x/sbin/prtdiag打印系统硬件配置和诊断信息 prtconf显示设备配置 sysdef显示软件配置 psrset管理处理器设定,CPU 调度,6.1 cache 的定义 cache 用于保留最近被使用过的有效的数据,这将加快对数据的访问速度。cpu、I/O 子系统有硬件cache,软件cache主要是文件系统信息。cache 通常只保留有效数据的很小的一部分,有时小于0.1%,因此,Cache包含关键、有效的可能被运用的数据。6.2 硬件cache 最为常见的cache是CPU cache,现

46、在的CPU cache 都包含至少两级Cache,即一级cache 和二级cache.一级cache,也叫内部cache,通常大小为32k bytes。二级cache,也叫外部cache,大小从0.5M 到8M。,system cache,CPU包含虚拟地址转换cache,也叫做TLB(translation lookaside buffer),DLAT(dynamic lookaside table),PDC(page descriptor cache)。硬件I/O子系统有不同的cache,它所保留的是系统与各种外围设备之间传输的数据。6.3 SRAM 和DRAM 大部分的cache是SRA

47、M(static random access memory),而系统的内存是DRAM(dynamic RAM)。SRAM每个bit用4个晶体管,而DRAM每个bit用1晶体管 DRAM存在一个问题,它的电荷会随时间而衰减,通常每隔10个系统时间周期DRAM的内容就需要刷新(重写)。重写包括把数据读到memory控制器然后再写回DRAM。,system cache,当DRAM开始刷新时,这个过程将非常忙碌,数据将不能读出,也不能写入。SRAM 没有刷新的需要,数据放置在SRAM里永远有效。它通常用于需要高性能访问的地方,如cache。6.4 CPU cache CPU有两种级别的cache,一级

48、cache和二级cache。一级cache的大小一般为4-40K bytes,它是CPU的一部分。二级cache的大小一般为0.5-8M,它不在CPU芯片上。一级cache以CPU的速度运转,迅速地为CPU提供数据。数据在被CPU处理之前,必须被调到一级cache里,system cache,6.5 Cache的操作 所有的cache,包括已硬件cache和软件cache,它们的工作方式是类似的。请求信息传递给cache 控制器或者是特殊的数据片管理。数据通过它的tag 来识别的,tag 可能是它的地址或者是能唯一标记它的属性。如果数据在cache里被找到,它会被返回给请求者。这就是cache

49、 hit(cache 捕获)。如果数据在cache里没有被找到,它必须向下一级cache发出请求。这就是cache miss(cache 未捕获)。当cache miss 时,请求者必须等待,或者处理其它的工作,直到被请求的数据被找到。,system cache,6.6 cache miss 的过程 因为效率的原因,cache 通常100%用于保存数据。当cache miss 发生时,新的数据必须补充到cache里,这个过程叫“move in”。这时需要替换cache里已经存在的数据。替换发生时,必须为进来的数据寻找位置。数据的花销已经在Cache里出现了。根据cache的设计,cache里或

50、许只有一个位置能存放新数据,或者有多个。如果有多个,对性能损害更少的位置将被选择。用于寻找位置的运算法则为旧的、很长时间不用的位置赋上最小值并选择它作为进来数据的新位置。这种算法叫LRU(least recontly Used),system cache,6.7 cache 的交换 当进来的数据的位置被找到以后,系统并不马上将新数据拷贝到这个位置。在进来的数据放置之前,当前的数据必须被移出(moved out),或flushed.并将其备份到下一级的cache上。如果在下一级已经有此数据存在,则数据将被丢弃。然后新进来的数据才被拷贝到这个位置上。在moved out 结束之后,move in开

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号