vmsata 모니터링 명령 상세 정보
일반적으로 vmstat 도구의 사용은 두 개의 디지털 매개 변수를 통해 이루어진다. 첫 번째 매개 변수는 샘플링 시간 간격수, 단위는 초, 두 번째 매개 변수는 샘플링 횟수이다. 예를 들어
root@ubuntu:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo cs us sy id wa
2는 2초에 한 번씩 서버 상태를 채집하고, 1은 한 번만 채집한다.
실제로 응용 과정에서 우리는 일정 시간 동안 계속 모니터링을 할 것이다. 모니터링을 하기 싫으면 vmstat을 끝내면 된다. 예를 들어
root@ubuntu:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo cs us sy id wa
이것은 vmstat이 2초마다 데이터를 수집하고 내가 프로그램을 끝낼 때까지 계속 채집한다는 것을 나타낸다. 여기서 데이터를 다섯 번 채집하면 나는 프로그램을 끝낸다.
자, 명령 소개가 끝났습니다. 지금부터 매개 변수의 뜻을 실전적으로 설명하겠습니다.
r는 실행 대기열을 나타낸다. (즉, 몇 개의 프로세스가 CPU에 할당되었는지) 내가 테스트한 서버는 현재 CPU가 비교적 한가하고 프로그램이 달리지 않는다. 이 값이 CPU 수를 초과하면 CPU 병목이 발생한다.이것도 top의 부하와 관계가 있다. 일반적으로 부하가 3을 넘으면 비교적 높고, 5를 넘으면 높고, 10을 넘으면 정상이 아니다. 서버의 상태가 매우 위험하다.top의 부하는 초당 운행 대기열과 유사합니다.만약 운행 대기열이 너무 크면 당신의 CPU가 매우 바쁘다는 것을 나타낸다. 일반적으로 CPU 사용률이 매우 높을 것이다.
b는 막힌 프로세스를 나타낸다. 이것은 말할 것도 없고, 프로세스가 막힌 것을 모두가 알고 있다.
swpd 가상 메모리가 사용된 크기가 0보다 크면 기계의 물리적 메모리가 부족하다는 것을 나타냅니다. 프로그램 메모리가 유출된 원인이 아니라면 메모리를 업그레이드하거나 메모리를 소모하는 작업을 다른 기계로 옮겨야 합니다.
free 비어 있는 물리적 메모리의 크기, 내 기계 메모리는 모두 8G, 나머지 3415M이다.
buff Linux/Unix 시스템은 저장, 디렉터리에 어떤 내용, 권한 등을 저장하는 캐시입니다. 제 컴퓨터는 대략 300여 M을 차지합니다.
cache cache는 우리가 열었던 파일을 기억하고 버퍼링하는 데 직접 사용됩니다. 제 컴퓨터는 대략 300여 M을 차지합니다. (여기는 Linux/Unix의 똑똑한 부분입니다. 빈 물리적 메모리의 일부분을 파일과 디렉터리의 캐시로 가져옵니다. 프로그램이 실행하는 성능을 향상시키기 위해서입니다. 프로그램이 메모리를 사용할 때buffer/cached는 빠르게 사용됩니다.)
초당 디스크에서 가상 메모리의 크기를 읽습니다. 만약 이 값이 0보다 크면 물리적 메모리가 부족하거나 메모리가 유출되었음을 나타냅니다. 메모리 소모 프로세스를 찾아 해결해야 합니다.나의 기계는 메모리가 충분해서 모든 것이 정상이다.
초당 가상 메모리가 디스크에 기록되는 크기입니다. 이 값이 0보다 크면 위에 있습니다.
Bi블록 장치는 1초에 수신되는 블록 수량입니다. 이 블록 장치는 시스템의 모든 디스크와 다른 블록 장치를 가리키며 기본 블록 크기는 1024byte입니다. 저는 이 컴퓨터에 IO 작업이 없기 때문에 항상 0입니다. 그러나 대량의 데이터(2-3T)를 복사하는 기계에서 140000/s에 달할 수 있다고 보았습니다. 디스크 쓰기 속도의 차이는 1초에 140M가 많지 않습니다.
bo 블록 장치가 매초에 보내는 블록 수량, 예를 들어 우리가 파일을 읽으면 bo는 0보다 크다.bi와 bo는 일반적으로 0에 가까워야 한다. 그렇지 않으면 IO가 너무 잦아서 조정이 필요하다.
in 시간 중단을 포함한 초당 CPU 중단 횟수
cs 초당 상하문 전환 횟수, 예를 들어 우리가 시스템 함수를 호출하면 상하문 전환, 라인 전환, 프로세스 상하문 전환도 해야 한다. 이 값은 작을수록 좋다. 너무 크다. 라인이나 프로세스의 수를 낮춰야 한다. 예를 들어apache와nginx 같은 웹 서버에서 우리는 일반적으로 성능 테스트를 할 때 수천 개의 병발, 심지어 몇 만 개의 병발 테스트를 한다.웹 서버를 선택하는 프로세스는 프로세스나 루틴의 최고치가 계속 하향 조정되고 cs가 비교적 작은 값에 도달할 때까지 압력을 측정할 수 있습니다. 이 프로세스와 루틴 수는 비교적 적합한 값입니다.시스템 호출도 매번 시스템 함수를 호출할 때마다 우리의 코드는 내부 핵 공간에 들어가 상하문 전환을 초래한다. 이것은 자원을 많이 소모하고 시스템 함수를 빈번하게 호출하는 것을 피해야 한다.상하문 전환 횟수가 너무 많다는 것은 당신의 CPU가 대부분 상하문 전환에 낭비되어 CPU가 진지한 일을 하는 시간이 적고 CPU를 충분히 이용하지 못한 것은 바람직하지 않다는 것을 나타낸다.
us 사용자 CPU 시간, 나는 암호화 복호화가 빈번한 서버에서 us가 100에 가깝고 r의 운행 대기열이 80에 달하는 것을 볼 수 있었다(기계가 압력 테스트를 하는데 성능이 좋지 않았다).
sy 시스템 CPU 시간, 너무 높으면 시스템 호출 시간이 길다는 것을 나타냅니다. 예를 들어 IO 작업이 빈번하다는 것입니다.
id 유휴 CPU 시간, 일반적으로 id+us+sy=100, 일반적으로 나는 id는 유휴 CPU 사용률, us는 사용자 CPU 사용률,sy는 시스템 CPU 사용률이라고 생각한다.
wt 입출력 CPU 대기 시간.
에서http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html”