2014-10-20 6 views
1

우분투에서 tcpdump 기반 스크립트를 실행하고 있으며 최근에 CentOS 6.5에서 실행하도록 요청 받았으며 매우 흥미로운 차이점을 발견했습니다.libpcap 우분투 14.40과 CentOS 6.5의 libpcap 성능 및 동작 차이

모두 실제로 '나는 두 OS에서 동일한 명령을 실행하는거야

(부팅 된 듀얼) 동일한 하드웨어에서 실행되는 내가 모두 설정에 tcpdump를 4.6.2, libpcap의 1.6.2을 실행하는거야

.

"무료 -k"에서
sudo /usr/sbin/tcpdump -s 0 -nei eth9 -w /mnt/tmpfs/eth9_rx.pcap -B 2000000 

, 나는 우분투에 할당 된 2 세대에 대한 참조

전 :

free -k 
     total  used  free  shared buffers  cached 

의 Mem : 65,928,188 1,337,008 64,591,180 1,164 26,556 68,596 -/+ 버퍼/캐시 : 1241856 64686332 스왑 : 67063804 0 67063804

다음 : 무료 -k tot 3246516이 62,681,672 가 스왑 : 67063804 0 67063804

expr 3341680 - 1337184 

2,004,496

하나 CentOS는, 내가 두 번 참조 -/+ 버퍼/캐시 65,928,188는 3,341,680 62,586,508 1,160 26,572 68,592 가 : 알은 무료 공유 버퍼가 의 Mem 캐시 사용

free -k 
     total  used  free  shared buffers  cached 
,369,136 : 메모리 용량 (4G)는 동일한 명령

앞에서 할당되고3210

의 Mem : 16,225,932 394,000 15,831,932 0 15308 85384 -/+ 버퍼/캐시 : 293,308 15,932,624 스왑 : 후 8183804 0 8183804

: 무료 -k 총 사용 무료 공유 버퍼 캐시 의 Mem : 16,225,932 4,401,652 11,824,280 0 14896 84884 -/+/캐시 버퍼 : 4,301,872 11,924,060 스왑 : 8183804 0 8183804

expr 4401652 - 394000 

4,007,652

명령에서 인터페이스를 청취하고 RAM 디스크에 덤프합니다.

우분투

, I는 대형 패킷 (10G 1024 개 바이트 프레임)

그러나에 CentOS에서 I 만 회선 속도 (10G 1024 개 바이트의 프레임을 60 %의 패킷을 캡처 할 수있는 대 선 속도로 패킷을 캡처 할)

두 OS 모두 동일한 버전의 NIC 드라이버와 드라이버 구성을 실행합니다.

내 목표는 우분투에서와 같이 CentOS에서 동일한 성능을 달성하는 것입니다.

나는 주위를 둘러 보았고 libpcap의 마술은 다른 커널과 다르게 행동하는 것으로 보인다.나는 우분투에서 동일한 성능을 얻기 위해 CentOS 측에서 tweek해야하는 커널 옵션이 있다면 궁금합니다.

답변

0

이것은 답변되었습니다. tcpdump/libpcap의 Guy Harris에 따르면 차이점은 2.6.X 커널을 실행하는 CentOS6.5 때문입니다. 다음은 그의 반응이다 :

" 3.2의 TPACKET_V3 버전 소개"PF_PACKET의 소켓 T (urbo) 패킷 "메모리 매핑 패킷 캡처 메커니즘, 새로운 libpcap의 버전 (1.5 이상) 지원 TPACKET_V3하고 사용을 커널이 지원한다면 TPACKET_V3는 캡쳐 버퍼를 훨씬 더 효율적으로 사용할 수있게 해주 며 적어도 하나의 테스트에서 더 적은 패킷을 버리고 오버 헤드가 적어서 2GB 버퍼를 요구하면 커널 메모리가 적게 듭니다. "