当前位置:文档之家› Linux系统性能优化命令与工具大全

Linux系统性能优化命令与工具大全

Linux系统性能优化命令与工具大全
Linux系统性能优化命令与工具大全

细说Linux系统优化-实践篇

作为一名linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但是由于硬件问题、软件问题、网络环境等的复杂性和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题,本章从系统入手,重点讲述由于系统软、硬件配置不当可能造成的性能问题,并且给出了检测系统故障和优化性能的一般方法和流程。

1 cpu性能评估

Cpu是影响Linux性能的主要因素之一,下面先介绍几个查看CPU性能的命令。

1.1 vmstat命令

该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU的一个负载情况。下面是vmstat命令在某个系统的输出结果:

[root@node1 ~]# vmstat 2 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0

0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0

0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0

对上面每项的输出解释如下:

procs

r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。

b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

memory

swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。

free列表示当前空闲的物理内存数量(以k为单位)

buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。

cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap

si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。

so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。

一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。 IO项显示磁盘读写状况

Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。

Bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb)

这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。

system 显示采集间隔内发生的中断数

in列表示在某一时间间隔中观测到的每秒设备中断数。

cs列表示每秒产生的上下文切换次数。

上面这2个值越大,会看到由内核消耗的CPU时间会越多。

CPU项显示了CPU的使用状态,此列是我们关注的重点。

us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。

sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。

根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。

id 列显示了CPU处在空闲状态的时间百分比。

wa列显示了IO等待所占用的CPU时间百分比。wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。

综上所述,在对CPU的评估中,需要重点注意的是procs项r列的值和CPU项中us、sy和id列的值。

1.2 sar命令

检查CPU性能的第二个工具是sar,sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。

下面是sar命令对某个系统的CPU统计输出:

[root@webserver ~]# sar -u 3 5

Linux 2.6.9-42.ELsmp (webserver) 11/28/2008 _i686_ (8 CPU)

11:41:24 AM CPU %user %nice %system %iowait %steal %idle

11:41:27 AM all 0.88 0.00 0.29 0.00 0.00 98.83

11:41:30 AM all 0.13 0.00 0.17 0.21 0.00 99.50

11:41:33 AM all 0.04 0.00 0.04 0.00 0.00 99.92

11:41:36 AM all 0.29 0.00 0.13 0.00 0.00 99.58

11:41:39 AM all 0.38 0.00 0.17 0.04 0.00 99.41

Average: all 0.34 0.00 0.16 0.05 0.00 99.45

对上面每项的输出解释如下:

%user列显示了用户进程消耗的CPU 时间百分比。

%nice列显示了运行正常进程所消耗的CPU 时间百分比。

%system列显示了系统进程消耗的CPU时间百分比。

%iowait列显示了IO等待所占用的CPU时间百分比

%steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作。

%idle列显示了CPU处在空闲状态的时间百分比。

这个输出是对系统整体CPU使用状况的统计,每项的输出都非常直观,并且最后一行Average是个汇总行,是上面统计信息的一个平均值。

需要注意的一点是:第一行的统计信息中包含了sar本身的统计消耗,所以%user列的值会偏高一点,不过,这不会对统计结果产生多大影响。

在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致了整体CPU使用率不高,而应用缓慢现象的发生。

针对这个问题,可以对系统的每个CPU分开查询,统计每个CPU的使用情况:

[root@webserver ~]# sar -P 0 3 5

Linux 2.6.9-42.ELsmp (webserver) 11/29/2008 _i686_ (8 CPU)

06:29:33 PM CPU %user %nice %system %iowait %steal %idle

06:29:36 PM 0 3.00 0.00 0.33 0.00 0.00 96.67

06:29:39 PM 0 0.67 0.00 0.33 0.00 0.00 99.00

06:29:42 PM 0 0.00 0.00 0.33 0.00 0.00 99.67

06:29:45 PM 0 0.67 0.00 0.33 0.00 0.00 99.00

06:29:48 PM 0 1.00 0.00 0.33 0.33 0.00 98.34

Average: 0 1.07 0.00 0.33 0.07 0.00 98.53

这个输出是对系统的第一颗CPU的信息统计,需要注意的是,sar中对CPU的计数是从0开始的,因此,“sar -P 0 3 5”表示对系统的第一颗CPU进行信息统计,“sar -P 4 3 5”则表示对系统的第五颗CPU 进行统计。依次类推。可以看出,上面的系统有八颗CPU。

1.3 iostat命令

iostat指令主要用于统计磁盘IO状态,但是也能查看CPU的使用信息,它的局限性是只能显示系统所有CPU的平均信息,看下面的一个输出:

[root@webserver ~]# iostat -c

Linux 2.6.9-42.ELsmp (webserver) 11/29/2008 _i686_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

2.52 0.00 0.30 0.24 0.00 96.96

在这里,我们使用了“-c”参数,只显示系统CPU的统计信息,输出中每项代表的含义与sar命令的输出项完全相同,不再详述。

1.4 uptime命令

uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载。看下面的一个输出:

[root@webserver ~]# uptime

18:52:11 up 27 days, 19:44, 2 users, load average: 0.12, 0.08, 0.08

这里需要注意的是load average这个输出值,这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的

输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。

1.5 本节小结

上面介绍了检查CPU使用状况的四个命令,通过这些命令需要了解的是:系统CPU是否出现性能瓶颈,也就是说,以上这些命令只能查看CPU是否繁忙,负载是否过大,但是无法知道CPU为何负载过大,因而,判断系统CPU出现问题后,要结合top、ps等命令进一步检查是由那些进程导致CPU负载过大的。引起CPU 资源紧缺的原因可能是应用程序不合理造成的,也可能是硬件资源匮乏引起的,所以,要具体问题具体分析,或者优化应用程序,或者增加系统CPU资源。

2 内存性能评估

内存的管理和优化是系统性能优化的一个重要部分,内存资源的充足与否直接影响应用系统的使用性能,在进行内存优化之前,一定要熟悉linux的内存管理机制,这一点我们在前面的章节已经有深入讲述,本节的重点是如何通过系统命令监控linux系统的内存使用状况。

2.1 free 命令

free是监控linux内存使用状况最常用的指令,看下面的一个输出:

[root@webserver ~]# free -m

total used free shared buffers cached

Mem: 8111 7185 925 0 243 6299

-/+ buffers/cache: 643 7468

