WORKER_POOL

포스트: 2|아이템:WORKER_POOL(2)
Tags

Posts

2 posts

[리눅스커널] 워크큐(workqueue): Trace32로 워크큐 자료 구조 디버깅하기

Guillermo Austin Kim|2019년 2월 21일

이번 시간에는 임베디드 디버깅 프로그램인 Trace32를 써서 워크큐 자료구조를 점검합니다. 리눅스 커널 시스템에서 커널 크래시가 나면 생성되는 vmcore를 올려 확인한 내용입니다. 참고로, vmcore는 라즈베리파이가 아니라 다른 ARM64비트 아키텍처를 적용한 시스템에서 받았습니다. 먼저 시스템 워크큐 전역 변수를 확인합니다.var.view %type %string system_wq1 (static struct workqueue_struct *) system_wq = 0xFFFFFFC632C15080 -> (2 (struct list_head) pwqs = ((struct list_head *) next = 0xFFFFFFC63A3B2870 3 (struct list_head)

[라즈베리파이] 워크큐(Workqueue) 용어 알아보기

Guillermo Austin Kim|2018년 8월 20일

이번에는 워크큐에서 쓰이는 여러 용어를 소개합니다.많은 개발자들이 워크큐를 낯설어하는 이유는 자료구조와 그 개념을 익히기 어렵기 때문입니다. 워크와 워커쓰레드 그리고 풀워크가 자료구조가 어떤 형태로 연결되서 처리하는지 큰 그림을 그리기 어렵습니다. 각각 의미와 자료 구조를 살펴보겠습니다. 1. 워커 쓰레드우선 워커 쓰레드부터 알아보겠습니다. 워커 쓰레드는 워크를 실행하는 프로세스입니다. 리눅스 시스템에서 항상 백그라운드로 실행하는 친숙한 프로세스입니다. 프로세스 이름은 "kworker/"로 시작하며 워크큐 종류에 따라 "kworker/" 이후 번호가 붙습니다. 다음은 라즈베리파이에서 확인한 워커 쓰레드입니다.root@raspberrypi:/# ps -ely | grep kworkerS UID P