본문 바로가기

IT 기술/리눅스 커널8

Linux kernel CPU Frequency 변경(DVFS) 코드 아래부분은 CPU DVFS 코드중 governor 정책인 hotplug 에 대해서 분석한 내용이다. 이 내용은 omap 에서만 사용하는 정책으로 보인다. 리눅스 바닐라 커널에서는 보이지 않는다. 하지만, 전체적인 동작방식은 거의 동일하다. 해당 내용은 linux kernel 의 device driver 부분에 구현되어있다.(drivers/cpufreq/) ## drivers/cpufreq/cpufreq_hotplug.c 해당 파일은 크게 두부분으로 나뉘어있다. sysfs 를 구성하는 파일에 대한 내용을 구현한 부분과 governor 의 hotplug 정책에 맞게 cpu load를 계산해서 cpu 를 끄고 켜는 부분이다. 실제 cpu load를 계산해서 cpu up / down을 수행하는 코드의 핵심 함수.. 2011. 2. 11.
kjournald 에 IPPRIO_CLASS_RT 권한 부여 latencytop 이라는 유틸리티를 알아보다가 찾은 메일링리스트 내용이다. http://kerneltrap.org/mailarchive/linux-kernel/2007/10/15/343499 latecytop 과 완전히 연관된 내용은 아니지만, 간단하게 소개해보면, 인텔에 근무하는 (latencytop 이라는 유틸리티는 인텔에서 만들었다) Arjan van de Ven 이라는 친구가 latencytop 을 사용해서 검사해본 결과 커널을 build 하는데 atime update 하는데 600msec 이상의 latency 가 발생했다는 것이다. 그 외에도 ext3 journal 관련 연산이 유사하거나 더 높은 latency 를 나타냈다는 것이다. 좀 더 분석해본 결과 EXT3 와 IO scheduler 인.. 2010. 5. 3.
리눅스 2.6 pdflush VS. 리눅스 2.4 bdflush, kupdate 리눅스 2.4 버전까지 시스템 버퍼에 쌓여있는 내용을 디스크로 기록하는 데몬은 bdflush / kupdate 2가지가 존재하였다. 아래 코드를 보면 kernel_thread 를 사용하여 부팅 초기에 각 데몬을 thread 로 생성하여 실행하는 것을 볼 수 있다. static int __init bdflush_init(void) { static struct completion startup __initdata = COMPLETION_INITIALIZER(startup); kernel_thread(bdflush, &startup, CLONE_FS | CLONE_FILES | CLONE_SIGNAL); wait_for_completion(&startup); kernel_thread(kupdate, &star.. 2009. 9. 4.
fork 와 vfork 의 차이점 fork 는 일반적으로 새로운 프로세스를 생성하기 위해서 사용하는 시스템 콜중 하나이다. fork 를 호출한 프로세스를 부모 프로세스라 부르고 fork 에 의해서 생성된 새로운 프로세스를 자식 프로세스라고 부른다. 예전 Unix 에서는 자식 프로세스가 생성되면서 부모 프로세스의 메모리, 파일 기술자 테이블 등을 복사하여 프로세스를 구성하였다. 하지만, 자원을 복사하는 데 걸리는 시간 때문에, 프로세스 생성까지 오랜 시간이 걸렸다. 이러한 단점을 보완하기 위해서 대안으로 만들어진 것이 vfork 이다. vfork 는 부모 프로세스와 자원을 공유한다. 자원 복사가 이루어지지 않기 때문에 기존 fork 보다 빠르게 프로세스를 생성할 수 있다. 하지만 자원을 공유하기 때문에 자원에 대한 race conditio.. 2009. 8. 28.