이 트레이스 시스템 호출은 무엇을 의미합니까?
내가 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
'programing' 카테고리의 다른 글
AngularJsng-grid 필터 -- 필터텍스트 형식 (0) | 2023.11.05 |
---|---|
동일한 SELECT 절에서 열 별칭 사용 (0) | 2023.11.05 |
Windows에서 Git Bash 대 Windows Power Shell 대 Command 프롬프트의 차이점은 무엇입니까? (0) | 2023.11.05 |
워드프레스필터가추가되지않음 (0) | 2023.11.05 |
wocommerce_shipping_free_shipping_is_available이 작동하지 않습니다. (0) | 2023.11.05 |