파일 IO가 OS 미치는 부분에 대한 궁금증..(윈도우긴 합니다만 리눅스도 궁금하네요)
안녕하세요...
한가지 궁금한 부분이 있어서 질문을 올립니다.
현재 작업은 윈도우 환경이라서 KLDP에 올리는것이 맞지 않다고는 생각하나..딱히 고수분들의 의견을
들을만한 공간이 마땅치가 않아서요..
상황은 이렇습니다.
프로세스 하나가 여러개의 Thread를 발행하여 각 Thread들이 열심히 연산작업을 하고 있습니다.
이때 휘발성으로 사라지는 Thread하나가 발생하면서 약 500Mb정도의 파일을 CreateFileMapping방법으로
파일을 기록하게 됩니다.
근데 이때 연산처리를 하고 있는 Thread들에서 지연이 발생되더라고요...
음..이게 CPU연산과 File I/O간에 연결관계의 부족한지라... 잘 이해가 안되더라고요..
File I/O처리가 동기식으로 뭔가 처리하고 있다치면 Thread간 context switching 이 발생되는것이 아니라.
프로세스 단위로 context switching 발생하여 제 프로세스가 딜레이가 발생되어 Thread의 연산효율이 떨어지는것인지...
이렇게 생각하된 이유는 C드라이브에 파일을 사용하면 느려지고 D드라이브쪽에 파일을 생성하면 괜찮더라고요
이렇게 보면 파일 I/O로 인한 CPU 연산능력에 부하가 걸려 떨어진다라고 보기에는 어렵다는 생각이 들더라고요..
그래서 제 프로세스쪽에 File I/O를 발생시키면 C드라이브가 바빠서 그 처리가 지연됨에 따라 프로세스 단위로
context switching 발생되어 제 프로세스쪽이 지연되는것이 아닌가란 생각이 들었습니다.
하지만 이또한..잘 이해가 안되네요 File I/O를 발생시키는 Thread에서 다른 쓰레드로 처리연산이 넘어가면 되는것
이 아닌가란 생각이 드는 부분도 있고...
부족한 부분이 너무 많네요...
비록 윈도우 이긴하나 선배님들은 조언을 들으면 좋을거 같습니다...
추가적으로 리눅스에 대해서도 같이 공유해주시면 금상첨화일거 같습니다.
감사합니다.
댓글 달기