stat()가 실제 하드 디스크 액세스를 유발합니까, 아니면 정보가 캐시됩니까?

stat()가 실제 하드 디스크 액세스를 유발합니까, 아니면 정보가 캐시됩니까?

PHP opcode 캐시를 최적화할 때 통계 설정을 교대로 시도해 보았습니다(= opcode 캐시는 파일이 수정 사항을 통과했는지 확인한 stat()다음 캐시된 결과를 사용합니다). 하지만 애플리케이션 벤치마크에서는 아무런 차이가 없습니다. 사용 중인 파일 시스템이 ext4옵션을 통해 마운트 되었습니다 noatime.

사용된 메타데이터가 정확하다고 가정합니다.통계()stat(), 메모리에 보관됩니까, 아니면 사용할 때 항상 일종의 하드 드라이브 상호 작용이 있습니까?

답변1

stat(파일의 메타데이터) 반환된 데이터는 다른 파일 시스템 데이터처럼 캐시됩니다. 최근에 액세스하여 여전히 캐시에 남아 있는 경우 RAM의 다른 항목이 이를 대체할 때까지 후속 액세스가 더 빨라집니다.

파일 내용에 액세스해도 해당 메타데이터가 메모리에 로드되지 않습니다(그 반대의 경우도 마찬가지).

확인에는 stat약간의 추가 비용이 듭니다(메타데이터가 캐시에 있는 경우에는 약간이지만 여전히 약간의 비용이 듭니다). 이것이 잠재적인 추가 처리를 보상하는지 여부는 수행하려는 처리량과 IO/CPU 포화 비율에 따라 다릅니다.

관련 정보