2014-04-08 2 views
0

나는 리눅스의 TCP/IP 프로토콜 스택을 분석하고 평가하는 방법을 연구 중이다. 필자의 목표는 tcp/ip 프로토콜 스택의 성능을 전체적으로 연구하고 각 계층의 시간 비용과 tcp/p 프로토콜과 ip 계층의 queuinf 계층 간의 상호 작용을 연구하는 것입니다.리눅스 커널에 코드를 추가하는 방법은 무엇입니까?

위 작업을 수행하려면 다음을 수행하십시오. Linux의 TCP/IP 프로토콜의 내부 동작을 연구하기 위해 프로빙 노드 기반 스키마를 사용하고 있습니다. 프로빙 노드는 타임 스탬프, 큐 길이 및 패킷 크기와 같은 정보를 기록하기 위해 커널에 추가 된 코드 조각입니다.

내 질문 : 어떻게 프로브 노드를 커널에 추가 할 수 있습니까?

+0

Linux가 잘 모르는 경우에는 커널을 패치하지 마십시오. 그렇지 않으면 자신 만의 커널 모드를 작성하십시오. http://kernelnewbies.org/ –

+0

@ user3458454 참조 * Kprobe * 및 * Jprobe * : http://www.opensourceforu.com/2011/04/kernel-debugging-using-kprobe-and-jprobe/ –

+0

가능한 커널에서 다시 타임 스탬프를 보내 ?? 파일에 저장하고 싶지 않습니다. – user3458454

답변

0

SystemTap 등을 사용할 수 있습니다.이 도구의 주요 아이디어는 탐색 노드를 어딘가에 두는 것입니다 : 커널 또는 사용자 공간 프로그램.

SystemTap을 배울 시간이 없다면 printk을 커널에 넣고 dmesg에서 읽을 수 있습니다.

두 경우 모두 인쇄물로 인해 네트워크 스택에 큰 지연이 발생합니다. 프로빙으로 인한 지연을 줄이려면 SystemTap을 사용하고 시간 샘플을 어딘가에 저장하고 수집이 끝날 때만 인쇄하는 것이 좋습니다.

+0

tcp/ip 계층을 통해 새로 도착한 데이터를 스케줄링하기 시작할 때 커널의 타임 스탬프를 얻는 방법 ?? 데이터가 커널의 소켓에 도착했을 때와 커널에서 스케줄링을 시작할 때 인터럽트 대기 시간을 분석합니다. – user3458454

+0

예 : https://sourceware.org/systemtap/SystemTap_Beginners_Guide/iotimesect.html. 그러나 당신은 당신의 경우를 조정해야합니다. – Federico

관련 문제