내 프로그램이 네트워크에서 Java 객체를 전송하는 데 사용하는 대역폭의 양을 측정하려고합니다. 나는 단순히 객체를 디스크에 직렬화하고 파일 크기를 표시로 사용할 수 있다고 생각했지만 이것이 사실이 아닌 것처럼 보입니다.디스크에 직렬화하고 네트워크를 통해 전송할 때 Java의 크기가 다른 것
cat test_112_512 | grep '54544 >' | awk '{N = N + $NF + 20} END {print N}'
20 바이트이다 :
sudo tcpdump -l -i lo port 54544 | tee test_112_512
그런 다음 나는 다음과 같은 명령을 사용하여 사용되는 전체 트래픽을 결정하기 : tcpdump를 사용하여 네트워크 사용을 캡처하는 동안 내가 한 일은 파일에 객체에는 직렬화했다 tcpdump가 길이를보고 할 때 고려하지 않는 TCP 헤더 (~ 250 패킷)를 설명합니다. grep 부분은 내가 관심이 없기 때문에 돌아 오는 트래픽을 무시하는 것입니다.
이 방법을 사용하면 전체 네트워크 트래픽이 디스크의 파일 크기보다 최대 10 % 가량 적다는 것을 알 수 있습니다. 디스크상의 파일에는 TCP 헤더가 없으므로 예기치 않은 결과가 발생합니다. 내가 뭔가 잘못하고 있는거야?
http://en.wikipedia.org/wiki/Block_%28data_storage%29 –
댓글을 달기보다는 답변으로 게시해야합니다. – WhyNotHugo
파일 크기를 얻기 위해'ls -l'을 사용하고 있습니다. – blz