사용자/응용 프로그램이 직접 작업으로 파일을 만들려고 할 때 커널이 작동하는 방식을 이해하고 싶습니다.커널이 새로운 파일 생성을 처리하는 방법
배경 - JMS를 통해 메시지를 소비하고 처리 한 다음 아웃 바운드 대기열 + 로컬 디렉토리에 XML을 쓰는 Java 응용 프로그램이 있습니다. 어제 우리는 디렉토리에 서면으로 비공식적 인 지연을 포기했다. 'ls | wc -l'에 300,000 개가 넘는 파일이 있습니다. 이 과정에서 빠른 strace를 수행하여 mutex 호출로 가득 찬 것으로 나타났습니다 (strace에서 3/4 이상의 호출은 뮤텍스였습니다).
그래서 나는 시스템이 매번 300,000 개의 파일 중에서 특정 항목 (예 : 특정 이름의 새 파일을 만들 수 있는지 확인하기위한 파일 이름)을 검사해야하므로 새 파일 작성에 시간이 걸린다 고 생각했습니다. 파일.
디렉토리를 지우고 응용 프로그램이 일반 서비스 수준으로 재개되었습니다.
내 질문에
- 내 분석 (그것은 명확한 후 벌금을 아래로 일하기 시작 응용 프로그램 사촌 것) 올바른 되었습니까?
- 더 많은 imporatant, 디렉토리에 새 파일을 만들려고 할 때 커널이 어떻게 작동합니까?
- 비정상적인 수의 뮤텍스 호출이 디렉토리의 많은 수의 파일에 귀속 될 수 있습니까?
많은 덕분에 많은 수의 항목에 J
커널이 파일을 만들지 않습니다. 파일 시스템은 파일을 생성합니다. "사촌"이란 무슨 뜻입니까? 영어가 아닌 독자에게 영어를 사용하십시오. –