[리눅스커널][워크큐] 딜레이 워크(delayed_work) 소개
By Guillermo Austin Kim | 2019년 2월 12일 |
딜레이 워크 소개 워크큐는 대표적인 커널 후반부 처리 기법으로 후반부 처리 코드를 워크 핸들러에서 실행합니다. 동기적으로 처리 할 필요가 없는 코드를 워크 핸들러에 위치시켜 비동기적으로 커널 쓰레드 레벨에서 처리하는 겁니다. 이런 구조로 드라이버를 설계하면 다양한 디바이스 드라이버 시나리오에 맞게 코드를 구성할 수 있습니다. 워크에서 유연성을 추가한 기법이 딜레이 워크입니다. 딜레이 워크란 무엇인가? 구체적으로 딜레이 워크란 무엇일까요? 딜레이 워크는 워크를 일정 시각(HZ 단위) 후에 지연시켜 실행합니다. 여기서 말하는 지연 시각은 디바이스 드라이버 시나리오에 맞게 변경할 수 있습니다. 라즈베리파이에선 진동수인 HZ는 100입니다. 예를 들어 다음 온도를 콘트롤하는 드라이버 시나리오를 생
[리눅스커널] 메모리 관리: kmalloc 캐시 슬럽 오브젝트 할당 커널 함수 분석하기
By Guillermo Austin Kim | 2019년 9월 1일 |
우리는 'kmalloc() 함수를 호출하면 동적 메모리를 할당할 수 있다.'란 사실을 알고 있습니다. 하지만 kmalloc() 함수에서 호출하는 커널 내부 함수는 거의 분석하지는 않는 듯 합니다. 이번 시간에는 kmalloc() 함수와 이 함수에서 호출하는 다음 함수를 분석합니다.kmalloc_index()kmem_cache_alloc_trace()slab_alloc()slab_alloc_node() kmalloc() 함수 분석하기 우리가 드라이버 드라이버에서 동적 메모리를 할당할 때 주로 사용하는 함수는 kmalloc()입니다. 그런데 kmalloc() 함수는 생각보다 분석하기 어렵습니다. 슬랩 캐시와 슬럽 오브젝트의 개념을 알고 있어야 분석이 가능하기 때문입니다. 이어서
리눅스에서 특정 프로세스가 점유하고 있는 메모리 크기 확인하기
By 반달가면 | 2022년 12월 6일 |
리눅스에서 어느 프로세스가 어느 정도의 메모리를 점유하고 있는지 확인하려면 ps 명령에서 출력 옵션을 지정하면 된다. -o 옵션으로 출력할 항목을 설정할 수 있다. 필요한 출력 항목은 아래와 같다. user 프로세스 사용자 pid 프로세스ID rss 점유하고 있는 메모리 크기(kB) cmd 실행 명령(프로세스 명칭) -e 옵션으로 모든 프로세스를 출력하도록 지정하고 -o 옵션을 조합한다. 아래의 예시다. ps -eo user,pid,rss,cmd -o 옵션의 인자를 설정할 때 쉼표(,) 다음에 공백이 없어야 함에 유의하자. 이제 여기에 grep 명령을 조합하면 내가 관심 있는 프로세스의 메모리 점유를 확인할 수 있다. # firefox 프로세스의 메모리 점유 확인
리눅스 민트에서 nVidia 그래픽 드라이버 설치
By 반달가면 | 2017년 7월 17일 |
최근에 리눅스 민트(Linux Mint)를 설치한 PC에서 3D 가속을 사용하기 위해 nVidia 그래픽 드라이버를 설치하게 되었다. 어쨌든 성공적으로 되긴 했는데 그 과정에서 좀 헤맸던 관계로 여기에 정리해 두기로. 가장 처음에 해 본 것은 리눅스 민트에 기본으로 제공되는 "드라이버 매니저(driver manager)"라는 프로그램이었는데, nVidia 드라이버를 선택해서 적용했는데 시간이 지나도 별 반응이 없길래 취소. 두번째로 nVidia 웹사이트에서 리눅스용 지포스(Geforce) 드라이버를 다운로드해서 설치를 시도했다. 그러나 안타깝게도 드라이버 설치 파일을 실행하면 대략 아래와 같은 오류 메세지와 함께 설치가 중단되었다. ERROR: You appear to be running a