学校什么卖手机的地方贴膜贵吗可以电脑贴膜

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
如题,我想查看某个进程的读写次数,读写数据量等信息,不知道linux下有没有这样的工具,多谢!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章:0
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
回复 #2 7717060 的帖子
lsof是查看文件被哪些进程读写,但是我并不知道我关注的进程会读写哪些文件,它有可能读写多个文件,也有可能不读写任何文件,我只是想知道这个进程读写的总次数还有数据量的大小
论坛徽章:0
原帖由 rjxsuper 于
17:09 发表
lsof是查看文件被哪些进程读写,但是我并不知道我关注的进程会读写哪些文件,它有可能读写多个文件,也有可能不读写任何文件,我只是想知道这个进程读写的总次数还有数据量的大小
那就不知道了,等待答案!
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
原帖由 7717060 于
17:12 发表
那就不知道了,等待答案!
thank you all the same
论坛徽章:0
原帖由 rjxsuper 于
17:18 发表
thank you all the same
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
论坛徽章:0
回复 #2 7717060 的帖子
lsof 只能看到到这个进程打开的文件数量中国领先的IT技术网站
51CTO旗下网站
如何在Linux中查看所有正在运行的进程
进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。在Linux系统中有很多命令。那么哪些命令可以查看所有运行中的进程呢?让我们听飞哥介绍一下。
作者:飞哥来源:飞哥博客| 13:26
你可以使用ps命令。它能显示当前运行中进程的相关信息,包括进程的PID。Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息。ps命令能提供一份当前进程的快照。如果你想状态可以自动刷新,可以使用top命令。
输入下面的ps命令,显示所有运行中的进程:
# ps aux | less
-A:显示所有进程
a:显示终端中包括其它用户的所有进程
x:显示无控制终端的进程
任务:查看系统中的每个进程。
任务:查看非root运行的进程
# ps -U root -u root -N
任务:查看用户vivek运行的进程
# ps -u vivek
任务:top命令
top命令提供了运行中系统的动态实时视图。在命令提示行中输入top:
图1:top命令:显示Linux任务
按q退出,按h进入帮助。
任务:显示进程的树状图。
pstree以树状显示正在运行的进程。树的根节点为pid或init。如果指定了用户名,进程树将以用户所拥有的进程作为根节点。
输出示例:
图2:pstree - 显示进程的树状图
任务:使用ps列印进程树
任务:获得线程信息
输入下列命令:
任务:获得安全信息
输入下列命令:
# ps -eo euser,ruser,suser,fuser,f,comm,label
任务:将进程快照储存到文件中
输入下列命令:
# top -b -n1 & /tmp/process.log
你也可以将结果通过邮件发给自己:
# top -b -n1 | mail -s 'Process snapshot'
任务:查找进程
使用pgrep命令。pgrep能查找当前正在运行的进程并列出符合条件的进程ID。例如显示firefox的进程ID:
$ pgrep firefox
下面命令将显示进程名为sshd、所有者为root的进程。
$ pgrep -u root sshd
向htop和atop说hello
htop是一个类似top的交互式进程查看工具,但是可以垂直和水平滚动来查看所有进程和他们的命令行。进程的相关操作(killing,renicing)不需要输入PID。要安装htop输入命令:
# apt-get install htop
# yum install htop
在命令提示行中输入htop:
输出示例:
图3:htop - Interactive Linux / UNIX process viewer
atop是一个用来查看Linux系统负载的交互式监控工具。它能展现系统层级的关键硬件资源(从性能角度)的使用情况,如CPU、内存、硬盘和网络。
它也可以根据进程层级的CPU和内存负载显示哪个进程造成了特定的负载;如果已经安装内核补丁可以显示每个进程的硬盘和网络负载。输入下面的命令启动atop:
输出示例:
图4:AT Computing's System & Process Monitor
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条外电头条外电
24H热文一周话题本月最赞
讲师:21人学习过
讲师:7人学习过
讲师:3人学习过
精选博文论坛热帖下载排行
本书全面介绍了Windows Server 2003 R2中最常用的各种服务,包括域名服务、动态IP地址服务、Windows名称服务、活动目录服务、Web服务、FTP...
订阅51CTO邮刊2610人阅读
linux(43)
Linux 性能查看命令:
Linux性能监测:CPU篇
& & & CPU&的占用主要取决于什么样的资源正在&CPU&上面运行,比如拷贝一个文件通常占用较少&CPU,因为大部分工作是由&DMA(Direct&Memory&Access)完成,只是在完成拷贝以后给一个中断让&CPU&知道拷贝已经完成;科学计算通常占用较多的&CPU,大部分计算工作都需要在&CPU&上完成,内存、硬盘等子系统只做暂时的数据存储工作。要想监测和理解&CPU&的性能需要知道一些的操作系统的基本知识,比如:中断、进程调度、进程上下文切换、可运行队列等。这里&VPSee&用个例子来简单介绍一下这些概念和他们的关系,CPU&很无辜,是个任劳任怨的打工仔,每时每刻都有工作在做(进程、线程)并且自己有一张工作清单(可运行队列),由老板(进程调度)来决定他该干什么,他需要&和老板沟通以便得到老板的想法并及时调整自己的工作(上下文切换),部分工作做完以后还需要及时向老板汇报(中断),所以打工仔(CPU)除了做自己该做&的工作以外,还有大量时间和精力花在沟通和汇报上。
& & & CPU&也是一种硬件资源,和任何其他硬件设备一样也需要驱动和管理程序才能使用,我们可以把内核的进程调度看作是&CPU&的管理程序,用来管理和分配&CPU&资源,合理安排进程抢占&CPU,并决定哪个进程该使用&CPU、哪个进程该等待。操作系统内核里的进程调度主要用来调度两类资源:进程(或线程)和中断,进程调度给不同的资源分配了不同的优先级,优先级最高的&是硬件中断,其次是内核(系统)进程,最后是用户进程。每个&CPU&都维护着一个可运行队列,用来存放那些可运行的线程。线程要么在睡眠状态(blocked&正在等待&IO)要么在可运行状态,如果&CPU&当前负载太高而新的请求不断,就会出现进程调度暂时应付不过来的情况,这个时候就不得不把线程暂时放到可运行队列里。VPSee&在这里要讨论的是性能监测,上面谈了一堆都没提到性能,那么这些概念和性能监测有什么关系呢?关系重大。如果你是老板,你如何检查打工仔的效率(性能)&呢?我们一般会通过以下这些信息来判断打工仔是否偷懒:
·&&&&打工仔接受和完成多少任务并向老板汇报了(中断);
·&&&&打工仔和老板沟通、协商每项工作的工作进度(上下文切换);
·&&&&打工仔的工作列表是不是都有排满(可运行队列);
·&&&&打工仔工作效率如何,是不是在偷懒(CPU&利用率)。
& & &现在把打工仔换成&CPU,我们可以通过查看这些重要参数:中断、上下文切换、可运行队列、CPU&利用率来监测&CPU&的性能。
Linux&性能监测:介绍提到了性能监测前需要知道底线,那么监测&CPU&性能的底线是什么呢?通常我们期望我们的系统能到达以下目标:
·&&&&CPU&利用率,如果&CPU&有&100%&利用率,那么应该到达这样一个平衡:65%-70%&User&Time,30%-35%&System&Time,0%-5%&Idle&Time;
·&&&&上下文切换,上下文切换应该和&CPU&利用率联系起来看,如果能保持上面的&CPU&利用率平衡,大量的上下文切换是可以接受的;
·&&&&可运行队列,每个可运行队列不应该有超过1-3个线程(每处理器),比如:双处理器系统的可运行队列里不应该超过6个线程。
cpu监控分为两种:cpu使用率和IPC/CPI,两者的应用场景也不相同,
通常使用的是cpu使用率监控,基本上操作系统都会提供,
IPC/CPI监控则需要性能专家的协助,操作系统上基本没有相关的指令
cpu的使用率需要关注用户态cpu使用率和系统态cpu使用率,前者表示系统上运行业务获得cpu的执行时间占总cpu时间的百分比,后者表示系统获得cpu时间的百分比。对用户而言,用户态cpu百分比为100%是最理想的状况,但这通常不可能,当出现程序调度、线程上下文切换以及IO交互的时候,系统态cpu使用率会较多的增长。应当明确的是,应用消耗很多CPU并不意味着性能或者扩展性达到了最高或瓶颈。如果长时间出现系统态cpu使用率居高不下,那么就需要关注,有可能是程序写的不优雅,有可能是磁盘即将损坏导致IO消耗时间过长,这时候就需要cpu监控从而分析得出结果
对计算密集型应用来首,只监控cpu使用率是不够的,还需要监控IPC(每时钟指令数)或CPI(每指令时钟周期)。为什么需要知道这一项数据?IPC或CPI都可以反映了没有指令被执行的时候占用cpu时钟周期的百分比,简而言之就是CPU等待指令从内存中装入寄存器消耗时间的百分比,即停滞(stall)。停滞——当cpu执行指令而所用到的操作数不在寄存器或缓存中并且当前钟周期还未失效时,cpu就需要停滞等待数据从内存中装入寄存器,停滞一旦发生,通常会浪费几百个cpu时钟周期。要想提高计算密集型应用的性能,就需要获得IPC/CPI监控数据,减少停滞减少cpu等待内存数据时间或改善高速缓存。
Linux性能监测:内存篇
& & & 这里的讲到的&“内存”&包括物理内存和虚拟内存,虚拟内存(Virtual&Memory)把计算机的内存空间扩展到硬盘,物理内存(RAM)和硬盘的一部分空间(SWAP)组合在一起作为虚拟内存为计算机提供了一个连贯的虚拟内&存空间,好处是我们拥有的内存&”变多了“,可以运行更多、更大的程序,坏处是把部分硬盘当内存用整体性能受到影响,硬盘读写速度要比内存慢几个数量级,并且&RAM&和&SWAP&之间的交换增加了系统的负担。
在操作系统里,虚拟内存被分成页,在&x86&系统上每个页大小是&4KB。Linux&内核读写虚拟内存是以&“页”&为单位操作的,把内存转移到硬盘交换空间(SWAP)和从交换空间读取到内存的时候都是按页来读写的。内存和&SWAP&的这种交换过程称为页面交换(Paging),值得注意的是&paging&和&swapping&是两个完全不同的概念,国内很多参考书把这两个概念混为一谈,swapping&也翻译成交换,在操作系统里是指把某程序完全交换到硬盘以腾出内存给新程序使用,和&paging&只交换程序的部分(页面)是两个不同的概念。纯粹的&swapping&在现代操作系统中已经很难看到了,因为把整个程序交换到硬盘的办法既耗时又费力而且没必要,现代操作系统基本都是&paging&或者&paging/swapping&混合,swapping&最初是在&Unix&system&V&上实现的。
& & &虚拟内存管理是&Linux&内核里面最复杂的部分,要弄懂这部分内容可能需要一整本书的讲解。VPSee&在这里只介绍和性能监测有关的两个内核进程:kswapd&和&pdflush。
o&&&&kswapd&daemon&用来检查&pages_high&和&pages_low,如果可用内存少于&pages_low,kswapd&就开始扫描并试图释放&32个页面,并且重复扫描释放的过程直到可用内存大于&pages_high&为止。扫描的时候检查3件事:1)如果页面没有修改,把页放到可用内存列表里;2)如果页面被文件系统修改,把页面内容写到磁盘上;3)如果页面被修改&了,但不是被文件系统修改的,把页面写到交换空间。
o&&&&pdflush&daemon&用来同步文件相关的内存页面,把内存页面及时同步到硬盘上。比如打开一个文件,文件被导入到内存里,对文件做了修改后并保存后,内核并不马上保存文件到硬&盘,由&pdflush&决定什么时候把相应页面写入硬盘,这由一个内核参数&vm.dirty_background_ratio&来控制,比如下面的参数显示脏页面(dirty&pages)达到所有内存页面10%的时候开始写入硬盘。
Linux性能监测:磁盘IO篇
磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离&CPU&距离最远而且&CPU&访问磁盘要涉及到机械操作,比如转轴、寻轨等。访问硬盘和访问内存之间的速度差别是以数量级来计算的,就像1天和1分钟的差别一样。要监测&IO&性能,有必要了解一下基本原理和&Linux&是如何处理硬盘和内存之间的&IO&的。&内存页&上一篇&Linux&性能监测:Memory&提到了内存和硬盘之间的&IO&是以页为单位来进行的,在&Linux&系统上1页的大小为&4K。可以用以下命令查看系统默认的页面大小:&
$ /usr/bin/time -vdate
Page size (bytes): 4096
缺页中断&& & &Linux&利用虚拟内存极大的扩展了程序地址空间,使得原来物理内存不能容下的程序也可以通过内存和硬盘之间的不断交换(把暂时不用的内存页交换到硬盘,把需要的内&存页从硬盘读到内存)来赢得更多的内存,看起来就像物理内存被扩大了一样。事实上这个过程对程序是完全透明的,程序完全不用理会自己哪一部分、什么时候被&交换进内存,一切都有内核的虚拟内存管理来完成。当程序启动的时候,Linux&内核首先检查&CPU&的缓存和物理内存,如果数据已经在内存里就忽略,如果数据不在内存里就引起一个缺页中断(Page&Fault),然后从硬盘读取缺页,并把缺页缓存到物理内存里。缺页中断可分为主缺页中断(Major&Page&Fault)和次缺页中断(Minor&Page&Fault),要从磁盘读取数据而产生的中断是主缺页中断;数据已经被读入内存并被缓存起来,从内存缓存区中而不是直接从硬盘中读取数据而产生的中断是次&缺页中断。&&
& &上面的内存缓存区起到了预读硬盘的作用,内核先在物理内存里寻找缺页,没有的话产生次缺页中断从内存缓存里找,如果还没有发现的话就从硬盘读取。很&显然,把多余的内存拿出来做成内存缓存区提高了访问速度,这里还有一个命中率的问题,运气好的话如果每次缺页都能从内存缓存区读取的话将会极大提高性能。&要提高命中率的一个简单方法就是增大内存缓存区面积,缓存区越大预存的页面就越多,命中率也会越高。下面的&time&命令可以用来查看某程序第一次启动的时候产生了多少主缺页中断和次缺页中断:&
$ /usr/bin/time -vdate
Major (requiring I/O) page faults: 1
Minor (reclaiming a frame) page faults: 260
File&Buffer&Cache&
& & &从上面的内存缓存区(也叫文件缓存区&File&Buffer&Cache)读取页比从硬盘读取页要快得多,所以&Linux&内核希望能尽可能产生次缺页中断(从文件缓存区读),并且能尽可能避免主缺页中断(从硬盘读),这样随着次缺页中断的增多,文件缓存区也逐步增大,直到系&统只有少量可用物理内存的时候&Linux&才开始释放一些不用的页。我们运行&Linux&一段时间后会发现虽然系统上运行的程序不多,但是可用内存总是很少,这样给大家造成了&Linux&对内存管理很低效的假象,事实上&Linux&把那些暂时不用的物理内存高效的利用起来做预存(内存缓存区)呢。下面打印的是&VPSee&的一台&Sun&服务器上的物理内存和文件缓存区的情况:&
$ cat /proc/meminfo
MemTotal:&&&&& 8182776 kB
MemFree:&&&&&& 3053808 kB
Buffers:&&&&&&& 342704 kB
Cached:&&&&&&& 3972748 kB
& & 这台服务器总共有&8GB&物理内存(MemTotal),3GB&左右可用内存(MemFree),343MB&左右用来做磁盘缓存(Buffers),4GB&左右用来做文件缓存区(Cached),可见&Linux&真的用了很多物理内存做&Cache,而且这个缓存区还可以不断增长。&
Linux&中内存页面有三种类型:&
·&&&&Read&pages,只读页(或代码页),那些通过主缺页中断从硬盘读取的页面,包括不能修改的静态文件、可执行文件、库文件等。当内核需要它们的时候把它们读到&内存中,当内存不足的时候,内核就释放它们到空闲列表,当程序再次需要它们的时候需要通过缺页中断再次读到内存。&
·&&&&Dirty&pages,脏页,指那些在内存中被修改过的数据页,比如文本文件等。这些文件由&pdflush&负责同步到硬盘,内存不足的时候由&kswapd&和&pdflush&把数据写回硬盘并释放内存。&
·&&&&Anonymous&pages,匿名页,那些属于某个进程但是又和任何文件无关联,不能被同步到硬盘上,内存不足的时候由&kswapd&负责将它们写到交换分区并释放内存。&
IO’s&Per&Second(IOPS)&
& & & 每次磁盘&IO&请求都需要一定的时间,和访问内存比起来这个等待时间简直难以忍受。在一台&2001&年的典型&1GHz&PC&上,磁盘随机访问一个&word&需要&8,000,000&nanosec&=&8&millisec,顺序访问一个&word&需要&200&nanosec;而从内存访问一个&word&只需要&10&nanosec.(数据来自:Teach&Yourself&Programming&in&Ten&Years)这个硬盘可以提供&125&次&IOPS(1000&ms&/&8&ms)。&
顺序&IO&和&随机&IO&
& & &IO&可分为顺序&IO&和&随机&IO&两种,性能监测前需要弄清楚系统偏向顺序&IO&的应用还是随机&IO&应用。顺序&IO&是指同时顺序请求大量数据,比如数据库执行大量的查询、流媒体服务等,顺序&IO&可以同时很快的移动大量数据。可以这样来评估&IOPS&的性能,用每秒读写&IO&字节数除以每秒读写&IOPS&数,rkB/s&除以&r/s,wkB/s&除以&w/s.&下面显示的是连续2秒的&IO&情况,可见每次&IO&写的数据是增加的(45060.00&/&99.00&=&455.15&KB&per&IO,54272.00&/&112.00&=&484.57&KB&per&IO)。相对随机&IO&而言,顺序&IO&更应该重视每次&IO&的吞吐能力(KB&per&IO):&
$ iostat -kx 1
avg-cpu:& %user&& %nice
%system %iowait& %steal&& %idle
&&&&&&&&&&&0.00&&& 0.00&&& 2.50&& 25.25&&& 0.00&& 72.25
Device:& rrqm/s&&
wrqm/s&& r/s&&w/s&&&
rkB/s&&&wkB/s
avgrq-sz avgqu-sz&& await& svctm& %util
sdb&&&&&& 24.00 .00 99.00& 60.00&& 770.12&&& 45.01& 539.65&& 7.80& 99.80
avg-cpu:& %user&& %nice
%system %iowait& %steal&& %idle
&&&&&&&&&&&0.00&&& 0.00&&& 1.00&& 30.67&&& 0.00&& 68.33
Device:& rrqm/s&&
wrqm/s&& r/s&&w/s&&&
rkB/s&&&wkB/s
avgrq-sz avgqu-sz&& await& svctm& %util
sdb&&&&&&& 3.00 .00 112.00&& 768.00 54272.00&& 957.22&& 144.85& 576.44&& 8.70 100.10
& & &随机&IO&是指随机请求数据,其&IO&速度不依赖于数据的大小和排列,依赖于磁盘的每秒能&IO&的次数,比如&Web&服务、Mail&服务等每次请求的数据都很小,随机&IO&每秒同时会有更多的请求数产生,所以磁盘的每秒能&IO&多少次是关键。&
$ iostat -kx 1
avg-cpu:& %user&& %nice
%system %iowait& %steal&& %idle
&&&&&&&&&&&1.75&&& 0.00&&& 0.75&&& 0.25&&& 0.00&& 97.26
Device:& rrqm/s&&
wrqm/s&& r/s&&w/s&&&
rkB/s&&&wkB/s
avgrq-sz avgqu-sz&& await& svctm& %util
sdb&&&&&&& 0.00&&& 52.00& 0.00 57.00&&&& 0.00&& 436.00&&& 15.30&&&& 0.03&&& 0.54&& 0.23&& 1.30
avg-cpu:& %user&& %nice
%system %iowait& %steal&& %idle
&&&&&&&&&&&1.75&&& 0.00&&& 0.75&&& 0.25&&& 0.00&& 97.24
Device:& rrqm/s&&
wrqm/s&& r/s&&w/s&&&
rkB/s&&&wkB/s
avgrq-sz avgqu-sz&& await& svctm& %util
sdb&&&&&&& 0.00&&& 56.44& 0.00 66.34&&&& 0.00&& 491.09&&& 14.81&&&& 0.04&&& 0.54&& 0.19&& 1.29
& & &按照上面的公式得出:436.00&/&57.00&=&7.65&KB&per&IO,491.09&/&66.34&=&7.40&KB&per&IO.&与顺序&IO&比较发现,随机&IO&的&KB&per&IO&小到可以忽略不计,可见对于随机&IO&而言重要的是每秒能&IOPS&的次数,而不是每次&IO&的吞吐能力(KB&per&IO)。&
& & & 当系统没有足够物理内存来应付所有请求的时候就会用到&swap&设备,swap&设备可以是一个文件,也可以是一个磁盘分区。不过要小心的是,使用&swap&的代价非常大。如果系统没有物理内存可用,就会频繁&swapping,如果&swap&设备和程序正要访问的数据在同一个文件系统上,那会碰到严重的&IO&问题,最终导致整个系统迟缓,甚至崩溃。swap&设备和内存之间的&swapping&状况是判断&Linux&系统性能的重要参考,我们已经有很多工具可以用来监测&swap&和&swapping&情况,比如:top、cat&/proc/meminfo、vmstat&等:&
$ cat /proc/meminfo
MemTotal:&&&&& 8182776 kB
MemFree:&&&&&& 2125476 kB
Buffers:&&&&&&& 347952 kB
Cached:&&&&&&& 4892024 kB
SwapCached:&&&&&&& 112 kB
SwapTotal:&&&& 4096564 kB
SwapFree:&&&&& 4096424 kB
Linux性能监测:网络篇
& & &网络的监测是所有&Linux&子系统里面最复杂的,有太多的因素在里面,比如:延迟、阻塞、冲突、丢包等,更糟的是与&Linux&主机相连的路由器、交换机、无线信号都会影响到整体网络并且很难判断是因为&Linux&网络子系统的问题还是别的设备的问题,增加了监测和判断的复杂度。现在我们使用的所有网卡都称为自适应网卡,意思是说能根据网络上的不同网络设备导致的不&同网络速度和工作模式进行自动调整。我们可以通过&ethtool&工具来查看网卡的配置和工作模式:&
# /sbin/ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes:&& 10baseT/Half10baseT/Full
&&&&&&&&&&&&&&&&&&&&&&&&100baseT/Half100baseT/Full
&&&&&&&&&&&&&&&&&&&&&&&&1000baseT/Half1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:& 10baseT/Half10baseT/Full
&&&&&&&&&&&&&&&&&&&&&&&&100baseT/Half100baseT/Full
&&&&&&&&&&&&&&&&&&&&&&&&1000baseT/Half1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: g
Current message level: 0x000000ff (255)
Link detected: yes
& & &上面给出的例子说明网卡有&10baseT,100baseT&和&1000baseT&三种选择,目前正自适应为&100baseT(Speed:&100Mb/s)。可以通过&ethtool&工具强制网卡工作在&1000baseT&下:&
/sbin/ethtool -s eth0 speed 1000 duplex full autoneg off
Linux性能监测:常用命令
1 :uptime & &查看当前系统的负载状况
09:50:21 up 200 days, 15:07, 1 user, load average: 0.27, 0.33, 0.3
2:dmesg |tail &查看开机打印信息和环形缓冲区的内容。
3 :vmstat & 监控系统(内存,cpu,磁盘,io,网卡)状态
vmstat 1 表示每秒钟采集一次。
vmstat 1 10 表示每秒钟采集一次,共十次。
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
&r &b & swpd & free & buff &cache & si & so & &bi & &bo & in & cs us sy id wa st
&1 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 5 & &4 & 16 &5 &6 89 &0 &0
&0 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 0
&7 &9 84 &0 &0
&0 &0 & & &0 676 1280388 & &0 & &0 & & 0 & &16 &439
&0 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 0 &699
&1 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 0
&6 &8 86 &0 &0
&0 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 0 &660
&1 &0 & & &0 676 1280388 & &0 & &0 & & 0 & &20
&7 &8 85 &0 &0
&2 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 4
19 67 &0 &0
&0 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 0
&5 &4 90 &0 &0
&0 &0 & & &0 676 1280388 & &0 & &0 & & 0 & & 0 &589
procs(进程):
r 表示等待可用cpu 资源的进程数量(如果长时间该值超过处理器硬件线程个数一倍,需要关注了。)。
硬件线程个数 :dmesg |grep CPU可以查看。
b 表示阻塞的进程个数(阻塞是说需要其他资源,比如io)
swap(交换分区):两个值都大就表示系统内存资源紧张。
si: &每秒钟从磁盘写入swap的大小,
so: 每秒从内存写入swap的大小
swap已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器,如果swpd不为0,但是si,so的值长期为0,不影响系统性能
free :空闲的物理内存多大小。
buff:用来存储,目录里面有什么内容,权限等的缓存
cache:直接用来记忆我们打开的文件,给文件做缓冲
bi:从磁盘或者swap读取到ram,每秒读取的块数。
bo: 从ram写入到磁盘或者swap,每秒写入的块数。
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大
in:每秒中断数,包括时钟中断。
cs:每秒上下文切换数。
例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us:用户CPU时间,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy:系统CPU时间,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
id:空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wa ,st:等待IO CPU时间,:wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
案例分析1:
1.&&&&interrupts(in)非常高,context&switch(cs)比较低,说明这个&CPU&一直在不停的请求资源;&
2.&&&&user&time(us)一直保持在&80%&以上,而且上下文切换较低(cs),说明某个进程可能一直霸占着&CPU;&
3.&&&&run&queue(r)刚好在4个。&
案例分析2 :
1.&&&&context&switch(cs)比&interrupts(in)要高得多,说明内核不得不来回切换进程;
2.&&&&进一步观察发现&system&time(sy)很高而&user&time(us)很低,而且加上高频度的上下文切换(cs),说明正在运行的应用程序调用了大量的系统调用(system&call);
3.&&&&run&queue(r)在14个线程以上,按照这个测试机器的硬件配置(四核),应该保持在12个以内。
案例分析3:
&. 物理可用内存&free&基本没什么显著变化,swapd&逐步增加,说明最小可用的内存始终保持在&256MB&X&10%&=&2.56MB&左右,当脏页达到10%的时候(vm.dirty_background_ratio&=&10)就开始大量使用&swap;&
·&&&&buff&稳步减少说明系统知道内存不够了,kwapd&正在从&buff&那里借用部分内存;&
·&&&&kswapd&持续把脏页面写到&swap&交换区(so),并且从&swapd&逐渐增加看出确实如此。根据上面讲的&kswapd&扫描时检查的三件事,如果页面被修改了,但不是被文件系统修改的,把页面写到&swap,所以这里&swapd&持续增加。&
4:mpstat (multiprocessor status)&实时系统监控工具 (主要是cpu)
mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间、
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。
mpstat& -P ALL 2 3& 2秒一次,共三次,监控所有cpu的时间。
mpstat& 系统启动到现在的cpu 效率平均值。
11时16分50秒& CPU& & %usr & %nice& & %sys %iowait& & %irq & %soft& %steal& %guest & %idle
11时16分51秒& all & 11.56& & 0.00 & 17.34& & 0.00& & 0.00& & 0.00& & 0.00& & 0.00 & 71.11
11时16分51秒& & 0& & 1.98& & 0.00& & 0.99& & 0.00& & 0.00& & 0.00& & 0.00& & 0.00 & 97.03
11时16分51秒& & 1 & 15.15& & 0.00 & 22.22& & 0.00& & 0.00& & 0.00& & 0.00& & 0.00 & 62.63
11时16分51秒& & 2 & 12.00& & 0.00 & 18.00& & 0.00& & 0.00& & 0.00& & 0.00& & 0.00 & 70.00
11时16分51秒& & 3 & 18.00& & 0.00 & 29.00& & 0.00& & 0.00& & 0.00& & 0.00& & 0.00 & 53.00
CPU & &CPU 编号,all 那行是所有CPU的平均统计值。
%user &在监控的时间间隔内,用户级进程(运用程序)占用的CPU时间百分比。
%nice &在监控的时间间隔内,nice值为负的用户级进程所占用的CPU时间百分比。
%sys & 在监控的时间间隔内,系统及进程(内核)占用的CPU使用率。该时间包括了系统处理软、硬中断所花的时间。
%iowait &在监控的时间间隔内,等待硬盘I/O的时间,CPU的闲置时间百分比。
%irq & 在监控的时间间隔内,CPU服务硬中断的所占的时间百分比。
%soft &在监控的时间间隔内,CPU服务软中断的所占的时间百分比。
%idle &在监控的时间间隔内,CPU闲置时间所占用的时间百分比,不包括等待磁盘IO请求的时间。
其中最重要的字段是%idle,%iowait。如果%idle 说明CPU的负载不高。如果%iowait,说明存在I/O竞争。&也可以使用输出重定向保存mpstat对CPU的监控数据,用作CPU历史使用率分析。
5 pidstat: 监控全部或者指定进程占用系统资源(cpu,内存,io,任务切换,线程等)的情况&
& pidstat -u 查看活动进程的数量。
15时12分54秒 & & & PID & &%usr %system &%guest & &%CPU & CPU &Command
15时12分55秒 & & &4906 & &0.00 & &0.98 & &0.00 & &0.98 & & 1 &pidstat
15时12分55秒 & & 25421 & &0.00 & &0.98 & &0.00 & &0.98 & & 3 &java
&11:37:19: pidstat获取信息时间点
PID:&进程pid
%usr:&进程在用户态运行所占cpu时间比率
%system:&进程在内核态运行所占cpu时间比率
%CPU:&进程运行所占cpu时间比率
CPU:&指示进程在哪个核运行
Command:&拉起进程对应的命令
pidstat -r &显示各个进程的内存使用状况
15:08:18 PID minflt/s majflt/s VSZ RSS %MEM Command
15:08:19& & & & .00& & & 0.00 1& mmmm
& & 15:08:20& & & & 1.00& & & 0.00 4& mmmm
& & 15:08:21& & & & 1.87& & & 0.00 9& mmmm
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page faut次数
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
VSZ:& & & 该进程使用的虚拟内存(以kB为单位)
RSS:& & & 该进程使用的物理内存(以kB为单位)
%MEM: & & 该进程使用内存的百分比
Command:& 拉起进程对应的命令
pidstat -p pid &查看指定进程cpu的内容,
pidstat -p pid -r &查看指定进程的内存信息
pidstat -p pid -d 查看指定进程的io 信息。
6: iostat &对磁盘(CPU、网卡、tty设备、磁盘、CD-ROM&等等设备的活动情况, 负载信息)操作活动进行监视
iostat &-c 显示cpu信息。
iostat &-d 显示磁盘信息。
iostat &-d -k 以kb为单位显示。
iostat &-d -m 以mb 为单位显示。
iostat -p 显示磁盘和分区的情况。
tps:该设备每秒的传输次数(Indicate&the&number&of&transfers&per&second&that&were&issued&to&the&device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
kB_read/s:每秒从设备(drive&expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive&expressed)写入的数据量;
kB_read:读取的总数据量;kB_wrtn:写入的总数量数据量;
iostat -xz&
avg-cpu: &%user & %nice %system %iowait &%steal & %idle
& & & & & &5.09 & &0.00 & &6.38 & &0.01 & &0.00 & 88.51
Device: & & & & rrqm/s & wrqm/s & & r/s & & w/s & rsec/s & wsec/s avgrq-sz avgqu-sz & await &svctm &%util
sda & & & & & & & 0.05 & & 3.35 & &0.05 & &1.74 & & 1.92 & &40.76 & &23.85 & & 0.00 & &1.74 & 0.56 & 0.10
dm-0 & & & & & & &0.00 & & 0.00 & &0.10 & &5.10 & & 1.90 & &40.76 & & 8.22 & & 0.06 & 11.14 & 0.19 & 0.10
dm-1 & & & & & & &0.00 & & 0.00 & &0.00 & &0.00 & & 0.00 & & 0.00 & & 8.00 & & 0.00 & &1.23 & 1.13 & 0.00
dm-2 & & & & & & &0.00 & & 0.00 & &0.00 & &0.00 & & 0.00 & & 0.00 & & 7.98 & & 0.00 & &0.64 & 0.47 & 0.00
rrqm/s:&&每秒进行&merge&的读操作数目。即&rmerge/s
wrqm/s:&&每秒进行&merge&的写操作数目。即&wmerge/s
r/s:&&每秒完成的读&I/O&设备次数。即&rio/s
w/s:&&每秒完成的写&I/O&设备次数。即&wio/s
rsec/s:&&每秒读扇区数。即&rsect/s
wsec/s:&&每秒写扇区数。即&wsect/s
rkB/s:&&每秒读K字节数。是&rsect/s&的一半,因为每扇区大小为512字节。
wkB/s:&&每秒写K字节数。是&wsect/s&的一半。
avgrq-sz:&&平均每次设备I/O操作的数据大小&(扇区)。
avgqu-sz:&&平均I/O队列长度。
await:&&平均每次设备I/O操作的等待时间&(毫秒)。
svctm:&平均每次设备I/O操作的服务时间&(毫秒)。
%util:&&一秒中有百分之多少的时间用于&I/O&操作,即被io消耗的cpu百分比
7 &free &查看内存 缓存 缓冲区使用情况。
& & & & & & & & &1&&&&&&&&& 2&&&&&&&&& 3&&&&&&&&& 4&&&&&&&&& 5&&&&&&&&& 6
1&&&&&&&&&&&&& total&&&&&& used&&&&&& free&&&& shared&&& buffers&&&& cached
2 Mem:&&&&& && &&& 1401396&&&&&&&&& 0&&&& 870540&&
3 -/+ buffers/cache:&& &&
4 Swap:&&&& &&&& 224188&&
A buffer is something that has yet to be &written& to disk.&
A cache is something that has been &read& from the disk and stored for later use.
FO[2][1] = FO[2][2] + FO[2][3]
对于FO[3][2],即-buffers/cache,表示一个应用程序认为系统被用掉多少内存;
对于FO[3][3],即+buffers/cache,表示一个应用程序认为系统还有多少内存
&FO[3][2] = FO[2][2] - FO[2][5] - FO[2][6]
&FO[3][3] = FO[2][3] + FO[2][5] + FO[2][6]
8: sar : 监控cpu,内存,磁盘等:
sar -u & &列出今天0点开始后的每十分钟一次的cpu统计信息列表。
sar -v & &列出今天0点开始后的每十分钟一次的&进程、I节点、文件和锁表状态
sar -d&列出今天0点开始后的每十分钟一次的 硬盘使用报告
sar -b &列出今天0点开始后的每十分钟一次的 缓冲区使用报告
sar -u 1 2 &每个1秒 一共2次检测 cpu 使用情况。
9 :top : 报告系统整体性能。
top - 17:06:25 up 7 days, &6:32, &2 users, &load average: 0.41, 0.73, 0.63
Tasks: 172 total, & 1 running, 171 sleeping, & 0 stopped, & 0 zombie
Cpu(s): &0.7%us, &0.7%sy, &0.0%ni, 98.5%id, &0.0%wa, &0.0%hi, &0.0%si, &0.0%st
Mem: &k total, &6853732k used, &3276064k free, & 231164k buffers
Swap: &8208380k total, & & & &0k used, &8208380k free, &1300188k cached
& PID USER & & &PR &NI &VIRT &RES &SHR S %CPU %MEM & &TIME+ &COMMAND
25421 root & & &20 & 0 m &15m S &4.0 10.0 172:04.16 java
11979 root & & &20 & 0 m &15m S &0.7 &8.7 614:37.05 java
18690 root & & &20 & 0 m &15m S &0.7 &7.1 136:54.40 java
30231 root & & &20 & 0 m &15m S &0.7 &8.8 643:34.15 java
&1325 root & & &20 & 0 &185m
S &0.3 &0.0 &12:17.31 vmtoolsd
31763 root & & &20 & 0 m &15m S &0.3 &7.0 150:01.65 java
解释信息:
第一行显示的内容和uptime命令一样,
Cpu(s):表示这一行显示CPU总体信息
0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
0.7%sy:内核占用CPU时间百分比
0.0%ni:renice值为负的任务的用户态进程的CPU时间百分比。nice是优先级的意思
99.3%id:空闲CPU时间百分比
0.0%wa:等待I/O的CPU时间百分比
0.0%hi:CPU硬中断时间百分比
0.0%si:CPU软中断时间百分比
0.0%st:我不知道
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
常用交互命令
从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。&
  &Ctrl+L 擦除并且重写屏幕。&
  h或者? 显示帮助画面,给出一些简短的命令总结说明。&
  k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。&
  i 忽略闲置和僵死进程。这是一个开关式命令。&
  q 退出程序。&
  r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。&
  S 切换到累计模式。&
  s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。&
  f或者F 从当前显示中添加或者删除项目。&
  o或者O 改变显示项目的顺序。&
  l 切换显示平均负载和启动时间信息。&
  m 切换显示内存信息。&
  t 切换显示进程和CPU状态信息。&
  c 切换显示命令名称和完整命令行。&
  M 根据驻留内存大小进行排序。&
  P 根据CPU使用百分比大小进行排序。&
  T 根据时间/累计时间进行排序。&
& & W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。&
命令总结:
IO : iostat
cpu : &mpstat & &uptime
process :pidstat
内存:free
统计:vmstat,sar ,top
磁盘吞吐量 &iostat -xz&
查看网络接口的吞吐量 &&sar -n DEV 1 。
查看某个协议点汇总视图 sar -n TCP,UDP 1
Linux性能监测:问题解决思路
cpu 高的原因可能是
1 sql 语句太复杂,查询时候消耗时间太久,多次请求就把cpu 占用完了。
2 高密度计算,计算太久,多次请求占用cpu 完毕了。
3 出现死循环。
如果是程序高cpu消耗的解决办法:
1 top 找到高消耗进程
2 导出进程的所有信息:
jstack -l pid & &test.stack
如果进程已经hang住了
jstack -l -F pid &test.stack
3 top -H -p pid 找到进程中消耗最多的线程。
4 printf &%x\n& tid 把线程ID转化为16进制。
5 cat test.stack |grep -n16进制串
6 vi test.stack 定位到 对应行。
内存分为物理内存,虚拟缓存和缓冲区。
内存使用率高的原因可能是:
1 程序中有太长的arraylist,会在内存中存储,内存加载不了了。
内存高的解决办法:
1 top 找到高消耗进程
2 jmap -histo 进程ID & &a.txt &把进程的当前状态(有哪些对象,每个对象多少实例,多少字节,什么类名)导出到文件里。
3vi a.txt & 查看哪些类 占用了内存。
4 优化代码。
如果已经内存溢出,
jmap -dump:live,format=b,file=xxx.xxx pid &然后用mat 工具分析。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:105681次
积分:4143
积分:4143
排名:第6484名
原创:311篇
转载:81篇
(3)(7)(31)(33)(67)(85)(110)(36)(1)(4)(15)

我要回帖

更多关于 苹果电脑需要贴膜吗 的文章

 

随机推荐