>  기사  >  시스템 튜토리얼  >  Linux에서 vmstat 명령을 사용하는 방법

Linux에서 vmstat 명령을 사용하는 방법

WBOY
WBOY앞으로
2024-02-14 23:09:02781검색

vmstat는 virtual memory statistics의 약자입니다. Linux에서 매우 유용한 모니터링 도구이며, 메모리 외에도 블록 IO 및 CPU 시간과 같은 추가 정보도 제공합니다.

문법

vmstat 명령 실행에는 특별한 권한이 필요하지 않으며 일반 사용자가 실행할 수 있습니다.

으아악

데이터 업데이트 간격을 초 단위로 나타냅니다. 이 값을 지정하지 않으면 시스템이 시작된 이후의 평균 시간을 나타내며 이때 결과는 한 번만 출력됩니다. delay개수 는 출력 횟수를 나타냅니다. 이 값을 지정하지 않고

값을 지정하면 무제한

을 의미합니다. count 表示输出次数,如果没有指定该值,但是指定了 delay

결과 필드 설명

명령줄에

를 입력하고 Enter를 누르면 결과가 한 번 출력됩니다

으아악 vmstat결과에는 여러 필드가 있습니다. 다음 표에는 각 필드에 대한 자세한 설명이 나열되어 있습니다.

필드 지침
r 실행 및 준비 상태를 포함한 실행 가능한 프로세스 수
b 무중단 절전 상태의 프로세스 수
swpd 가상 메모리 사용량
무료 여유 메모리
버프 버퍼로 사용되는 메모리의 양
캐시 캐시로 사용되는 메모리의 양
si 디스크에서 스왑된 메모리의 양
그래서 메모리에서 디스크로 스왑 아웃된 양
블록 장치에서 수신된 블록, 단위: 블록/초
블록 장치로 전송된 블록, 단위: 블록/초
in 클럭 인터럽트를 포함한 초당 인터럽트 수
cs 초당 컨텍스트 전환
우리 사용자 모드 실행 시간
sy 커널 모드 실행 시간
id CPU 유휴 시간
IO 대기 시간
st 가상 머신에서 도난당한 시간

표의 두 번째 행 处于不可中断睡眠状态的进程数量, uninterruptible은 특정 시스템 호출을 실행할 때 프로세스가 진입하는 상태를 의미합니다. 이 상태에서는 프로세스가 차단되어 시스템 호출이 완료될 때까지 중단할 수 없습니다.

필드 결과는 색상에 따라 위에서 아래로 프로세스 정보, 메모리 정보, IO 정보, 시스템 인터럽트 및 컨텍스트, CPU 시간 등 여러 부분으로 나뉩니다

메모리 정보 값의 기본 단위는 KB(1024KB)입니다. CPU 시간 필드는 특정 시간을 나타내는 것이 아니라 전체 CPU 시간의 백분율을 나타냅니다.

공통 옵션

옵션 지침
-아 활성 및 비활성 메모리 표시
-f fork, vfork 및 clone과 같은 시스템 호출을 포함한 시스템 시작 이후 포크 수
-s 시스템 이벤트 수 및 메모리 통계 표시
-d 디스크 통계 보고
-D 활성 디스크 정보 통계
-p 지정된 파티션의 세부정보
-t 시간 표시 열 추가
-S 지정된 바이트 단위에 따라 표시
-w 결과는 와이드 모드로 표시됩니다
-V vmstat 버전

常见用法

vmstat 命令主要用于识别系统的瓶颈,统计数据的时候,它不会包含自身进程

  • 按照指定时间间隔和次数输出
[root@cghost22 ~]$ vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0  12552 148356 234324 3382956    0    0     1    21    4    4  2  2 97  0  0
 1  0  12552 148264 234324 3382980    0    0     0     0 14974 27478  3  2 96  0  0
 1  0  12552 148232 234324 3382984    0    0     0    14 14384 27181  3  2 96  0  0
 0  0  12552 148376 234332 3383052    0    0     0   204 14197 26812  4  2 94  0  0
 0  0  12552 148512 234332 3383088    0    0     0     4 14398 27155  3  2 95  0  0
 0  0  12552 147892 234332 3383128    0    0     0   210 15515 28802  3  2 95  0  0
 1  0  12552 148388 234332 3383156    0    0     0     0 15147 28042  3  2 95  0  0
 0  0  12552 148264 234332 3383168    0    0     0     4 14380 27395  3  1 96  0  0
 0  0  12552 148264 234336 3383216    0    0     0   198 14430 27008  3  1 95  0  0
 2  0  12552 148140 234336 3383252    0    0     0     6 14233 27161  3  2 95  0  0

2 表示每隔 2 秒输出一次结果,10 表示总共输出 10 次,10 次之后程序自动结束

  • 修改内存显示单位

输出的结果中,内存数据的单位默认是 KB,可以通过 -S 选项调整显示的单位,有下面几种单位可供选择

注意:-S 选项对 si、 so 字段无效

k    # 1000 bytes
K    # 1024 bytes
m    # 1000 * 1000 bytes
M    # 1024 * 1024 bytes
Linux 下如何使用 vmstat 命令

上图中第一个结果中内存数据显示单位是 KB , 第二个结果中单位是 MB,将第一个结果对应字段的数值除以 1024 就得到了第二个结果

  • 活跃内存和非活跃内存
Linux 下如何使用 vmstat 命令

inact 是非活跃内存,active 是活跃内存

活跃内存是进程在使用的内存,非活跃内存是未运行进程的内存

  • 系统启动以来 fork 的数量

这里的 fork 数量包括 fork、vfork 以及 clone 等系统调用

[root@cghost22 ~]# vmstat -f
        12714 forks
[root@cghost22 ~]# vmstat -f
        12715 forks
[root@cghost22 ~]# vmstat -f
        12716 forks

我们每次在控制台执行一次命令,系统就会 fork 一个新的进程来执行命令,比如像上面的例子,每执行一次 vmstat -f 命令,系统就会 fork 一个新进程

这个选项还可以用于统计某个操作消耗多少次 fork 调用,只需要在操作前后各执行一次 vmstat -f 命令,比较两次结果的差值即可

  • 每行追加一列时间

追加一列时间显示,有助于比较一段时间内的结果

Linux 下如何使用 vmstat 命令
  • 按照宽模式显示

vmstat 结果中的某些字段的数字有时会比较长,而且跟字段名的位置有偏差, 不太适合人类的观看习惯,-w 选项可以按照宽模式显示数据,使结果看起来更直观,下图是分别未使用宽模式和使用了宽模式的一个对比

Linux 下如何使用 vmstat 命令
  • 统计磁盘信息
Linux 下如何使用 vmstat 命令

磁盘信息主要分三个方面:读、写、IO ,读和写以毫秒为单位,IO以秒为单位

读
    total:     成功读取的总数
    merged:    分组读取(产生一个 IO)
    sectors:   成功读取的扇区数
    ms:        读取花费的毫秒
    
写
    total:      成功写入的总数
    merged:     分组写入(产生一个 IO)
    sectors:    成功写入的扇区数
    ms:         写花费的毫秒
    
IO
    cur:    正在进行的IO
    s:      IO花费的秒数
  • 指定磁盘分区信息
Linux 下如何使用 vmstat 命令

上图中,输出结果显示 sda3 分区设备的信息,它们包括:读计数、读取的扇区数,写计数,分区写请求总数

위 내용은 Linux에서 vmstat 명령을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제