Swap: 8189 0 8189

“free –m”表示以M为单位查看内存使用情况,在这个输出中,我们重点关注的应该是free列与cached 列的输出值,由输出可知,此系统共8G内存,系统空闲内存还有925M,其中,Buffer Cache占用了243M,Page Cache占用了6299M,由此可知系统缓存了很多的文件和目录,而对于应用程序来说,可以使用的内存还有7468M,当然这个7468M包含了Buffer Cache和Page Cache的值。在swap项可以看出,交换分区

还未使用。所以从应用的角度来说,此系统内存资源还非常充足。

一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

free命令还可以适时的监控内存的使用状况,使用“-s”参数可以在指定的时间段内不间断的监控内存的使用情况:

[root@webserver ~]# free -b -s 5

total used free shared buffers cached

Mem: 8505901056 7528706048 977195008 0 260112384 6601158656

-/+ buffers/cache: 667435008 7838466048

Swap: 8587149312 163840 8586985472

total used free shared buffers cached

Mem: 8505901056 7526936576 978964480 0 260128768 6601142272

-/+ buffers/cache: 665665536 7840235520

Swap: 8587149312 163840 8586985472

total used free shared buffers cached

Mem: 8505901056 7523987456 981913600 0 260141056 6601129984

-/+ buffers/cache: 662716416 7843184640

Swap: 8587149312 163840 8586985472

其中,“-b”表示以千字节(也就是1024字节为单位)来显示内存使用情况。

2.2 通过watch与free相结合动态监控内存状况

watch是一个非常有用的命令,几乎每个linux发行版都带有这个工具,通过watch,可以动态的监控命令的运行结果,省去手动执行的麻烦。

可以在watch后面跟上需要运行的命令,watch就会自动重复去运行这个命令,默认是2秒钟执行一次,并把执行的结果更新在屏幕上。例如:

[root@webserver ~]# watch -n 3 -d free

Every 3.0s: free Sun Nov 30 16:23:20 2008

total used free shared buffers cached

Mem: 8306544 7349548 956996 0 203296 6500024

-/+ buffers/cache: 646228 7660316

Swap: 8385888 160 8385728

其中,“-n”指定重复执行的时间,“-d”表示高亮显示变动。

2.3 vmstat命令监控内存

vmstat命令在监控系统内存方面功能强大,请看下面的一个输出:

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

0 0 906440 22796 155616 1325496 340 180 2 4 1 4 80 0 10 10

0 0 906440 42796 155616 1325496 320 289 0 54 1095 287 70 15 0 15

0 0 906440 42884 155624 1325748 236 387 2 102 1064 276 78 2 5 15

对于内存的监控,在vmstat中重点关注的是swpd、si和so行,从这个输出可以看出,此系统内存资源紧缺,swpd占用了900M左右内存,si和so占用很大,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内存是必须要做的。

2.4 sar -r命令组合

sar命令也可以监控linux的内存使用状况,可以通过“sar –r”组合查看系统内存和交换空间的使用率。请看下面的一个输出:

[root@webserver ~]# sar -r 2 3

Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU)

09:57:33 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit

09:57:35 PM 897988 7408556 89.19 249428 6496532 786556 4.71

09:57:37 PM 898564 7407980 89.18 249428 6496532 784276 4.70

09:57:39 PM 899196 7407348 89.17 249440 6496520 782132 4.69

Average: 898583 7407961 89.18 249432 6496528 784321 4.70

其中:

Kbmemfree表示空闲物理内存大小,kbmemused表示已使用的物理内存空间大小,%memused表示已使用内存占总内存大小的百分比,kbbuffers和kbcached分别表示Buffer Cache和Page Cache的大小,kbcommit 和%commit分别表示应用程序当前使用的内存大小和使用百分比。

可以看出sar的输出其实与free的输出完全对应,不过sar更加人性化,不但给出了内存使用量,还给出了内存使用的百分比以及统计的平均值。从%commit项可知,此系统目前内存资源充足。

2.5 本节小结

上面介绍了内存监控常用的几个指令以及一些经验规则,其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低,充足的内存已经完全能满足应用程序和系统本身的需要,如果系统在内存方面出现瓶颈,很大的可能是应用程序本身的问题造成的。

3 磁盘I/O性能评估

在对磁盘I/O性能做评估之前,必须知道的几个方面是:

熟悉RAID存储方式,可以根据应用的不同,选择不同的RAID方式,例如,如果一个应用经常有大量的读操作,可以选择RAID5方式构建磁盘阵列存储数据,如果应用有大量的、频繁的写操作,可以选择raid0存取方式,如果应用对数据安全要求很高,同时对读写也有要求的话,可以考虑raid01存取方式等等。 尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率要高千倍。

将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。

对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。这里简要讲述下文件系统与裸设备的对比:

使用裸设备的优点有:

数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争用。

避免了文件系统级的维护开销,比如文件系统需要维护超级块、I-node等。

避免了操作系统的cache预读功能,减少了I/O请求。

使用裸设备的缺点是:

数据管理、空间管理不灵活,需要很专业的人来操作。

其实裸设备的优点就是文件系统的缺点,反之也是如此,这就需要我们做出合理的规划和衡量,根据应用的需求,做出对应的策略。

下面接着介绍对磁盘IO的评估标准。

3.1 sar -d命令组合

通过“sar –d”组合,可以对系统的磁盘IO做一个基本的统计,请看下面的一个输出:

[root@webserver ~]# sar -d 2 3

Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU)

11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00

11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02

对上面每项的输出解释如下:

DEV表示磁盘设备名称。

tps表示每秒到物理磁盘的传送数,也就是每秒的I/O流量。一个传送就是一个I/O请求,多个逻辑请求可以被合并为一个物理I/O请求。

rd_sec/s表示每秒从设备读取的扇区数(1扇区=512字节)。

wr_sec/s表示每秒写入设备的扇区数目。

avgrq-sz表示平均每次设备I/O操作的数据大小(以扇区为单位)。

avgqu-sz表示平均I/O队列长度。

await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。

svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。

%util表示一秒中有百分之几的时间用于I/O操作。

Linux中I/O请求系统与现实生活中超市购物排队系统有很多类似的地方,通过对超市购物排队系统的理解,可以很快掌握linux中I/O运行机制。比如:

avgrq-sz类似与超市排队中每人所买东西的多少。

