Home [linux] 시스템 성능 분석 관련 명령어
Post
Cancel

[linux] 시스템 성능 분석 관련 명령어

Linux System 분석 관련 명령어

uptime

1
2
dotori17@PS-PERSNAL:~$ uptime
 23:23:45 up  8:40,  0 users,  load average: 0.52, 0.58, 0.59
  • 서버가 시작한지 얼마나 되는지 확인
  • load average (1분, 5분, 15분 평균값) :
    0에 가까울수록 좋음.
    1분 평균이 5분, 15분 평균보다 높다면 상황이 지속적으로 발생 중인 상태

dmesg

1
2
dotori17@PS-PERSNAL:~$ dmesg | tail
[    0.010928]  Microsoft 4.4.0-19041.1151-Microsoft 4.4.35
  • 시스템 메시지를 확인

vmstat 1

1
2
3
4
5
6
7
dotori17@PS-PERSNAL:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
Error: /proc must be mounted
  To mount /proc at boot you need an /etc/fstab line like:
      proc   /proc   proc    defaults
  In the meantime, run "mount proc /proc -t proc"
  • 가상 메모리의 상황 확인
  • 각 항목 확인
    • r : cpu의 Run Queue, cpu가 바빠서 자기 차례를 기다리는 프로세스 갯수 cpu 코어 갯수보다 많으면 서버가 아주 바쁜 상황이라 판단!
    • free : kb 단위의 메모리 여유, 가용 메모리가 많은지 확인 필요
    • swap : 메모리 부족시 디스크를 메모리로 사용하는 영역 (이 영역은 사용하지 않아야만 좋음.)
    • si (swap in)
    • so (swap out)
    • cpu : 아래 항목중 어떤 값이 높은지 확인
      • us : user cpu
      • sy : system cpu
      • wa : wait I/O cpu
      • st : stolen time

mpstat -P ALL 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
dotori17@PS-PERSNAL:~$ mpstat -P ALL 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 	08/31/21 	_x86_64_	(8 CPU)

00:08:27     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
00:08:28     all    0.50    0.00    4.01    0.00    0.00    0.00    0.00    0.00    0.00   95.49
00:08:28       0    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00    0.00   96.00
00:08:28       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
00:08:28       2    0.00    0.00    4.95    0.00    0.00    0.00    0.00    0.00    0.00   95.05
00:08:28       3    2.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00    0.00   92.00
00:08:28       4    0.00    0.00    4.95    0.00    0.00    0.00    0.00    0.00    0.00   95.05
00:08:28       5    1.98    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.02
00:08:28       6    0.00    0.00    6.12    0.00    0.00    0.00    0.00    0.00    0.00   93.88
00:08:28       7    0.00    0.00    6.12    0.00    0.00    0.00    0.00    0.00    0.00   93.88

00:08:28     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
00:08:29     all    0.50    0.00    3.01    0.00    0.00    0.00    0.00    0.00    0.00   96.49
00:08:29       0    0.00    0.00    5.00    0.00    0.00    0.00    0.00    0.00    0.00   95.00
00:08:29       1    2.02    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   96.97
00:08:29       2    2.00    0.00    9.00    0.00    0.00    0.00    0.00    0.00    0.00   89.00
00:08:29       3    0.00    0.00    3.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
00:08:29       4    0.00    0.00    3.06    0.00    0.00    0.00    0.00    0.00    0.00   96.94
00:08:29       5    0.00    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   98.99
00:08:29       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
00:08:29       7    0.00    0.00    1.96    0.00    0.00    0.00    0.00    0.00    0.00   98.04
  • cpu별 사용량을 확인
  • 특정 cpu 만 일하는지, 여러 cpu가 분산되어 일하는지 확인

pidstat 1

1
2
3
4
5
6
7
8
9
dotori17@PS-PERSNAL:~$ pidstat 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 	08/31/21 	_x86_64_	(8 CPU)

00:11:03      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command

00:11:04      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
00:11:05     1000       234    0.00    1.00    0.00    0.00    1.00     0  node
00:11:05     1000     30196    0.00    2.00    0.00    0.00    2.00     0  sshd
00:11:05     1000      3877    0.00    1.00    0.00    0.00    1.00     0  sh
  • process별 cpu 사용량 확인
  • %CPU 값이 중요 : 코어별 누적

