Process

    Process Profiling

    1. Perf + FlameGraph Process의 FlameGraph를 뽑아내는 과정을 설명한다. Perf의 --call-graph 기능을 이용한다. 1) Kernel setting echo -1 > /proc/sys/kernel/perf_event_paranoid echo 0 > /proc/sys/kernel/kptr_restrict chmod a+r /proc/kallsyms echo 100 > /proc/sys/kernel/perf_cpu_time_max_percent echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2) Get perf data perf record -o perf.data --call-graph=..

    Strace - trace system calls and signals

    Strace - trace system calls and signals

    Stracetrace system calls and signals strace는 linux에서 발생하는 문제들을 해결할 수 있는 여러 툴 중 system call을 추적할 수 있는 강력한 툴입니다. System call은 open, write, read, mmap... 등등 여러분들도 잘 알고 계신 함수들입니다. System calls은 User process가 kernel에 어떠한 작업을 요청하기 위한 인터페이스 역할을 합니다. (그림 출처 : Self-Service Linux : Mastering the Art of Problem Determination) 여기서 말하는 요청이란 User process에서는 접근할 수 없는 disk, network, memory 같은 시스템 자원에 접근하고 IPC, ..

    [Linux Kernel] 프로세스 상태 분석

    [Linux Kernel] 프로세스 상태 분석

    리눅스에서 프로세스의 상태를 한번 알아보겠습니다. 프로세스에 대해서는 앞에서도 간단히 설명 드렸습니다. 실행중인 프로그램이라고 단순히 설명 할 수 있습니다. 이러한 프로세스들은 여러가지의 상태를 가지게 되는데, 이 상태들에 대해 오늘 한번 알아보겠습니다. 구글에 검색해 보면 많은 사람들이 자료를 블로깅해 놓았을텐데, 보면 다들 분류하는 상태의 갯수가 다른 것 처럼 보입니다. 하지만 크게 보시면 시스템의 프로세스는 5가지의 상태를 가지게 됩니다. 1179 struct task_struct { 1180 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1181 void *stack; 1182 atomic_t usage; 1183 unsigne..

    [Linux Kernel] Process - Task struct(프로세스 서술자)

    프로세서에 대해 간단히 설명했었다.이번 시간에는 프로세스 서술자에 대해서 한번 알아보기로 한다.커널은 프로세스들을 task_list라고 부르는 환형 양방향 링크드리스트를 이용하여 관리, 저장한다.서로서로 연결되어 있다면?? 현재 실행중인 프로세스에서 다른 프로세스 서술자의 정보를 확인할 수 있다는 것인가? 그 부분에 대해서는 아래에서 알아보도록 하자. task_list의 각 항목을 프로세스 서술자라고 하며 에 struct task_struct 형식으로 되어있다. 아래가 task_struct가 가진 정보들이다. 1179 struct task_struct { 1180 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1181 void *sta..

    [Linux Kernel] 프로세스란?

    Process란 무엇인가에 대해 알아보겠습니다.프로세스란 이름은 정말 많이 들어보셨을테고, 무엇인지에 대해서도 많이 아시기 때문에여기서는 간단하게 한번 더 Remind하는 시간을 가지겠습니다. 프로세스를 많은 사람들이 실행 중인 프로그램이라고 알고 있습니다.맞는 말입니다. 틀린 말이 아니죠. 프로세스는 사용 중인 파일, 데이터, 프로세서 상태, 메모리 영역 주소 공간, 스레드 정보, 전역 데이터가 저장 된 메모리 부분 등 수 많은 자원을 포함하는 개념입니다.종종 스케줄링의 대상이 되는 작업(task)라고 불리기도 한답니다. 프로세스는 최소 하나의 스레드를 가지고 있습니다. UNIX 시스템에서는 하나의 프로세스는 하나의 스레드 만을 가지고 있었지만, 리눅스 시스템에서는 하나의 프로세스가 하나의 스레드만 가..