이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 cpipe입니다.
프로그램:
이름
cpipe - 바이트를 계산하고 진행 상황을 보고하는 동안 stdin을 stdout으로 복사
개요
c파이프 [-b 크기] [-vt] [-vr] [-vw] [-ngr] [-s 속도]
옵션
-b 버퍼 크기(KB),
1 1과 oo 사이의 Int 값.
기본값: '128'
-vt는 처리량을 보여줍니다.
-vr 읽기 시간을 표시합니다.
-vw 쓰기 시간을 표시합니다.
-ngr 탐욕스럽지 않은 읽기. 쓰기를 시작하기 전에 읽기에 전체 버퍼를 적용하지 마십시오.
-s 처리 속도 제한(kB/s),
1 1과 oo 사이의 Double 값.
기술
씨파이프 시간을 측정하면서 표준 입력을 표준 출력으로 복사합니다.
입력 버퍼를 읽고 출력 버퍼를 씁니다. 다음 중 하나 이상이 -vx 옵션은
주어진 경우 평균 처리량 통계와 복사된 총 바이트 양이 인쇄됩니다.
표준 오류 출력으로.
비 탐욕스러운 읽기
일반적으로 cpipe는 버퍼를 완전히 채우기 위해 최선을 다합니다(옵션 -b) 시작하기 전에
글쓰기. 그러나 일부 상황에서는 예를 들어 cpipe를 통해 대화식 프로그램과 대화하는 경우,
이것은 통신을 교착 상태에 빠뜨립니다. 해당 프로그램은 결코 볼 수 없는 입력을 기다립니다.
입력이 cpipe의 버퍼에 갇혀 있기 때문입니다. 그러나 cpipe 자체는 더 많은 입력을 볼 수 없습니다.
프로그램이 응답하지 않기 전에.
이 문제를 해결하려면 다음을 사용해 보십시오. -ngr. 읽기 호출을 발행할 때 cpipe는 다음과 같이 만족됩니다.
적어도 XNUMX바이트를 얻자마자. 버퍼를 채우는 대신 읽기를 중지하고
출력에 무엇이든지 씁니다. 그러나 처리량 측정은
하나의 읽기/쓰기 쌍에서 전송된 바이트 수가 작아지면 정확도가 떨어집니다.
cpipe는 모든 바이트에서 작업하는 데 상대적으로 더 많은 시간을 소비하기 때문입니다.
제한 맞춤형 설비
옵션으로 처리량 제한이 지정된 경우 -s, c파이프 통화 잠자다(3) 사이
버퍼를 복사하여 읽기/쓰기 주기의 지속 시간을 인위적으로 연장합니다. 부터
대부분의 시스템에는 usleep()이 휴면하는 특정 최소 시간(예: 0.01초)이 있습니다.
작은 버퍼 크기로 높은 한계에 도달하는 것은 불가능합니다. 이 경우 증가
버퍼 크기(옵션 -b) 도움이 될 수 있습니다. 그러나 이것은 처리량을 제한한다는 점을 명심하십시오.
평균적으로만. 모든 단일 버퍼는 가능한 한 빨리 복사됩니다.
예
명령
tar cCf / - usr | cpipe -vr -vw -vt > /dev/null
결과는 다음과 같습니다.
...
입력: 19.541MB/s에서 6.4ms(평균 4.7MB/s) 2.0MB
출력: 0.004GB/s에서 30.5ms(평균 27.1GB/s) 2.0MB
통과: 19.865MB/s에서 6.3ms(평균 4.6MB/s) 2.0MB
...
The 먼저 칼럼 하나의 데이터 버퍼를 처리하는 데 걸리는 시간을 보여줍니다(기본적으로 128kB).
읽기 호출은 19.541ms가 걸렸고 /dev/null에 대한 쓰기 호출은 0.004ms에 불과했습니다.
읽기 시작부터 쓰기 끝까지 19.865ms가 걸렸습니다.
The 초 칼럼 버퍼 크기(기본적으로 128kB)를
첫 번째 열의 시간.
The 제삼 칼럼 시작부터 모든 측정 값에 대한 평균을 포함합니다.
프로그램)
마지막으로, 지난 칼럼 물론 전송된 총 바이트 수를 보여줍니다.
읽기와 쓰기도 마찬가지다.
onworks.net 서비스를 사용하여 cpipe 온라인 사용