avgqu-sz类似与超市排队中单位时间内平均排队的人数。

await类似与超市排队中每人的等待时间。

svctm类似与超市排队中收银员的收款速度。

%util类似与超市收银台前有人排队的时间比例。

对以磁盘IO性能,一般有如下评判标准:

正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm 值造成影响,过多的请求也会间接的导致svctm值的增加。

await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

%util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

3.2 iostat –d命令组合

通过“iostat –d”命令组合也可以查看系统磁盘的使用状况,请看如下输出:

[root@webserver ~]# iostat -d 2 3

Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU)

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 1.87 2.58 114.12 6479462 286537372

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 0.00 0.00 0.00 0 0

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 1.00 0.00 12.00 0 24

对上面每项的输出解释如下:

Blk_read/s表示每秒读取的数据块数。

Blk_wrtn/s表示每秒写入的数据块数。

Blk_read表示读取的所有块数

Blk_wrtn表示写入的所有块数。

这里需要注意的一点是:上面输出的第一项是系统从启动以来到统计时的所有传输信息,从第二次输出的数据才代表在检测的时间段内系统的传输值。

可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。对于这两个选项的值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。

“iostat –x”组合还提供了对每个磁盘的单独统计,如果不指定磁盘,默认是对所有磁盘进行统计,请看下面的一个输出:

[root@webserver ~]# iostat -x /dev/sda 2 3

Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

2.45 0.00 0.30 0.24 0.00 97.03

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.01 12.48 0.10 1.78 2.58 114.03 62.33 0.07 38.39 1.30 0.24

avg-cpu: %user %nice %system %iowait %steal %idle

3.97 0.00 1.83 8.19 0.00 86.14

Device:rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 195.00 0.00 18.00 0.00 1704.00 94.67 0.04 2.50 0.11 0.20

avg-cpu: %user %nice %system %iowait %steal %idle

4.04 0.00 1.83 8.01 0.00 86.18

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 4.50 0.00 7.00 0.00 92.00 13.14 0.01 0.79 0.14 0.10 这个输出基本与“sar –d”相同,需要说明的几个选项的含义为:

rrqm/s表示每秒进行merged的读操作数目。

wrqm/s表示每秒进行 merge 的写操作数目。

r/s表示每秒完成读I/O设备的次数。

w/s表示每秒完成写I/O设备的次数。

rsec/s表示每秒读取的扇区数。

wsec/s表示每秒写入的扇区数。

3.3 vmstat –d组合

通过“vmstat –d”组合也可以查看磁盘的统计数据,情况下面的一个输出:

[root@webserver ~]# vmstat -d 3 2|grep sda

disk- ------------reads------------ ------------writes----------- -----IO------

total merged sectors ms total merged sectors ms cur sec

sda 239588 29282 6481862 1044442 4538678 32387680 295410812 186025580 0 6179

disk- ------------reads------------ ------------writes----------- -----IO------

total merged sectors ms total merged sectors ms cur sec

sda 239588 29282 6481862 1044442 4538680 32387690 295410908 186025581 0 6179

这个输出显示了磁盘的reads、writes和IO的使用状况。

3.4 本节小结

上面主要讲解了对磁盘I/O的性能评估,其实衡量磁盘I/O好坏是多方面的,有应用程序本身的,也有硬件设计上的,还有系统自身配置的问题等,要解决I/O的瓶颈,关键是要提高I/O子系统的执行效率。例如,首要要从应用程序上对磁盘读写进行优化,能够放到内存执行的操作,尽量不要放到磁盘,同时对磁盘存储方式进行合理规划,选择适合自己的RAID存取方式,最后,在系统级别上,可以选择适合自身应用的文件系统,必要时使用裸设备提高读写性能。

4 网络性能评估

网络性能的好坏直接影响应用程序对外提供服务的稳定性和可靠性,监控网络性能,可以从以下几个方面进行管理和优化。

4.1 通过ping命令检测网络的连通性

如果发现网络反应缓慢,或者连接中断,可以通过ping来测试网络的连通情况,请看下面的一个输出:[root@webserver ~]# ping 10.10.1.254

PING 10.10.1.254 (10.10.1.254) 56(84) bytes of data.

64 bytes from 10.10.1.254: icmp_seq=0 ttl=64 time=0.235 ms

64 bytes from 10.10.1.254: icmp_seq=1 ttl=64 time=0.164 ms

64 bytes from 10.10.1.254: icmp_seq=2 ttl=64 time=0.210 ms

64 bytes from 10.10.1.254: icmp_seq=3 ttl=64 time=0.178 ms

64 bytes from 10.10.1.254: icmp_seq=4 ttl=64 time=0.525 ms

64 bytes from 10.10.1.254: icmp_seq=5 ttl=64 time=0.571 ms

64 bytes from 10.10.1.254: icmp_seq=6 ttl=64 time=0.220 ms

--- 10.10.1.254 ping statistics ---

7 packets transmitted, 7 received, 0% packet loss, time 6000ms

rtt min/avg/max/mdev = 0.164/0.300/0.571/0.159 ms, pipe 2

在这个输出中,time值显示了两台主机之间的网络延时情况,如果此值很大,则表示网络的延时很大,单位为毫秒。在这个输出的最后,是对上面输出信息的一个总结,packet loss表示网络的丢包率,此值越小,表示网络的质量越高。

4.2 通过netstat –i组合检测网络接口状况

netstat命令提供了网络接口的详细信息,请看下面的输出:

[root@webserver ~]# netstat -i

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1500 0 1313129253 0 0 0 1320686497 0 0 0 BMRU eth1 1500 0 494902025 0 0 0 292358810 0 0 0 BMRU

lo 16436 0 41901601 0 0 0 41901601 0 0 0 LRU

对上面每项的输出解释如下:

Iface表示网络设备的接口名称。

MTU表示最大传输单元,单位字节。

RX-OK/TX-OK表示已经准确无误的接收/发送了多少数据包。

RX-ERR/TX-ERR表示接收/发送数据包时产生了多少错误。

RX-DRP/TX-DRP表示接收/发送数据包时丢弃了多少数据包。

RX-OVR/TX-OVR表示由于误差而遗失了多少数据包。

Flg表示接口标记,其中:

L:表示该接口是个回环设备。

B:表示设置了广播地址。

M:表示接收所有数据包。

R:表示接口正在运行。

U:表示接口处于活动状态。

