나는 임베디드 리눅스 용 애플리케이션을 작성 중이며, 프로세서 시간의 5 %는 파일을 읽는 중이고 95 %는 처리 중이다. 한 스레드에서 파일을 읽고 다른 스레드에서 계속 처리하면 성능이 향상 될 수 있습니까?이 경우 별도의 스레드에서 파일을 읽어야합니까?
DMA 지원이있는 mmc 카드에서 읽는 중입니다. 파일 크기는 20MB이며 2KB의 덩어리로 나뉩니다. 독자 스레드에서 청크를 대기열에두고 프로세서 스레드에서 처리합니다. 따라서 스레드 동기화는 대기열에서만 삽입 및 삭제할 때 필요합니다.
ARM9 용으로 프로그래밍 중입니다.
빠른 단일 스레드/다중 스레드이어야합니다.
왜 2KB입니까? 그것은 MMC 또는 메모리 아키텍처의 자연적인 크기입니까? 크기를 조정하면 성능을 향상시킬 수 있습니다. –
좋아, 팀, 내가 그것을 시도합니다. – SunnyShah
리눅스의 C 및 C++ 라이브러리는 일반적으로 버퍼링 된 I/O를 수행 할 때 8KiB 시스템 호출을 사용한다고 생각합니다. Linux 블록 장치는 순차적 읽기를 수행 할 때 128KiB 미리 읽기로 기본 설정됩니다. –