순시 처리량을 어떻게 계산할 수 있습니까? 예를 들어, 파일을 다운로드 할 때 브라우저가 수행하는 것과 유사한 방식으로. 이는 단순히 평균 처리량이 아니라 순간적으로 추정하는 것입니다. 아마도 '이동 평균'을 사용했을 것입니다. 알고리즘을 찾고 있는데 C++로 지정할 수 있습니다. 이상적으로는 스레드를 포함하지 않고 (즉, 지속적으로 새로 고침, 매초마다), 값이 요청 될 때만 평가됩니다.처리량 네트워크 추정
답변
here 설명과 같이, 지수 이동 평균을 사용할 수 있지만 수식 반복합니다 :
accumulator = (alpha * new_value) + (1.0 - alpha) * accumulator
는 추정을 달성하면 매 초마다 계산을 조회하려는 생각하기를,하지만 당신이 원하는 마지막 순간의 평균.
struct AvgBps {
double rate_; // The average rate
double last_; // Accumulates bytes added until average is computed
time_t prev_; // Time of previous update
AvgBps() : rate_(0), last_(0), prev_(time(0)) {}
void add (unsigned bytes) {
time_t now = time(0);
if (now - prev_ < 60) { // The update is within the last minute
last_ += bytes; // Accumulate bytes into last
if (now > prev_) { // More than a second elapsed from previous
// exponential moving average
// the more time that has elapsed between updates, the more
// weight is assigned for the accumulated bytes
double alpha = (now - prev_)/60.0;
rate = alpha * last_ + (1 - alpha) * rate;
last_ = 0; // Reset last_ (it has been averaged in)
prev_ = now; // Update prev_ to current time
}
} else { // The update is longer than a minute ago
rate_ = bytes; // Current update is average rate
last_ = 0; // Reset last_
prev_ = now; // Update prev_
}
}
double rate() {
add(0); // Compute rate by doing an update of 0 bytes
return rate_; // Return computed rate
}
};
당신은 실제로 대신 time
의 단조 클럭을 사용한다 : 다음, 여기에 견적을 얻을 수있는 하나 개의 방법이 될 것입니다.
그게 아마도 내가 뭘 찾고있어, 고마워. 나는 초당 얼마나 많은 시간을 처리해야하는지에 대해 잘 알고 있지 않다. 이전에 액세스 한 것처럼 값을 계산할 수 있지만 미리 정의 된 액세스 시간이 없다는 것을 알고 있습니까? 또한 코드에 대해 더 설명하거나 설명해 주시겠습니까? 저는 C++을 잘 못합니다. 잘 작성되었지만 초보자를 읽기가 어렵습니다. – NaomiJO
@NaomiJO : 코드는 쿼리 빈도 나 업데이트 빈도에 영향을주지 않습니다. 그러나 업데이트가 이전 업데이트에서 60 초보다 긴 경우 현재 업데이트를 마지막 순간의 비율로 사용합니다. – jxh
인라인 주석을 주셔서 대단히 감사합니다. 매우 신중하게 읽어 드리겠습니다. 질문이 더 있으시면 다시 연락 드리겠습니다. – NaomiJO
아마도 박스형 평균을 원할 것입니다.
그냥 마지막 n 개의 값을 유지하고 평균을 구하십시오. 후속 블록마다 가장 오래된 것을 빼고 가장 최근의 것을 더합니다. 부동 소수점 값의 경우 집계 된 오류가 발생할 수 있으므로이 경우 m 값마다 처음부터 합계를 다시 계산할 수 있습니다. 물론 정수 값의 경우에는 그런 것이 필요하지 않습니다.
그건 재미있는 생각이에요. 부동 소수점 값에 대해서는 언급하지 않았습니다. 발생할 수있는 문제에 대해 더 자세히 설명해 주시겠습니까? 그리고 '후속 블록'이란 무엇을 의미합니까 (패킷이 전송되지 않을 때 리프레시되는 방식은 x 밀리 초마다 새로 고침됩니까?) (1) 패킷이 전송되거나 2) 값을 액세스해야하며, 마지막으로 액세스 한 시간의 기록을 유지하는 내부 변수 형식을 취할 수 있습니다. – NaomiJO
부동 소수점 산술은 약간의 정밀도 오류가 발생할 수 있습니다. 정수만을 다루는 경우 정수 연산은 정확합니다. http://docs.python.org/tutorial/floatingpoint.html 부동 소수점을 사용하는 경우 아마 n 블록마다 처음부터 다시 계산할 수 있습니다. – user1277476
- 1. 네트워크 처리량 계산
- 2. 닷넷 - 현재 네트워크 인터페이스 처리량
- 3. 이성적인 네트워크 연결 대역폭 추정
- 4. scp를 사용하여 네트워크 I/O 속도 추정
- 5. 처리량 및 전송 시간
- 6. nettop을 통한 응용 프로그램 네트워크 처리량 당 OSX
- 7. 처리량 계산
- 8. 포즈 추정
- 9. 커널 추정
- 10. 처리기 데이터 IO 처리량?
- 11. Sleep을 통한 처리량 제어
- 12. MongoDB를 낮은 처리량
- 13. 파이썬 스크립트에서 처리량 증가
- 14. TCP 및 UDP의 처리량
- 15. 처리량 컨트롤러의 목적은 무엇입니까?
- 16. Hadoop MapReduce 처리량 질문
- 17. BOSH 처리량 향상
- 18. TCP 대 UDP 처리량
- 19. RabbitMQ로 처리량 극대화
- 20. iperf 도구 처리량 서버 쪽 또는 클라이언트
- 21. MySQL 데이터베이스 크기 추정
- 22. FFT를 통한 PSD 추정
- 23. 모델 기반 자세 추정
- 24. 대역폭 추정/계산
- 25. python : 최소 제곱 추정?
- 26. 테스트 케이스의 대략적인 추정
- 27. 추정 시간 C++ 11
- 28. SQL 데이터베이스 크기 추정
- 29. 밀도 추정 R
- 30. 예기치 않은 추정 행
패킷 네트워크에는 "순간 처리량"이란 정의가 없습니다. 무한대를 제외하고 거의 항상 0입니다. 거의 확실하게 평균 처리량이 필요하지만 고정 된 기간 (예 : 지난 1 분의 평균)입니다. – MSalters
좋습니다. 파이어 폭스 또는 다른 다운로드 프로그램이 어떻게 작동합니까? – NaomiJO
그들이 게으른 경우. 더 똑똑한 프로그램은 최근 평균과 이전 평균을 모두 사용하지만 최근 평균에 더 많은 가중치를주는보다 복잡한 이동 평균 기능을 사용합니다. – MSalters