응용 프로그램에서 소켓과 소켓 간 데이터 전송을 위해 Linux에서 splice
을 사용하고 있습니다.다른 운영 체제가 Linux 시스템 호출 스플 라이스를 구현합니까?
- 다른 운영체제 (특히 Windows, OS X 및 FreeBSD 이상)는 또는 이와 동등한 솔루션을 구현합니까?
sendfile
¹ +memmap
으로 Windows에서 소켓 - 소켓 데이터splice
을 모방 할 수 있습니까?
은 모두 내가 기억하지 않는 다른 이름으로 윈도우에 존재 ¹.
당신은 리눅스 사용자 공간 버퍼 대 splice
의 성능 향상을 볼 수 있습니다
업데이트.
DF
,DR
,F
,MF
,MR
는NX
는 Nginx에 웹 서버-p+t
이splice
+p-t
이 사용하는 리눅스 시스템 호출을 사용, 그 다른 터널 모드에서 내 응용 프로그램입니다 사용자 공간 버퍼를 사용한 이식성 구현+p+t
는- 바 기가 바이트에서 제
- 당의 단일 1GB이 (1,048,576,000 바이트) 파일은 4 개의 동시 클라이언트에 의해 4 회 요청하였고 된 스루풋을 나타내는 사용자 공간 버퍼 복수 OS 스레드와 휴대용 구현을 사용
나는이에 대한 몇 가지 생각을 가지고있다. 그러나 내가 대답하기 전에, "정말로 너는 무엇을하려고하니?"라고 묻자. 한 소켓에서 다른 소켓으로 데이터 스트림이나 패킷을 에코하려고합니까? 데이터를 보내기 전에 데이터를 검사해야합니까? – selbie
에코 만 에코. 나는 [PortFusion] (http : //fusion.corsis)이라는 간단한 터널링 솔루션을 연구 중이다.eu)는 데이터 스트림을 검사 할 필요가 없습니다. (그렇다면 사용자 공간에 데이터를 가져 오는 휴대용 구현으로 전환 할 수 있습니다). –
@selbie 다른 운영체제의 'splice'에 해당하는 이유를 설명하기 위해 차트를 추가했습니다. –