O:表示在该接口上禁用arp。

P:表示一个点到点的连接。

正常情况下,RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都应该为0,如果这几个选项的值不为0,并且很大,那么网络质量肯定有问题,网络传输性能也一定会下降。

当网络传输存在问题是,可以检测网卡设备是否存在故障,如果可能,可以升级为千兆网卡或者光纤网络,还可以检查网络部署环境是否合理。

4.3 通过netstat –r组合检测系统的路由表信息

在网络不通,或者网络异常时,首先想到的就是检查系统的路由表信息,“netstat –r”的输出结果与route命令的输出完全相同,请看下面的一个实例:

[root@webserver ~]# netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

10.10.1.0 * 255.255.255.0 U 0 0 0 eth0

192.168.200.0 * 255.255.255.0 U 0 0 0 eth1

169.254.0.0 * 255.255.0.0 U 0 0 0 eth1

default 10.10.1.254 0.0.0.0 UG 0 0 0 eth0

关于输出中每项的具体含义,已经在前面章节进行过详细介绍,这里不再多讲,这里我们重点关注的是default行对应的值,default项表示系统的默认路由,对应的网络接口为eth0。

4.4 通过sar –n组合显示系统的网络运行状态

sar提供四种不同的选项来显示网络统计信息,通过“-n”选项可以指定4个不同类型的开关:DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,SOCK显示套接字信息,FULL 显示所有三个开关。请看下面的一个输出:

[root@webserver ~]# sar -n DEV 2 3

Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU)

02:22:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 02:22:33 PM lo 31.34 31.34 37.53 37.53 0.00 0.00 0.00 02:22:33 PM eth0 199.50 279.60 17.29 344.12 0.00 0.00 0.00 02:22:33 PM eth1 5.47 4.98 7.03 0.36 0.00 0.00 0.00 02:22:33 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00

02:22:33 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 02:22:35 PM lo 67.66 67.66 74.34 74.34 0.00 0.00 0.00 02:22:35 PM eth0 159.70 222.39 19.74 217.16 0.00 0.00 0.00 02:22:35 PM eth1 3.48 4.48 0.44 0.51 0.00 0.00 0.00 02:22:35 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 02:22:35 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 02:22:37 PM lo 4.52 4.52 9.25 9.25 0.00 0.00 0.00 02:22:37 PM eth0 102.51 133.67 20.67 116.14 0.00 0.00 0.00 02:22:37 PM eth1 27.14 67.34 2.42 89.26 0.00 0.00 0.00 02:22:37 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: lo 34.61 34.61 40.48 40.48 0.00 0.00 0.00 Average: eth0 154.08 212.15 19.23 226.17 0.00 0.00 0.00 Average: eth1 11.98 25.46 3.30 29.85 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 对上面每项的输出解释如下:

IFACE表示网络接口设备。

rxpck/s表示每秒钟接收的数据包大小。

txpck/s表示每秒钟发送的数据包大小。

rxkB/s表示每秒钟接收的字节数。

txkB/s表示每秒钟发送的字节数。

rxcmp/s表示每秒钟接收的压缩数据包。

txcmp/s表示每秒钟发送的压缩数据包。

rxmcst/s表示每秒钟接收的多播数据包。

通过“sar –n”的输出,可以清楚的显示网络接口发送、接收数据的统计信息。此外还可以通过“sar -n EDEV 2 3”来统计网络错误信息等。

4.5 小结

本节通过几个常用的网络命令介绍了对网络性能的评估,事实上,网络问题是简单而且容易处理的,只要我们根据上面给出的命令,一般都能迅速定位问题。解决问题的方法一般是增加网络带宽,或者优化网络部署环境。

除了上面介绍的几个命令外,排查网络问题经常用到的命令还有traceroute,主要用于跟踪数据包的传输路径,还有nslookup命令,主要用于判断DNS解析信息。

linux命令大全--分类汇总版

LINUX命令大全 一、通用命令 1、date :打印或者设置系统的日期和时间 2、stty -a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、Ctrl-Z等) 3、passwd:用passwd -h查看 4、logout,login:登录shell的登录和注销命令 5、more,less,head tail:显示或部分显示文件内容 6、lp/lpstat/cancel,lpr/lpq/lprm:打印文件 7、chmod u+x:更改文件权限 8、rm -fr dir:删除非空目录 9、cp -R dir:拷贝目录 10、fg jobid :可以将一个后台进程放到前台 11、kill 的作用:send a signal to a process、eg:kill -9 发送的是SIG_KILL信号,具体发送什么信号可以通过man kill 查看、 12、ps 的用法,ps -e 或ps -o pid,ppid,session,tpgid,comm (其中session显示的sessionid,tpgid显示前台进程组id,comm显示命令名称) 二、常用命令 1、dpkg:package manager for Debian * 安装:dpkg -i package

* 卸载:dpkg -r package * 卸载并删除配置文件:dpkg -P |--purge package * 如果安装一个包时、说依赖某些库、可以先apt-get install somelib * 查看软件包安装内容:dpkg -L package * 查看文件由哪个软件包提供:dpkg -S filename * 另外dpkg还有dselect和aptitude 两个frontend 2、apt * 安装:apt-get install packs * 更新源:apt-get update * 升级系统:apt-get upgrade * 智能升级、安装新软件包,删除废弃的软件包:apt-get dist-upgrade * f --fix broken 修复依赖:apt-get -f install * 自动删除无用的软件:apt-get autoremove * 删除软件:apt-get remove packages * 删除包并清除配置文件:apt-get remove package --purge * 清除所以删除包的残余配置文件:dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P * 安装软件时候包的临时存放目录:/var/cache/apt/archives * 清除该目录:apt-get clean * 清除该目录的旧版本的软件缓存:apt-get autoclean

linux_操作系统优化方案

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、C hanging kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少C PU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx 命令前,开启xfs daemon,恢复正常启动X。 可以根据需要停止某个进程,如要停止sendmail 进程,输入如下命令: Red Hat: /sbin/service sendmail stop SUSE LINUX: /etc/init.d/sendmail stop 也可以配置在下次启动的时候不自动启动某个进程,还是send mail: Red Hat: /sbin/chkconfig sendmail off SUSE LINUX: /sbin/chkconfig -s sendmail off 除此之外,LINUX还提供了图形方式下的进程管理功能。对于Red Hat,启动GUI,使用如下命令:/usr/bin/redhat-config-serv ices 或者鼠标点击M ain M enu -> System Settings -> Serv er Settings -> Serv ices.

