2010-08-22 2 views

답변

5

랜덤 (즉 순차적이지 않은) 읽기/쓰기를 많이하고 컨텍스트 스위치/syscalls에 저장하려는 경우 스 캐터/수집기 IO를 사용합니다. 이러한 의미에서 스 캐터/수집기는 일괄 처리의 한 형태입니다. 그러나 매우 빠른 디스크 (또는 대용량 디스크 배열)가 없으면 시스템 비용은 무시할 수 있습니다.

데이터베이스 서버를 작성하는 경우이 문제에 신경을 쓸 수도 있지만 수천 또는 수백만 건의 요청을 처리하는 대용량 철 기계보다 작은 것은 이점이 없습니다.

+2

이제 2017 년에는 미드 레인지 랩탑에서 100k IOPS SSD를 보는 것이 일반적입니다. 우리가 말하는 큰 머신을 효과적으로 사용한다는 것을 의미합니까? 따라서 무작위 판독을 위해 벡터화 된 IO를 구현해야합니까? – Soonts

1

난 당신이 (가) 의심되는 응용 프로그램이 있었다 때 분산 gatehr IO를 사용하는 것이라고 상상 (b)이를 사용하여 중요한 개선안을 보여줄 수있는 성능 분석 프레임 워크를 구축했습니다. 당신이 증명 개선을 표시 할 수 있습니다하지 않는 한

은 추가 코드의 복잡성은 위험, 그리고 어떤 조건이 충족 될 때, 말한다 마법 레시피를 프로그래머 없으며, 응용 프로그램이 자동으로 일부 프로그램 영리함에서 상당한 방법으로 도움이됩니다.

또는 다른 방법으로 말하자면 '인터넷 포럼의 일부 사람'의 말을 기반으로 주요 건축 결정을 내리지 마십시오. 테스트를 만들고 알아보십시오.

5

Paul - 한 가지 추가 이점은 동시에 여러 요청을 디스크 드라이버에 전달한다는 것입니다. 그런 다음 드라이버는 요청을 정렬하여 최적의 순서로 발행 할 수 있습니다. syscall 시간은 적지 만 검색 시간 (수 밀리 초)은 징벌적일 수 있습니다 (즉, 1000 I/O 미만/초).

효율성을 보여주는 Chris의 의견은 실용적입니다. 어머니 본성은 결코 거짓말을하지 않습니다. 글쎄, 거의 절대. 하나는 제안 POSIX 추가 한

가 수행 된이 readx 및 writex 원하는 이동에 POSIX, readv는에서

+0

현재 NT에서 흩어져있는 입출력은 하나의 인접한 세그먼트에서 여러 페이지의 맵 외에도 특별한 작업을 수행하지 않으며 드라이버는이를 알지 못합니다. 따라서 드라이버는 "요청을 정렬하여 최적의 순서로 발행하지"않습니다. – wj32

+0

비동기 I/O도이 작업을 이미 수행합니다. 커널이 어떤 페이지에 대한 정보가 없기 때문에 임의의 페이지에 대한 동기화 I/O를 수행하는 단일 프로세스 인 경우에만이 작업을 수행 할 수 있습니다. 다음에 물어볼거야. –

0

및 읽거나 불연속 메모리에 기록하지만, 읽고 불연속 파일을 작성하는 writev는 불연속 메모리 범위 readx는 단 한 번의 시스템 호출 일뿐 아니라 디스크 스케줄러가 가장 많은 io를 가지고 있기 때문에 읽기가 더 빠르다. ext2/3/fsck 프로그램에서 알고있는대로 이것을 원한다는 것을 기억한다. 어떤 범위를 원하는가

관련 문제