/sys/kernel/debug/tracing/trace는 몇 초 후에 자신을 덮어씁니다. 반복적인 수집을 방지하려면 어떻게 해야 합니까?

/sys/kernel/debug/tracing/trace는 몇 초 후에 자신을 덮어씁니다. 반복적인 수집을 방지하려면 어떻게 해야 합니까?

Linux(Ubuntu 18)에서 추적 프로그램을 설정할 때 function_graph/sys/kernel/debug/tracing/trace에 저장된 추적은 덮어쓰기 전 몇 초 동안만 저장됩니다.

기간은 변경될 수 있으므로 예를 들어 저장할 수 없습니다.

cat /sys/kernel/debug/tracing/trace >> total_trace

후처리 중에 허용되지 않는 중복이 생성될 수 있기 때문입니다. 무엇보다도 일부 정보가 손실될 수 있습니다.

파일을 열고 새로 들어오는 모든 정보를 다른 파일로 파이프하는 방법이 있습니까?

감사해요

답변1

~에서ftrace 문서:

trace_pipe:

    출력은 "추적" 파일과 동일하지만 이 파일은 라이브 추적을 통한 스트리밍용으로 설계되었습니다. 이 파일에서 데이터를 읽는 것은 새 데이터가 검색될 때까지 차단됩니다. "추적" 파일과 달리 이 파일은 소비자입니다. 즉, 이 파일을 읽으면 현재 데이터를 더 많이 표시하기 위해 순차적으로 읽혀집니다. 이 파일에서 데이터를 읽으면 해당 데이터가 소비되며 순차 읽기를 통해 다시 읽혀지지 않습니다. "추적" 파일은 정적이며 추적기가 더 많은 데이터를 추가하지 않으면 읽을 때마다 동일한 정보를 표시합니다. 추적을 비활성화하지 않고 파일을 읽습니다.

또는 사용trace-cmd(1),특히trace-cmd-show. 매뉴얼 페이지에서:

-p                        (소문자 "P")

    "trace" 파일의 내용을 표시하는 대신 "trace_pipe" 파일을 사용하십시오. 둘 사이의 차이점은 "추적" 파일이 정적이라는 것입니다. 즉, 추적이 중지되면 "추적" 파일은 매번 동일한 내용을 표시합니다.

        "trace_pipe" 파일은 소모적 읽기이며, 파일을 읽으면 읽은 내용의 출력이 소모되며, 추적이 중지되더라도 동일한 내용은 다시 읽혀지지 않습니다. 파일도 차단됩니다. 사용 가능한 데이터가 없으면 trace-cmd show중지되고 데이터가 나타날 때까지 기다립니다.

또한보십시오케니오의 대답도착하다ftrace에서 Trace_pipe의 버퍼 크기를 설정하는 방법은 무엇입니까?trace(스택 오버플로에서) 파일의 크기와 동작을 변경하는 방법을 알아보세요  .

답변2

사용

  1. cat trace_pipe
  2. cat trace_pipe | grep nfs
  3. cat trace_pipe > kernel_trace.txt

관련 정보