printk() 함수
printk() 함수는 리눅스 커널에서 메시지 출력과 디버깅을 위한 핵심 도구 중 가장 기본이 되는 도구이다. 이 글에서는 printk() 함수의 기능, 사용법, 예제 코드, 그리고 유용한 팁에 대해 알아본다. printk() 함수…
printk() 함수는 리눅스 커널에서 메시지 출력과 디버깅을 위한 핵심 도구 중 가장 기본이 되는 도구이다. 이 글에서는 printk() 함수의 기능, 사용법, 예제 코드, 그리고 유용한 팁에 대해 알아본다. printk() 함수…
리눅스 커널은 다양한 비동기 작업을 관리하기 위한 여러 메커니즘을 제공하는데, 그 중 Tasklet과 Workqueue는 주목할 만한 두 가지 방법이다. 이 두 가지 메커니즘은 각각 고유한 특성과 사용 사례를 가지고 있으며,…
cgroup v1 하에서는 시스템 프로세스들에 대한 계층 구조를 각기 제공하는 별게 cgroup 파일시스템의 각 컨트롤러를 마운트 할 수 있다. 또한 같은 cgroup 파일시스템에 여러 (또는 모든) cgroup v1 컨트롤러들을 함께…
리눅스 커널에서 initcalls는 초기화 함수를 실행하는 메커니즘으로 커널 초기화 단계에서 시스템의 다양한 구성 요소를 초기화하는 데 사용된다. 이번 글에서는 initcalls의 동작 원리와 사용 방법에 대해 알아보고, 커널 코드 및 예제를…
cgroups Notification API를 통해 cgroup의 상태 변경에 대한 알림을 받을 수 있다. 이를 활용하면 메모리 Threshold를 등록하고 도달 시 알림을 받을 수 있다. 메모리 Threshold 등록 방법 메모리 Threshold를 등록하기…
memory 서브시스템(memcg)은 프로세스 그룹의 메모리 리소스를 효율적으로 관리하는 기능이다. 이를 통해 메모리 사용량을 제한하고, Out-of-Memory(OOM) 상황을 방지할 수 있다. 또한 메모리 사용량 모니터링을 통해 리소스 사용 상태를 파악할 수 있으며,…
cpu 서브시스템은 리눅스 커널에서 프로세스 그룹의 CPU 리소스를 효과적으로 제어하기 위한 기능이다. CPU 할당량 설정과 우선순위 조정을 통해 리소스 사용을 조절하고 프로세스 그룹 간의 스케줄링 시간 분배를 설정할 수 있다.…
cgroups는 리눅스 운영 체제에서 프로세스 그룹에 대한 자원 할당과 제한을 관리하는 기능이다. 리눅스 커널에서 제공하는 컨트롤 그룹(Control Group)의 약어로도 알려져 있으며, cgroups를 활용하면 프로세스 그룹 간의 리소스 사용을 조정하여 시스템…
프로그래머들은 SW개발 중에 버그를 찾고 해결하기 위해 디버깅 작업을 수행한다. 리눅스 환경에서는 PTRACE라는 강력한 도구를 사용할 수 있는데, 개발자들은 이를 직접 이용하거나, 이를 이용하는 툴들을 사용하여 프로세스 디버깅을 할…