본문 바로가기

programming/Linux

(17)
우분투 모듈 디버깅 모음(module debugging) insmod: ERROR: could not insert module vif.ko: Unknown symbol in module vif: Unknown symbol tg_get_cfs_quota (err -2) vif: Unknown symbol tg_set_cfs_quota (err -2) >> 커널이 심볼을 못 찾는 문제, dmesg 와 심볼테이블에서 체크해본결과 >> cat /proc/kallsyms 결과 위치는 알려져 있지만 코드에서 EXPORT_SYMBOL을 하지않아 링킹이 되지 않아 심볼 주소를 해석할 수가 없음 >> /include/linux/sched.h 수정 & /kernel/sched/core.c 수정 /usr/src/linux-5.1.5/kernel/sched/core.c 에서 해당함..
kvm_entry & kvm_exit 2019.11.27 counting events 파트 kvm_entry, kvm_exit https://www.linux-kvm.org/page/Main_Page /usr/src/linux-5.1.5/tools/perf/perf stat -e 'kvm:*' -a sleep 1m 결과 정리 2019.11.27 스프레드 시트에 정리해둠. https://patchwork.kernel.org/cover/10989117/ “record" enables recording of two pair of tracepoints: - "kvm:kvm_entry" and "kvm:kvm_exit" - "kvm:kvm_trap_enter" and "kvm:kvm_trap_exit" "report" reports statistic..
netperf 우분투 네트워크 성능 측정 도구(ubuntu network performance tool) 1. netperf란? 2. netperf 설치 3. netperf 사용법 4. netperf 상세 사용법 1. netperf란? Netperf 는 네트워크의 두 호스트간에 네트워크 대역폭 테스트 를 제공하는 소프트웨어 응용 프로그램입니다 . BSD 소켓을 통해 Unix 도메인 소켓 , TCP , SCTP , DLPI 및 UDP를 지원합니다. Netperf는 예를 들어 벌크 (단방향) 데이터 전송을 측정하거나 응답 성능을 요청하기 위해 사전 정의 된 여러 테스트를 제공합니다. 2. netperf 설치법 apt-get install으로 성능 검사하는 우분투와 서버 우분투 두곳에 설치하면 됩니다. $apt-get install netperf 3. netperf 사용법 3.1 server에서 netserver..
리눅스 용량 부족할때 커널로그 삭제 우분투를 사용하던중 사용하던 kvm이 동작을 안하고 tab키를 눌러 자동완성을 하는것도 잘안되는 상황이 나타났다. -bash: cannot create temp file for here-document : No space left on device df -h 로 디스크 공간을 확인해보니 100%으로 꽉차있었다.. 휴지통을 비워도 그대로였다.. 도대체 뭐가 이렇게 쌓여있는걸까.. /var/log로 들어가 보니 엄청나게 많은 log파일이 존재하고 있었다...! cat /dev/null > /var/log/kern.log 를 사용하면 파일 자체와 모든 퍼미션은 그대로 가지고 내용만 지울수 있다! 파일의 크기가 '0'이된다. 하지만 rm -r * 으로 모든 로그파일을 삭제해버렸다. 모두 삭제하니 무려 22G이나..
ftrace 커널 성능 측정도구 사용법[How to ues ftrace] /sys/kernel/debug/tracing 이라는 폴더에 ftrace가 있다. ftrace는 성능에서 실질적으로 오버헤드가 없는 상태에서 추적이 가능하다 ...더보기 라고 문서에 나와있지만 netperf 측정시, ftrace를 키고하니 성능이 30%정도 내려갔다. 일반 프로그램에선 오버헤드가 별로 없지만 커널 컴파일등의 상황에서는 오버헤드를 확인할 필요가 있다. 기본사용법으로 1. 필터할 커널 함수 설정 2. trace되는 결과 설정 3. trace 결과 4. 추가적인 옵션 1. trace filter 함수 설정 set_ftrace_filter 파일에 어떤 함수를 trace하고 싶은지 설정한다. $echo vhost* > set_ftrace_filter $echo handle_rx* >> set_ft..
Linux module comfile kernel 리눅스 모듈 컴파일 커널 함수 실행시간 측정 함수 실행시간 측정 예제 : "Ubuntu 18.04.2 LTS", 5.1.5에서 진행 hello.c /******************************************************** ********함수가 시작되고 종료되기 까지의 시간 측정******** ********************************************************/ #include #include #include //#include #include #include #include //struct timespec start_point, end_point; //int sec; //long nsec; #define MAX_FUNC 20//허용가능한 함수의 개수 int fperf_num=0;//현재..
perf 설명 및 간단 사용법 (Performance Counter for Linux) 1. perf란? 2. perf설치 3. perf 종류 및 사용법 1. perf란? 리눅스 시스템 성능 프로 파일링하는 도구이다. 더보기 프로파일링 (profiling, 프로그램 프로파일링/소프트웨어 프로파일링) 또는 성능 분석은 프로그램의 시간 복잡도 및 공간(메모리), 특정 명령어 이용, 함수 호출의 주기와 빈도 등을 측정하는 동적 프로그램 분석의 한 형태이다. 프로파일링 정보는 대개가 프로그램 최적화를 보조하기 위해 사용된다. 프로파일링은 프로파일러(profiler)라는 도구를 사용하여 프로그램 소스 코드나 이진 실행 파일을 계측 분석함으로써 수행한다. linux kernel에 포함된 systeml 영역부터 user-level까지 한번에 성능(프로세스 및 코어별 사용량, 캐시 미스 등)에 대한 tr..
우분투 프로파일링 perf, top 정확도(ubuntu performance tools) 커널의 병목현상을 확인하기 위해 보통 프로파일링도구를 사용한다. 보통 perf와 top, htop등을 사용한다. perf는 아래의 단계를 진행한다. sampling을 통한 event정보 수집 및 분석 profiling : 병목 구간을 찾아내기 위함 측정중 htop과 top는 비슷한 결과가 나오지만 perf stat을 통한 측정은 다른 결과가 나오는걸 확인했다. top방식은 약 99%으로 측정이 되지만 perf stat는 긴시간에도 불구하고 80%정도의 성능이 측정되었다. 추후 알게된 결과로는 perf 사용시 process 번호를 지정하지 않으면 정확도가 떨어진다. 그래서 cpu 사용량 성능 측정시에는 perf를 사용하지 않고 pidstat 이나 mpstat를 사용하는게 좋은것 같다.