找回密码
 注册
关于网站域名变更的通知
查看: 248|回复: 1
打印 上一主题 下一主题

如何找出Linux下,哪个进程最耗iowait

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-12 09:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
1. 找出CPU占用率高的线程:# M4 a% Q) e+ ?
. V( m  J. x; S: ~* A4 u! G, K
        ps H -eo user,pid,ppid,tid,time,psr,%cpu,cmd --sort=%cpu- K& G+ j7 f1 q/ g' y& N

. `7 K! x& M1 p9 c& M6 l. o5 X. H- Y参数'H'显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序
9 _* V+ O4 y3 t* ]8 v( t$ x) W1 c/ E5 R
2. 找出耗iowait的进程( u; f0 s' T7 o6 S
2 j5 J* M( ?( Z! ~1 D" O3 T) [
先停掉syslog! K; f& r) o9 e8 j+ M
service syslog stop$ K. }3 T' D) X: B* |

$ a4 |7 Y; R  c4 N4 O7 ^打开block dump:' }; a* _' ^' f1 @0 s+ B
echo 1 > /proc/sys/vm/block_dump& r$ B( i* u- a

1 Q/ s( |; a; h9 V* m, w( G3 g% X, }多次运行,查看结果8 V8 r" i0 I& V3 }1 {
dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort | uniq -c | sort -rn | head/ I% i+ E+ m  {8 r4 h8 X
排前的比较占用io
: @" ^9 Z( L7 N8 Y$ H1 t
' a  ?6 s, m" ]  m+ B; A7 v抓完后关掉block_dump和启动syslog:1 }1 [7 `1 ^) i4 o: w9 e* G3 O
echo 0 > /proc/sys/vm/block_dump( s% ?$ a; B& f: i, f1 q3 ?# S" {7 j
service syslog start( y7 T7 _4 k, _2 l+ J$ {
0 N& y+ u/ Z) u0 ~& V- I* _" o
实践发现,这样找出的进程一般为kjournald、pdflush、kswapd0。
& J0 `. E$ {% V2 o& M' e) ]
+ S% W7 f. q8 H% E+ i6 e* j: ^$ K# K  T: A  I
3. pidstat
3 F0 O- b9 E; I2 ]! ]$ A3 |+ s  _) C- @$ ?7 d
# pidstat -d 5# Z5 ~$ Q$ g) k9 z, N- a
Linux 2.6.26-2-openvz-686 (pro-12-gl.savonix.com)   10/29/2009  _i686_  (2 CPU)% o2 ~% ]3 q0 }: o1 H: Q- y9 }  ?6 D

' A7 t& D: E5 m" o0 l2 K11:19:41 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
/ E" \' w- x2 W0 Q5 @11:19:46 PM      1895      0.00     23.06      0.00  kjournald% h, X& {# }# F, @- I. a  }1 a7 [
11:19:46 PM      7309      0.00      0.80      0.00  syslog-ng
9 |* E$ D  I  |8 z) r11:19:46 PM     21404      0.00      0.80      0.00  tlsmgr
9 u, H  t( d; ~3 L" l: `; ~2 M$ O) D" B
11:19:46 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
0 D" F5 A3 u5 Z) W! V11:19:51 PM     18208      0.00      0.80      0.00  syslog-ng
+ H8 @; q) U/ G
+ X4 O. ~3 f: d5 D6 j: h5 Q11:19:51 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command' ~( `" d0 ^5 j4 d2 U* ~+ e' L2 L
11:19:56 PM      1895      0.00      9.60      0.00  kjournald* G3 Y' h( u" O. a% a
11:19:56 PM     17120      0.00      1.60      0.00  tlsmgr- A; {, c; `. c  R
11:19:56 PM     27257      0.00      1.60      0.00  apache2
9 L# J: ?2 o. F7 U3 X, ], _+ g" K' K' m
11:19:56 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
0 w# _& @3 v- e1 e0 n  [/ C, c11:20:01 PM       423      0.00      0.80      0.00  apache2
+ P. C$ [' |4 F1 o; u& [11:20:01 PM      1851      0.00      0.80      0.00  nginx
8 E) K3 a/ f# A4 q11:20:01 PM      1895      0.00      8.80      0.00  kjournald/ j2 l8 x+ g* Z

; C6 L' W9 H' \然后可以使用top命令查看进程对应的物理CPU:
* U: A8 [- I6 {2 J% ]        7 G! R: u8 }& c9 W4 D! T
        执行top后,按f,再选择j: P Last used cpu (SMP) ,再按回车回到top界面
6 A' u) [8 J) V0 R
9 ?+ O6 n4 Q% a; ]) i
) v* C5 A0 ]. P) q0 U1 j  u注:进程kjournald、pdflush、kswapd0的作用
1 b$ N! u( ~/ Q' q: y: B: G( {) ]8 \. x+ I4 }
1.kswapd0
9 r* m  ]2 G: F) J
; I5 y5 x  c' J4 N' q* sLinux uses kswapd for virtual memory management such that pages that have been recently accessed are kept in memory and less active pages are paged out to disk.$ @4 g2 ]$ J$ x) _
(what is a page?)…Linux uses manages memory in units called pages.! Q0 m, T6 ~8 s0 _  @. s
So,the kswapd process regularly decreases the ages of unreferenced pages…and at the end they are paged out(moved out) to disk- T3 d1 J5 Q0 V4 @' C; Q" z5 M

# F, p8 D; H) d4 K/ j  N系统每过一定时间就会唤醒kswapd,看看内存是否紧张,如果不紧张,则睡眠,在kswapd中,有2个阀值,pages_hige和pages_low,当空闲内存页的数量低于pages_low的时候,kswapd进程就会扫描内存并且每次释放出32个free pages,直到free page的数量到达pages_high.0 b" J- ^) ]+ p& a+ l' R( u% x
( X" i4 S5 u+ I* P
2.kjournald3 `$ _" Q% `/ s* Y' N; C& i
( T3 M( J5 j9 p0 r/ i
EXT3文件系统的日志进程,具有3种模式:
2 f2 m6 O) ]! ~0 h
8 B8 a# Z2 q4 X' N, G7 D. l* Q- v1 s5 \! M0 m
journal - logs all filesystem data and metadata changes. The slowest of the three ext3 journaling modes, this journaling mode minimizes the chance of losing the changes you have made to any file in an ext3 filesystem.(记录所有文件系统上的元数据改变,最慢的一种模式,)5 E  @3 k5 ]$ t, {- y
/ \( I: J( E6 t. [1 r3 _0 t
ordered - only logs changes to filesystem metadata, but flushes file data updates to disk before making changes to associated filesystem metadata. This is the default ext3 journaling mode.(默认使用的模式,只记录文件系统改变的元数据,并在改变之前记录日志)
9 U' g8 h* A  B) E) J; d2 G) Z# w. B: L4 s- o) ]
writeback - only logs changes to filesystem metadata but relies on the standard filesystem write process to write file data changes to disk. This is the fastest ext3 journaling mode.(最快的一种模式,同样只记录修改过的元数据,依赖标准文件系统写进程将数据写到硬盘)) U- }& U& Z; m% m' k- I
3 }% f- m2 u/ [% \" ~' }, h3 y
修改模式EXT3的工作模式;
- f; U: b- h! F$ _! ?$ K& A2 M. i0 N8 }# S* R3 m0 h5 J
vim /etc/fstab0 t) Z2 z8 P2 b0 j
! D7 ]" `4 c5 _