iostat -xz 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dotori17@PS-PERSNAL:~$  iostat -xz 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 	08/31/21 	_x86_64_	(8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.32    0.00    3.51    0.00    0.00   94.17

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.75    0.00    2.38    0.00    0.00   94.87

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.25    0.00    2.75    0.00    0.00   96.00

Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
  • I/O 상황을 확인, r (read), w (write) 를 뜻함.
  • await : 읽기나 쓰기를 하기 위해 대기하는 시간의 평균값으로 이 값이 높으면 정상적인 읽기나 쓰기 작업을 할수 없다고 볼수 있음.
  • avgqu-sz : 해당 디바이스의 평균 요청 갯수
  • %util : 디바이스 사용 비율 만약 이 값이 __60%__가 넘어가면 I/O 성능이 매우 안좋다고 본다. 단, I/O 비동기 처리 기술들이 많이 나왔기 때문에 꼭 높다고 애플리케이션 성능이 안좋다고 생각하면 안된다.

free -m

1
2
3
4
5
6
7
8
9
dotori17@PS-PERSNAL:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          24444        9489       14730          17         223       14823
Swap:         12799          13       12786

dotori17@PS-PERSNAL:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           23Gi       9.3Gi        14Gi        17Mi       223Mi        14Gi
Swap:          12Gi        13Mi        12Gi
  • memory 사용량 확인

sar -n DEV 1

1
2
3
4
5
6
7
8
9
10
11
dotori17@PS-PERSNAL:~$ sar -n DEV 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 	08/31/21 	_x86_64_	(8 CPU)

00:20:30        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
00:20:31         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:20:31         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:20:31         eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:20:31           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:20:31        wifi0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:20:31        wifi1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00:20:31        wifi2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • 여러 서버의 정보들을 취합하는데 사용.
    • -n 옵션을 사용하여 네트워크 상태 확인
    • DEV : 모든 네트워크 디바이스의 상태
    • rxkB/s : 초당 받은 kb 사이즈
    • txkB/s : 초당 보낸 kb 사이즈

sar -n TCP,ETCP 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dotori17@PS-PERSNAL:~$ sar -n TCP,ETCP 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 	08/31/21 	_x86_64_	(8 CPU)

00:23:19     active/s passive/s    iseg/s    oseg/s
00:23:20         0.00      0.00      0.00      0.00

00:23:19     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
00:23:20         0.00      0.00      0.00      0.00      0.00

00:23:20     active/s passive/s    iseg/s    oseg/s
00:23:21         0.00      0.00      0.00      0.00

00:23:20     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
00:23:21         0.00      0.00      0.00      0.00      0.00

00:23:21     active/s passive/s    iseg/s    oseg/s
00:23:22         0.00      0.00      0.00      0.00

00:23:21     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
00:23:22         0.00      0.00      0.00      0.00      0.00
  • TCP : tcp 를 통한 네트워크 처리 현황 확인
  • ETCP : TCP 처리 시에 발생한 에러들의 갯수 확인
  • 항목들 설명
    • active/s : 장비에서 외부로 초기화된 초당 tcp 연결 갯수 이 값이 많으면 해당 서버에 새롭게 접근한 클라이언트 수가 많다는 의미 java socket 통신 시 connect() 메소드에 해당
    • passive/s : 외부에서 장비로 초기화된 초당 TCP 연결 갯수 java socket 통신 시 accept() 메소드에 해당
    • retrans/s : 초당 재전송된 세크먼트 총 갯수 보통은 재전송이 발생하지 않으므로 0보다 클 경우 네트워크나 서버에 문제가 발생했을 가능성이 있음.

top

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
dotori17@PS-PERSNAL:~$ top
top - 00:28:21 up  9:45,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:  20 total,   1 running,  19 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  2.4 sy,  0.0 ni, 97.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  24444.2 total,  14829.1 free,   9391.1 used,    224.0 buff/cache
MiB Swap:  12800.0 total,  12786.5 free,     13.5 used.  14922.5 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                      
    1 root      20   0    8940    320    272 S   0.0   0.0   0:00.04 init                         
   92 root      20   0   20224   1100   1000 S   0.0   0.0   0:00.00 sshd                         
   95 root      20   0   21828   5120   4960 S   0.0   0.0   0:00.05 sshd                         
  154 dotori17  20   0   21828   2104   1972 S   0.0   0.0   0:00.45 sshd                         
  155 dotori17  20   0   18224   3832   3716 S   0.0   0.0   0:00.24 bash                         
  183 root      20   0    8940    228    184 S   0.0   0.0   0:00.00 init                         
  184 dotori17  20   0   10656    680    648 S   0.0   0.0   0:00.00 sh                           
  185 dotori17  20   0   10656    748    712 S   0.0   0.0   0:00.00 sh                           
  191 dotori17  20   0   10656    716    680 S   0.0   0.0   0:00.01 sh                           
  193 dotori17  20   0  932404  53088  22388 S   0.0   0.2   0:11.79 node                         
  204 dotori17  20   0  621264  23640  14460 S   0.0   0.1   0:00.23 node                         
  234 dotori17  20   0 1006076 128496 119872 S   0.0   0.5   5:51.25 node                         
  241 dotori17  20   0  898380  35464  14720 S   0.0   0.1   0:27.78 node                         
 9784 dotori17  20   0  690412 116872  16372 S   0.0   0.5   0:02.10 node                         
16475 dotori17  20   0  664036  76156  14552 S   0.0   0.3   0:07.80 node                         
27153 dotori17  20   0  725992 178652  11132 S   0.0   0.7   0:38.52 bundle                       
30135 root      20   0   21828   5120   4964 S   0.0   0.0   0:00.07 sshd                         
30196 dotori17  20   0   21828   2100   1980 S   0.0   0.0   0:00.13 sshd                         
30197 dotori17  20   0   18092   3628   3544 S   0.0   0.0   0:00.04 bash                         
 5402 dotori17  20   0   18932   2104   1460 R   0.0   0.0   0:00.01 top     
  • 시스템 전반적인 현황 실시간 파악 용도
  • cpu를 많이 사용하므로 부하가 심한 단점이 있기때문에 조심해서 사용

[참고도서] : 자바 트러블슈팅 (이상민 저) - jpub

This post is licensed under CC BY 4.0 by the author.