sar -W 와 sar -B 출력의 차이점은 무엇입니까? 비슷해 보이지만 매뉴얼 페이지에서는 이 문제에 대해 더 혼란스러워질 뿐입니다. 누구든지 이 문제를 명확히 설명할 수 있습니까?
답변1
스위치 는 나중에 나온 -W
원래 스위치인 것 같습니다 . -B
매뉴얼 페이지의 주석에도 이 내용이 나와 있는 것 같습니다. 이 -B
스위치에는 최신 버전의 Linux 커널(2.5 이후)에 공개되는 최신 통계가 있습니다.
-W
용법
-W는 교환 통계를 보고합니다. 다음 값이 표시됩니다.
pswpin/s Total number of swap pages the system brought in per second. pswpout/s Total number of swap pages the system brought out per second.
-B
용법
-B는 페이징 통계를 보고합니다. 다음 측정항목 중 일부는 2.5 이후의 커널에만 적용됩니다. 다음 값이 표시됩니다.
pgpgin/s Total number of kilobytes the system paged in from disk per second. Note: With old kernels (2.2.x) this value is a number of blocks per second (and not kilobytes). pgpgout/s Total number of kilobytes the system paged out to disk per second. Note: With old kernels (2.2.x) this value is a number of blocks per second (and not kilobytes). fault/s Number of page faults (major + minor) made by the system per second. This is not a count of page faults that generate I/O, because some page faults can be resolved without I/O. majflt/s Number of major faults the system has made per second, those which have required loading a memory page from disk. pgfree/s Number of pages placed on the free list by the system per second. pgscank/s Number of pages scanned by the kswapd daemon per second. pgscand/s Number of pages scanned directly per second. pgsteal/s Number of pages the system has reclaimed from cache (pagecache and swapcache) per second to satisfy its memory demands. %vmeff Calculated as pgsteal / pgscan, this is a metric of the efficiency of page reclaim. If it is near 100% then almost every page coming off the tail of the inactive list is being reaped. If it gets too low (e.g. less than 30%) then the virtual memory is having some difficulty. This field is displayed as zero if no pages have been scanned during the interval of time.
예
-B
및 switch 의 출력을 보면 -W
차이점을 명확히 하는 데 도움이 될 수 있습니다.
-W
$ sar -W
02:50:01 PM pswpin/s pswpout/s
03:00:01 PM 0.57 1.71
03:10:01 PM 0.31 0.02
03:20:01 PM 0.80 1.25
03:30:01 PM 0.41 0.68
03:40:01 PM 0.57 1.02
03:50:01 PM 0.88 0.00
-비
$ sar -B
02:50:01 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
03:00:01 PM 96.10 615.25 6113.00 0.44 7612.77 105.80 0.00 96.48 91.19
03:10:01 PM 14.91 562.47 5250.07 0.17 7029.09 26.63 0.00 23.72 89.08
03:20:01 PM 16.95 620.39 7265.82 0.26 9115.73 92.36 0.11 83.01 89.77
03:30:01 PM 28.84 566.17 8768.76 0.21 10750.77 63.20 0.21 58.65 92.49
03:40:01 PM 16.05 641.84 10343.84 0.31 12473.88 45.40 0.11 41.01 90.11
03:50:01 PM 18.20 647.99 10272.98 0.25 12187.26 0.00 0.00 0.00 0.00
차이점은 -W
데이터가 1초에 들어오고 나가는 페이지 수와 관련된 반면, 스위치는 -B
1초에 들어오고 나가는 총 데이터 양(킬로바이트)을 표시한다는 것입니다.
답변2
sar -B
제가 보기엔 매뉴얼 페이지가 잘못된 것 같습니다. 리눅스 소스코드에 따르면http://lxr.free-electrons.com/source/mm/page_io.c?v=4.6, PSWPIN은 에서 증가합니다 swap_readpage()
. 함수 를 클릭하면 swap_readpage()
클래식 가상 메모리 커널 페이징을 처리하기 위해 직접 호출되는 것을 볼 수 있습니다(스와핑과 혼동하지 마세요). 즉, 디스크를 시스템 메모리의 액세서리로 사용할 때 사용됩니다.
submit_bio()
PGPGIN은 다음과 같이 유지됩니다 .http://lxr.free-electrons.com/source/block/blk-core.c?v=4.6. 이를 클릭하면 보다 일반적인 디스크 I/O에 사용되는 것을 볼 수 있습니다.
따라서 sar -W
의 카운터는 가상 메모리와 관련된 페이지를 지정합니다("스왑"은 요즘 매우 느슨하게 사용되는 용어로, 일반적으로 "하드 디스크에 프로세스 메모리 블록을 저장하는 것과 관련된"을 의미한다고 생각합니다).
sar -B
디스크 I/O가 있으면 카운터(적어도 몇 개)가 업데이트됩니다. 예를 들어 다른 카운터는 fault/s
프로세스에 즉시 액세스할 수 없는 메모리 페이지를 처리합니다(참조:http://linoxy.com/linux-command/commands-to-understand-page-faults-in-linux/, "...요청된 페이지가 주 메모리에 있지만 초기화되지 않은 메모리 또는 COW(기록 중 복사) 페이지로 인해 프로세스가 해당 페이지에 액세스할 수 없는 경우 이를 마이너 페이지 오류라고 합니다..."). Google은 그들이 계산하는 내용이 정확히 무엇인지 더 잘 이해하도록 도와줄 수 있습니다.