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
사용
cat trace_pipe
cat trace_pipe | grep nfs
cat trace_pipe > kernel_trace.txt