LINUX性能调优方法总结

LINUX性能调优方法总结 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数。可以修改这些参数来分配更多的内存,从而改进网络 性能。设置内核参数的方法是通过 proc 接口,也就是通过读写 /proc 中的值。幸运的是,sysctl 可以读取 /etc/sysctl.conf 中的值并根据需要填充 /proc,这样就能够更轻松地管理这些参数。清单 2 展示在互联网服务器上应用于 Internet 服务器的一些比较激进的网络设置。 # Use TCP syncookies when needed net.ipv4.tcp_syncookies = 1 # Enable TCP window scaling net.ipv4.tcp_window_scaling: = 1 # Increase TCP max buffer size net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # Increase Linux autotuning TCP buffer limits net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Increase number of ports available net.ipv4.ip_local_port_range = 1024 65000 将这些设置添加到 /etc/sysctl.conf 的现有内容中。第一个设置启用TCP SYN cookie。当从客户机发来新的 TCP 连接时,数据包设置了 SYN 位,服务 器就为这个半开的连接创建一个条目,并用一个 SYN-ACK 数据包进行响应。在正常操作中,远程客户机用一个 ACK 数据包进行响应,这会使半开的连接 转换为全开的。有一种称为 SYN 泛滥(SYN flood)的网络攻击,它使 ACK 数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYN cookie 特性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间(细节参见参考资料一节)。大多数系统都默认启用这个特性,但是确保配 置这个特性更可靠。 启用 TCP 窗口伸缩使客户机能够以更高的速度下载数据。TCP 允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多 64 KB,在与延迟比 较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增加窗口大小。 后面四个配置项增加 TCP 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发

Linux命令大全

Linux命令大全 1.主题 Linux命令大全。 2.摘要 本文分三篇介绍常用Linux命令,分别是入门篇、进阶篇和高级篇。 3.关键字 Linux。 4.作者 陈明辉。 5.简介 无。 6.背景 无。 7.具体内容 (一)入门篇 对于一个新手来说,如果计划从Windows换到Linux系统平台上来,或刚刚换到Linux上来,使用Linux命令来帮助执行所有任务是一个基础的途径。毫无疑问,在线文档,技术社区能提供很多相关的内容帮助,但是一篇文章收集到如何简单学习和理解Linux命令,这将会激发很多菜鸟掌握Linux和使用的积极性。 1)ls 首先ls命令,指列出目录内容(List Directory Contents)的意思。运行它可以列出文件夹里的内容。

“ls -l”命令以详情模式(long listing fashion)列出文件夹的内容。 “ls -a”命令会列出文件夹里的所有内容,包括以“.”开头的隐藏文件。 注意:在Linux中,文件以“.”开头的就是隐藏文件,并且每个文件、文件夹,设备或者命令都是以文件对待。ls -l命令输出: 1.d (代表了是目录). 2.rwxr-xr-x是文件或者目录所属用户、用户组。 3.上面例子中第一个ravisaive代表了文件文件属于用户ravisaive 4.上面例子中的第二个ravisaive代表了文件文件属于用户组ravisaive 5.4096代表了文件大小为4096字节. 6.May 8 01:06代表了文件最后一次修改的日期和时间. 7.最后代表就是文件/文件夹的名字 2)lsblk “lsblk”就是列出块设备。除了RAM外,以标准的树状输出格式整齐地显示块设备。

linux操作系统发展现状

Linux 操作系统发展现状 Linux操作系统发展迅速,全球Top500超级计算发布数据显示89.2%的超级计算机运行在Linux操作系统之上;桌面操作系统市场份额虽然不高,但也在逐年扩大;国际大公司Intel、Google、IBM等都在Linux操作系统上加大研发投入,为Linux 操作系统长远发展带来充足后劲。国内操作系统研发组织机构、厂商也都相应加大投入,以缩小与国际Linux 厂商技术之间的差距。 但是Linux 的发展仍然面临着兼容性差,软件缺乏,以及面临版本众多导致Linux 操作系统分裂等问题。掌握核心技术,解决Linux 当前面临的关键发展问题是当务之急。 一国内Linux 操作系统发展现状 国内目前涉足Linux操作系统研发除学校、研发机构外,主要Linux 发行版包括红旗、中标、共创、新华、拓林思等,均有桌面和服务器两个版本; 国内各发行版均基于国际社区版本发展而来,基于国际社区成果,在界面定制上做了一些工作,并没有掌握核心技术,且与国际Linux 操作系统发行版之间存在一定的技术差距,缺少技术积累,面临Linux发展后劲不足等问题。 二国外Linux 操作系统发展现状 国外主要发行版包括redhat、ubuntu、Suse 等,均提供桌面

和服务器两个不同版本。服务器领域Linux 操作系统发展比较成熟,桌面发展比较缓慢,嵌入式领域发展较快。 Redhat RHEL是目前Linux服务器产品的标杆,在国内和国际上都占据着主要的Linux 服务器市场份额。RHEL 产品功能全面,产品认证齐全,用户的接受度比较高。RHEL 主要依靠技术服务和产品维护获取盈利。Redhat自9.0以后,不再发布桌面版,而是把这个项目与开源社区合作,于是就有了Fedora这个Linux发行版。目前Fedora对于Redhat的作用主要是为RHEL提供开发的基础。Fedora 的界面与操作系统与RHEL 非常相似、用户会感觉非常熟悉;另外对于新技术,fedora一直快速引入;并且fedora 一直坚持绝对开源的原则。而因为Redhat 在Linux的地位和影响力,拥有很多坚定的爱好者使用。 Suse SLES被Novell收购以后,产品的竞争力获得了很大的提升。SLES最大的优势在于应用解决方案比较丰富。SLES同样依靠技术服务和产品维护获取盈利。SUSE的yast2配置工具一直是业内公认的非常完善的安装及系统工具,能够进行系统大多数的配置功能;另外,SUSE 与 67 微软的合作,也使得SUSE在与Windows的互操作性方面具

Linux命令大全完整版