8 g+ R2 R: @% e  @' b- W: L/dev/hda5      /opt            ext3       data=writeback        1 0* M' g* |$ W, y% E. H; ~

/ P% p& {$ \! J% }; N详细介绍:
. _8 u- |) k# w6 z) khttp://www.linuxplanet.com/linuxplanet/reports/4136/5/
! e4 @3 @1 x, Z6 S9 L0 E, O6 t! q
9 v' d5 K# d% z5 ]1 C+ i+ e1 O0 T! l' \3 P
3.pdflush$ G  o" L" q4 F- ]
% p& b8 I# K( i9 F3 t. x& r8 V
pdflush用于将内存中的内容和文件系统进行同步,比如说,当一个文件在内存中进行修改,pdflush负责将它写回硬盘.每当内存中的垃圾页(dirty page)超过10%的时候,pdflush就会将这些页面备份回硬盘.这个比率是可调节的,通过/etc/sysctl.conf中的 vm.dirty_background_ratio项 默认值为10 也可以
$ }$ B1 C3 @  l& T0 [7 r  d' {: v# l* L7 X: h0 l
cat /proc/sys/vm/dirty_background_ratio 查看当前的值
+ E4 d; l0 j# |3 E3 ]& q2 O  Z+ o! r' X6 T8 R
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-12 16:18 | 只看该作者
    找出Linux下进程最耗iowait的
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-25 13:49 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表