blktrace - 순차 IO와 무작위 IO 구별

blktrace - 순차 IO와 무작위 IO 구별

저는 응용 프로그램이 순차 I/O를 수행하는지 아니면 임의 I/O를 수행하는지 확인하는 방법을 찾고 있습니다. blktrace 캡처를 보고 I/O가 순차적인지 무작위인지 알 수 있습니까? 그렇다면 어떤 패턴을 찾아야 합니까?

답변1

이 정보를 얻으려면 blktrace+를 사용하는 것이 가능한 것 같습니다 . blkparseU&L Q&A에 포함된 차트를 살펴보십시오.Linux 커널 및 성능 도구 그래프?, 특히 이 섹션.

SS#1

blktrace이런 데이터를 보여드릴 수 있는 위치에 있는 것 같습니다. 매뉴얼 페이지를 보면 출력에 숫자를 포함 blkparse할 수 있다고 명시되어 있습니다 .sector

blkparse 매뉴얼 페이지에서 발췌
OUTPUT DESCRIPTION AND FORMATTING
       The output from blkparse can be tailored for specific use -- in 
       particular, to ease parsing of output, and/or limit output fields
       to  those the user wants to see. The data for fields which can be 
       output include:

       a   Action, a (small) string (1 or 2 characters) -- see table below 
           for more details
       c   CPU id
       C   Command
...
       s   Sequence numbers
       S   Sector number

$ sudo blktrace /dev/sda
Ctrl + C

그런 다음 다음을 사용하여 분석하십시오 blkparse.

$ blkparse sda -f "%-10S %D %2c %8s %5T.%9t %5p %2a %3d\n" | head -10
4064336      8,0    3        1     0.000000000  2779  A   R
5090384      8,0    3        2     0.000000404  2779  A   R
5090384      8,0    3        3     0.000001656  2779  Q   R
5090384      8,0    3        4     0.000010042  2779  G   R
5090384      8,0    3        5     0.000013714  2779  I   R
  8,0    3        0     0.000019067     0  m   N cfq2779SN / insert_request
  8,0    3        0     0.000021085     0  m   N cfq2779SN / add_to_rr
  8,0    3        0     0.000026848     0  m   N cfq2779SN / set_active wl_class:2 wl_type:1
  8,0    3        0     0.000029175     0  m   N cfq2779SN / fifo=          (null)
  8,0    3        0     0.000030077     0  m   N cfq2779SN / dispatch_insert

보고할 부문이 있는 경우 쉼표 없이 숫자(예: 4064336)로 표시됩니다. 따라서 이론적으로는 섹터 번호가 연속인지 무작위인지 확인할 수 있습니다.

어려운 부분은 어떤 응용 프로그램이 낮은 수준에서 어떤 I/O 이벤트를 발생시켰는지 확인하는 것입니다. 이 문제를 해결하려면 fatrace이 U&L Q&A에서 자세히 설명한 다음 도구를 사용할 수 있습니다 .높은 I/O를 담당하는 특정 파일 식별.

인용하다

관련 정보