Linux命令大全完整版 目录 目录........................................................................................................................................... I 1. linux系统管理命令 (1) adduser (1) chfn(change finger information) (1) chsh(change shell) (1) date (2) exit (3) finger (4) free (5) fwhois (5) gitps(gnu interactive tools process status) (5) groupdel(group delete) (6) groupmod(group modify) (6) halt (7) id (7) kill (8) last (8) lastb (8) login (9) logname (9) logout (9) logrotate (9) newgrp (10) nice (10) procinfo(process information) (11) ps(process status) (11) pstree(process status tree) (14) reboot (15)

rlogin(remote login) (16) rsh(remote shell) (16) rwho (16) screen (17) shutdown (17) sliplogin (18) su(super user) (18) sudo (19) suspend (19) swatch(simple watcher) (20) tload (20) top (21) uname (21) useradd (22) userconf (22) userdel (23) usermod (23) vlock(virtual console lock) (24) w (24) who (25) whoami (25) whois (25) 2. linux系统设置命令 (27) alias (27) apmd(advanced power management BIOS daemon) (27) aumix(audio mixer) (27) bind (29) chkconfig(check config) (29) chroot(change root) (30)

linux中的weblogic性能调优

Linux中的Weblogic性能测试调整 一.操作系统参数调整 1.linux TCP连接数调整 通过命令:ulimit –n 查看当前最大TCP连接数,这表示当前用户的每个 进程最多允许同时打开多少个文件。一般系统默认为1024,在并发量大 的情况下肯定不够用。 修改此限制的最简单办法:ulimit –n 设置单一进程允许打开 的最大文件数。如果系统回显类似于“Operation not permitted”之类的话,说明修改失败,需要修改系统对该用户打开文件数的软限制或硬限制。 修改软限制或硬限制: 修改/etc/security/limits.conf文件,在文件中添加如下行: * soft nofile 10240 * hard nofile 10240 表示修改所有用户的限制,也可以用指定用户名替代。 修改/etc/pam.d/login文件,在文件中添加如下行: session required /lib/security/pam_limits.so 查看Linux系统级的最大打开文件数限制:cat /proc/sys/fs/file-max 2.修改网络内核对TCP连接的有关限制 端口范围: 修改/etc/sysctl.conf文件,在文件中添加如下行: net.ipv4.ip_local_port_range = 1024 65535 另外,有时无法建立TCP连接的原因可能是因为Linux网络内核的IP_TABLE防火 墙对最大跟踪的TCP连接数有限制 修改/etc/sysctl.conf文件,在文件中添加如下行:net.ipv4.ip_conntrack_max = 10240 这表明将系统对最大跟踪的TCP连接数限制设置为10240。请注意,此限制值要尽 量小,以节省对内核内存的占用。 3.其他参数调整 在/etc/sysctl.conf文件中增加如下参数,进行系统参数调整 net.core.rmem_default=128388607 默认的TCP数据接收缓冲 net.core.wmem_default=128388607 默认的TCP数据发送缓冲 net.core.rmem_max=128388607 net.core.wmem_max=128388607

(整理)linux系统监控性能评估.

总控服务器性能: 一、Cpu性能评估 Vmstat命令的参数解释: 对上面每项的输出解释如下: procs r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU 不足,需要增加CPU。? b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 Memory swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。 free列表示当前空闲的物理内存数量(以k为单位)? buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。 cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。 so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。 一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。? IO项显示磁盘读写状况? Bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。 Bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能。 system 显示采集间隔内发生的中断数 in列表示在某一时间间隔中观测到的每秒设备中断数。 cs列表示每秒产生的上下文切换次数。 上面这2个值越大,会看到由内核消耗的CPU时间会越多。 CPU项显示了CPU的使用状态,此列是我们关注的重点。 us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu 时间多,但是如果长期大于50%,就需要考虑优化程序或算法。 sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。 根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。 id 列显示了CPU处在空闲状态的时间百分比。 wa列显示了IO等待所占用的CPU时间百分比。 wa值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)。综上所述,在对CPU的评估中,需要重点注意

linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析 一,用vmstat分析系统I/O情况 [root@localhost ~]# vmstat -n 3 (每个3秒刷新一次) procs-----------memory--------------------swap--- ---io---- --system---- ------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0 2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0 0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0 0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0 2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0 IO -bi:从块设备读入的数据总量(读磁盘)(KB/S) -bo:写入到块设备的数据总量(写磁盘)(KB/S) 随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大 二,用iostat分析I/O子系统情况 如果你的系统没有iostat,sar,mpstat等命令,安装sysstat- 7.0.2-1.el5.i386.rpm包,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU 使用情况。同vmstat

Linux基本命令大全

下面我们来介绍常用基本命令 一、注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout Red Hat Linuxrelease 9(Shike) Kernel 2.4.20.8 on an i686 Login: ←回到登陆的画面 2,关机或重新启动的shutdown命令 Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。 参数说明如下: λ立即关机:-h 参数让系统立即关机。范例如下: [root@localhost root]#shutdown –h now ←要求系统立即关机 λ指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下: [root@localhost root]#shutdown now ←立刻关机 [root@localhost root]#shutdown +5 ←5分钟后关机 [root@localhost root]#shutdown 10:30 ←在10:30时关机 关机后自动重启:-rλ参数设置关机后重新启动。范例如下: [root@localhost root]#shutdown -r now ←立刻关闭系统并重启 [root@localhost root]#shutdown -r 23:59 ←指定在23:59时重启动 3,重新启动计算机的reboot命令 顾名思义,reboot命令是用来重新启动系统的。常用的参数如下: λ-f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。 -Iλ参数:在在重新启动之前关闭所有网络接口。 虽然reboot命令有个参数可以使用,但是一般只需要单独运行reboot命令就可以了 二、文件与目录的操作 列出文件列表的ls命令 1,ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例如下: ? 显示当前目录的内容: [tony@free tony]$ ls Desktop mail myinstall.log test.txt ←有两个目录及两个文件夹 ? 当运行ls命令时,并不会显示名称以―.‖开头的文件。因此可加上―-a‖参数指定要列出这些文件。范例如下: [tony@free tony]$ ls –a ? 以―-s‖参数显示每个文件所有的空间,并以―-S‖参数指定按所有占用空间的大小排序。范例如下: [tony@free tony]$ ls –s –S 总计36 4 Desktop 4 mail 24 myinstall.log 4 test.txt ? 在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下: [tony@free tony]$ ls –l/usr/games 2,切换目录的cd命令

Linux 性能调优的几种方法

Linux 性能调优的几种方法 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、Changing kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx命令前,开启xfs daemon,恢复正常启动X。

