programing

이 트레이스 시스템 호출은 무엇을 의미합니까?

subpage 2023. 11. 5. 14:41
반응형

이 트레이스 시스템 호출은 무엇을 의미합니까?

내가 strace를 사용하고 있는 어플리케이션의 성능을 프로파일링해야 합니다.하지만 저는 스트레이스가 내뿜는 다양한 시스템을 어떻게 해석해야 할지 잘 모르겠습니다.그 중 몇 가지 예는 다음과 같습니다.

(A) lseek(3, 1600, SEEK_SET)                = 1600
(B) write(3, "G_DATA    300        0          "..., 800) = 800
(C) close(3)                                = 0
(D) mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b600b179000
(E) munmap(0x2b600b179000, 4096)            = 0
(F) fstat(3, {st_mode=S_IFREG|0644, st_size=1600, ...}) = 0

I/O, 전송된 데이터, 성능에 대한 중요성 등의 측면에서 (A)에서 (F)로 이어지는 이러한 선들이 무엇을 의미하는지 간단한 영어로 설명해 주시면 감사하겠습니다.

저는 strace의 맨 페이지를 살펴보았지만 아직도 그다지 자신이 없습니다.제가 읽을 수 있는 다른 조언을 해주시면 감사하겠습니다.

저는 운영 체제에 대한 배경 지식이 있으며 시스템 호출, 메모리, 가상 메모리, 스케줄링 등에 대해 잘 알고 있습니다.

이를 이해하기 위해서는 POSIX 시스템 호출을 숙지해야 합니다.사용자 공간 프로그램이 커널과 상호 작용하기 위해 사용하는 인터페이스입니다.

lseek,write,close,mmap,munmap그리고.fstat는 모두 시스템 호출이며 Linux 매뉴얼의 섹션 2에 문서화되어 있습니다.

간단히,lseek제공된 파일 설명자의 내부 포인터를 두 번째 인수가 가리키는 위치를 가진 바이트로 이동합니다. 시작은SEEK_SET(처음),SEEK_CUR(현재 위치) 또는SEEK_END(끝).연속된 임의read그리고.write동일한 설명자에 대한 호출은 이 위치에서 작업을 시작합니다.참고:lseek디스크에 있는 파일은 의미가 있지만 소켓이나 파이프에는 의미가 없습니다.

write제공된 버퍼를 커널 공간에 복사하고 실제로 쓴 바이트 수를 반환합니다.디스크립터의 종류에 따라 커널은 디스크에 데이터를 쓰거나 네트워크를 통해 데이터를 전송할 수 있습니다.이 버퍼를 커널로 전송해야 하므로 일반적으로 비용이 많이 드는 작업입니다.

close제공된 디스크립터를 닫으면 커널에서 디스크립터와 관련된 모든 리소스가 해제됩니다.각 공정에는 동시에 열려 있는 기술자의 수에 제한이 있으므로 이 제한에 도달하지 않으려면 기술자를 닫아야 하는 경우가 있습니다.

mmap는 복잡한 시스템 호출이며 공유 메모리를 포함한 다양한 용도로 사용됩니다.그러나 일반적인 사용법은 프로세스를 위해 더 많은 메모리를 할당하는 것입니다.malloc그리고.calloc도서관 기능은 대개 내부적으로 사용합니다.

munmap자유를 주다mmap기억력이 떨어졌군요.

fstat파일 시스템이 파일 크기, 최종 수정한 파일, 권한 등에 대해 보관하는 다양한 정보를 반환합니다.

각 명령에는 수동 페이지가 있으며 입력하여 읽을 수 있습니다.man예를 들어 C 함수의 이름.man lseek(또한 확인)apropos전달된 매개변수에 대한 설명도 있습니다.

다음은 간단한 요약입니다.

  • lseek- 파일 설명자의 읽기/쓰기 파일 간격띄우기 위치 변경
  • write- 버퍼에서 파일 설명자에 쓰기
  • close- 프로세스별 개체 참조 테이블에서 디스크립터 삭제
  • mmap- 메모리 할당 또는 파일 또는 장치를 메모리에 매핑합니다.
  • munmap- 지정한 주소 범위에 대한 매핑을 제거합니다.
  • fstat- 경로별로 가리키는 파일 상태 가져오기

단일/무작위 대칭을 해석하는 것은 성능 측면에서 의미가 없습니다.이러한 syscall의 성능에 대한 유의성을 검정하려면 다음을 사용해야 합니다.-c각 syscall에 대한 시간, 호출 및 오류를 세고 요약을 보고할 수 있는 parameter.그러면 여러분은 가장 오랜 시간이 걸리는 이것들에 대해 더 많이 읽을 수 있습니다.

출력에 대한 자세한 내용 및strace파라미터, 확인합니다.

참고 항목:셸의 strace를 평문으로 구문 분석하는 방법은?

언급URL : https://stackoverflow.com/questions/6334515/what-do-these-strace-system-calls-mean

반응형