[리눅스커널] 메모리 관리: 슬럽 오브젝트 해제하는 kfree() 함수 분석하기
By Guillermo Austin Kim | 2019년 9월 1일 |
kmalloc() 함수로 동적 메모리를 할당하고 난 후 사용하지 않으면 메모리를 반환해야 합니다. 이 때 kfree() 함수를 사용하면 됩니다. 이번 시간에는 kfree() 함수를 분석하면서 커널 내부에서 반환하는 동적 메모리를 어떻게 처리하는지 살펴보겠습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/source/mm/slub.c]01 void kfree(const void *x)02 {03 struct page *page;04 void *object = (void *)x;0506 trace_kfree(_RET_IP_, x);0708 if (unlikely(ZERO_OR_NULL_PTR(x)))09 return;1011 page = virt_to_h
[리눅스커널] Process - 프로세스, 경량 프로세스, 스레드 소개
By Guillermo Austin Kim | 2018년 9월 30일 |
프로세스라는 개념은 모든 멀티프로그래밍 운영체제의 기본입니다.프로세스는 실행중인 프로그램의 인스턴스로 정의할 수 있는데, 16명의 유저가 vi를 동시에 실행하면 각각 16개의 프로세스가 존재합니다. (물론 vi 코드는 동일한 것을 공유할 수 있습니다). 리눅스 코드에서는 프로세스를 태스크(task)나 쓰레드(thread)라고 부릅니다. 프로세스, 경량 프로세스 그리고 쓰레드프로세스라는 용어는 여러가지 다른 추상화 개념으로 씁니다. 프로세스는 프로그램이 어디까지 실행되었는지를 완벽하게 알고 있는 자료 구조체라 볼 수 있습니다. 프로세스는 마치 인간과 같습니다. 프로세스는 생성되고 중요하게 관리될 수 있으며 사소하기도 한 삶을 살고, 자식 프로세스를 생성하기도 하고 마지막에는 죽습니다. 아주 작은 차이가
[리눅스커널] 메모리관리/디버깅: ftrace로 메모리 할당 해제 확인하기
By Guillermo Austin Kim | 2019년 9월 1일 |
ftrace에서 지원하는 kmalloc와 kfree 이벤트를 사용하면 kmalloc()와 kfree() 함수를 호출할 때 세부 정보를 알 수 있습니다.kmalloc 이벤트: kmalloc() 함수로 메모리 할당을 요청했을때 동작 kfree 이벤트: 할당한 메모리를 해제했하는 동작 kmalloc와 kfree 이벤트 소개하기 그러면 kmalloc와 kfree 이벤트를 켜서 ftrace를 받으면 어떤 패턴의 메시지를 볼 수 있을까요? 다음 로그를 같이 보겠습니다. [https://elinux.org/Kernel_dynamic_memory_analysis]1 init-1[000] .N..0.170000: kmalloc: call_site=c104deff ptr=c147dd20 bytes_req=29
MS_SQL 서버 메모리 강제 반환 방법
By Keep Going | 2017년 5월 12일 |
![MS_SQL 서버 메모리 강제 반환 방법](https://img.zoomtrend.com/2017/05/12/b0080534_591545fe8f8bb.jpg)
1. MS_SQL Management Studio 실행 2. 서버 연결(로그인) 3. Management Studio 개체 탐색기에서 서버에 마우스 우클릭 후 속성 클릭 4. 속성에 메모리 선택 후 서버 메모리 옵션에서 최대 서버 메모리를 최소한 가능 용량으로 설정 5. 하단에 확인 누르면 작업 관리자 -> 성능 -> 리소스 모니터에서 감소 확인 다시 최대 서버 메모리값 설정 완료. SQL 서버 서비스를 정지 시켰다가 다시 올리면 좋지만 부득이하게 정지할 수 없는 경우 사용.