Linux系统启动时间的极限优化

(1)首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告。 较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析。PrintkTime最早为CELF所提供的一个内核补丁,在后来的Kernel 2.6.11版本中正式纳入标准内核。所以大家可能在新版本的内核中直接启用该功能。如果你的Linux 内核因为某些原因不能更新为2.6.11之后的版本,那么可以参考CELF提供的方法修改或直接下载它们提供的补丁:https://www.doczj.com/doc/f62237230.html,/CelfPubWiki/PrintkTimes 开启PrintkTime功能的方法很简单,只需在内核启动参数中增加“time”即可。当然,你也可以选择在编译内核时直接指定“Kernel hacking”中的“Show timing information on printks”来强制每次启动均为内核信息增加时间戳。这一种方式还有另一个好处:你可以得到内核在解析启动参数前所有信息的时间。因此,我选择后一种方式。 当完成上述配置后,重新启动Linux,然后通过以下命令将内核启动信息输出到文件: dmesg -s 131072 > ktime 然后利用一个脚本“show_delta”(位于Linux源码的scripts文件夹下)将上述输出的文件转换为时间增量显示格式: /usr/src/linux-x.xx.xx/scripts/show_delta ktime > dtime 这样,你就得到了一份关于Linux启动时间消耗的详细报告。 (2)然后,我们就来通过这份报告,找出启动中相对耗时的过程。 必须明确一点:报告中的时间增量和内核信息之间没有必然的对应关系,真正的时间消耗必须从内核源码入手分析。 这一点对于稍微熟悉编程的朋友来说都不难理解,因为时间增量只是两次调用printk 之间的时间差值。通常来说,内核启动过程中在完成一些耗时的任务,如创建hash索引、probe硬件设备等操作后会通过printk将结果打印出来,这种情况下,时间增量往往反映的是信息对应过程的耗时;但有些时候,内核是在调用printk输出信息后才开始相应的过程,那么报告中内核信息相应过程的时间消耗对应的是其下一行的时间增量;还有一些时候,时间消耗在了两次内核信息输出之间的某个不确定的时段,这样时间增量可能就完全无法通过内核信息反应出来了。 所以,为了准确判断真正的时间消耗,我们需要结合内核源码进行分析。必要的时候,例如上述第三种情形下,还得自己在源码中插入printk打印,以进一步确定实际的时间消耗过程。 以下是我上次裁减后Linux内核的启动分析:

Linux操作系统及常用命令

Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。 下面我将比较常用的命令,按照系统中的作用分成以下6个部分 安装和登录命令:shutdown、reboot、install、mount、umount、exit、last; 文件处理命令:file、mkdir、grep、find、mv、ls、diff、cat; 系统管理相关命令:df、top、free、adduser、groupadd、kill、crontab; 网络操作命令:ifconfig、ping、netstat、telnet、ftp、route、scp、finger; 系统安全相关命令:passwd、su、chmod、chown、sudo、ps、who; 其它命令:tar、unzip、unarj、man 安装与登陆命令 shutdown 1.作用 shutdown命令的作用是关闭计算机,它的使用权限是超级用户root。 2.格式 shutdown [-h][-i][-k][-m][-t] 3.重要参数 -t:在改变到其它运行级别之前,告诉init程序多久以后关机。 -k:并不真正关机,只是送警告信号给每位登录者。 -h:关机后关闭电源。 -c:cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统信息。 -r:重启。 4.实用例子 远程重启满天星服务器192.168.0.25 shutdown -m \\192.168.0.25 -r -f -t 0 远程重启兴通博服务器192.168.0.41 shutdown -m \\192.168.0.41 -r -f -t 0 reboot 1.作用 reboot命令的作用是重新启动计算机,它的使用权限是系统管理者root。 2.格式

Linux命令大全(磁盘维护)

磁盘维护 磁盘管理-quotaon 功能说明:开启磁盘空间限制。 语法:quotaon [-aguv][文件系统...] 补充说明:执行quotaon指令可开启用户和群组的才磅秒年空间限制,各分区的文件系统根目录必须有https://www.doczj.com/doc/f62237230.html,er和quota.group配置文件。 参数: -a 开启在/ect/fstab文件里,有加入quota设置的分区的空间限制。 -g 开启群组的磁盘空间限制。 -u 开启用户的磁盘空间限制。 -v 显示指令指令执行过程。 磁盘维护-badblocks 功能说明:检查磁盘装置中损坏的区块。 语法:badblocks [-svw][-b <区块大小>][-o <输出文件>][磁盘装置][磁盘区块数][启始区块] 补充说明:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。 参数: -b<区块大小> 指定磁盘的区块大小,单位为字节。 -o<输出文件> 将检查的结果写入指定的输出文件。 -s 在检查时显示进度。 -v 执行时显示详细的信息。 -w 在检查时,执行写入测试。 [磁盘装置] 指定要检查的磁盘装置。 [磁盘区块数] 指定磁盘装置的区块总数。 [启始区块] 指定要从哪个区块开始检查。 磁盘维护-cfdisk 功能说明:磁盘分区。

语法:cfdisk [-avz][-c <柱面数目>-h <磁头数目>-s <盘区数目>][-P ][外围设备代号] 补充说明:cfdisk是用来磁盘分区的程序,它十分类似DOS的fdisk,具有互动式操作界面而非传统fdisk的问答式界面,您可以轻易地利用方向键来操控分区操作。 参数: -a 在程序里不用反白代表选取,而以箭头表示。 -c<柱面数目> 忽略BIOS的数值,直接指定磁盘的柱面数目。 -h<磁头数目> 忽略BIOS的数值,直接指定磁盘的磁头数目。 -P 显示分区表的内容,附加参数"r"会显示整个分区表的详细资料,附加参数"s"会依照磁区的顺序显示相关信息,附加参数"t"则会以磁头,磁区,柱面的方式来显示资料。 -s<磁区数目> 忽略BIOS的数值,直接指定磁盘的磁区数目。 -v 显示版本信息。 -z 不读取现有的分区,直接当作没有分区的新磁盘使用。 磁盘维护-dd 名称: dd 使用权限: 所有使用者dd 这个指令在manual 里的定义是convert and copy a file 使用方式: dd [option] 如果你想要在线看manual, 可以试试: dd --help 或是 info dd 如果你想要看看这个版本如何: dd --version 输入或输出 dd if=[STDIN] of=[STDOUT] 强迫输入或输出的Size为多少Bytes

嵌入式linux内存使用与性能优化

嵌入式linux内存使用与性能优化 https://www.doczj.com/doc/f62237230.html,/bird67/article/details/199686592014本文摘自: https://www.doczj.com/doc/f62237230.html,/liuchao1986105/article/details/66776631、内核分配物理内存的最小单位为一个物理页面,一个物理页面为4kb。无论虚拟内存分配了多少字节,比如malloc(400),内核仍然分配4kb物理内存页面。 2、malloc语句执行时,只是给进程分配了虚拟内存,虚拟内存此时不占用物理内存。当使用此处内存时,比如变量赋值*p = ??或memcpy或strcpy时,内核会产生一个页故障,从而为进程分配一个物理页面。 3、进程状态可以在/proc中根据pid值找到进程的目录。 目录中statm信息(cat statm)中的7个数,以页为单位。 从左至右依次为size:任务虚拟地址空间大小。 resident:应用程序正在使用的物理内存大小。shared:共享页数。 trs:程序所拥有的可执行虚拟内存大小。lrs:被映像到任务的虚拟内存空间的库的大小。drs:程序数据段和用户态的栈的大小。dt:脏页数量。 4、目录中maps信息(cat maps)中,表示进程使用的虚拟地址(栈,堆,代码等)。内存使用权限信息r=读,

w=写,x=执行,s=共享,p=私有。r-xp通常表示代码段,只读,可执行。Rw-p通常表示数据段,可读写,不能执行。rwxp通常表示栈段,读写,可执行。栈不仅可以保存数据,也可以保存代码。 5、32位操作系统中,进程虚拟内存为4g,分为两部分,内核空间(高1g),用户空间(低3g)。 6、堆段:每个进程有一个,不论是主进程、动态库还是不同的线程里申请的堆内存,都反映在进程的堆段。栈段:每个线程有一个,如果进程中有多个线程,则包含多个栈段。代码段:由于其只读,不会被修改,故其在整个系统中共享。比如说一个执行文件,在系统中同时存在多个进程,那么这些进程将共享其代码段所占用的内存。 数据段:由于它是可写的,其内容与其所在的进程高度相关,所以在程序运行时会为每个进程创建一个数据段副本,故每个进程有一个数据段。 7、p = malloc(xxx); 分配给p的大小存放于*(p - 4)位置。 8、readelf、size、strip命令的使用。Nm ???.out检查???.out 执行文件的符号表。 9、检查当前内核配置的进程栈大小,使用ulimit -a命令查看stack size:。如需设置栈大小,使用ulimit -s 16384,栈大小为16k。 10、线程栈空间未设置时,通常为2m。2m的栈空间略微显

RHCA-RH442 linux 性能优化 笔记

RHCA-RH442总结 UNIT2 COLLECTING,GRAPHING AND INTERPRETING DATA Units and Unit Conversions How much is how much? international System of Units (SI)prefixes are decimal: kilo-(K)=10^3 mega-(M)=10^6 giga-(G)=10^9 tera-(T)=10^12 peta-(P)=10^15 exa-(E)=10^18 The International Electrotechnical Commission(IEC)prefixes are binary: kibi-(Ki)=2^10 mebi-(Mi)=2^20 gibi-(Gi)=2^30 tebi-(Ti)=2^40 pebi-(Pi)=2^50 exbi-(Ei)=2^60 Profiling Tools vmstat:虚拟内存统计 语法:vmstat [-V] [-n] [delay [count]] -V 表示打印出版本信息 -n 表示在周期性循环输出时,输出的头部信息仅显示一次 delay 表示两次输出之间的间隔时间 count 表示按照delay指定的时间间隔统计的次数,默认为1 procs: r:运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,表示CPU不足,需增加CPU b:处于不可打扰睡眠中的进程数(等待资源的进程数),比如正在等待I/O 或内存交换。 memory: swpd:表示切换到内存交换区的内存大小。如果swpd的值不为0或比较大,只要si,so的值长期为0,一般不会影响系统性能。(KB) free:当前空闲的物理内存。(KB) buff:用作buffers cache的内存数量,一般对块设备的读写才需要缓冲。 cache:用作page cached的内存数量,一般作为文件系统进行缓存,频繁访问的文件都会被缓存。如果cache值较大,说明缓存的文件数较多,如果此时io 中的bi比较小,说明文件系统效率比较好。 swap si:表示由磁盘调入内存,也就是由内存进入内存交换区的内存大小。 so:表示有内存调入磁盘,也就是由内存交换区进入内存的内存大小。

linux性能调优篇

TOP命令的掌握 top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。 Top衍生出iftop 和iotop Iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。 Iotop命令是专门显示每个进程的IO的命令,界面风格类似top命令。这个命令只有在kernelv2.6.20及以后的版本中才有,而iostat是显示每个硬盘的总体IO 本文通过一个运行中的WEB服务器的top监控截图,讲述top视图中的各种数据的含义,还包括视图中各进程(任务)的字段的排序。 top进入视图 top视图01 【top视图01】是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。 第一行: 10:01:23 —当前系统时间

126 days, 14:29 —系统已经运行了126天14小时29分钟(在这期间没有重启过) 2 users —当前有2个用户登录系统 load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average 见下文 第二行: Tasks —任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped 状态的有0个,zombie状态(僵尸)的有0个。 第三行:cpu状态 6.7% us —用户空间占用CPU的百分比。 0.4% sy —内核空间占用CPU的百分比。 0.0% ni —改变过优先级的进程占用CPU的百分比 92.9% id —空闲CPU百分比 0.0% wa — IO等待占用CPU的百分比 0.0% hi —硬中断(Hardware IRQ)占用CPU的百分比 0.0% si —软中断(Software Interrupts)占用CPU的百分比 第四行:内存状态 8306544k total —物理内存总量(8GB) 7775876k used —使用中的内存总量(7.7GB) 530668k free —空闲内存总量(530M) 79236k buffers —缓存的内存量(79M) 第五行:swap交换分区 2031608k total —交换区总量(2GB) 2556k used —使用的交换区总量(2.5M) 2029052k free —空闲交换区总量(2GB) 4231276k cached —缓冲的交换区总量(4GB) 这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。 如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB。 对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

相关主题
文本预览
相关文档 最新文档