방금 kernel 2.6.23 버전을 잠깐 보았습니다.
잠깐 보았는데도 느껴지는 엄청난 변화들이 2.6.23 버전에서 일어나고 있습니다.
2.6.22에서 정책이 많이 바뀐것 같네요.
얼핏본봐로 다른 점을 적어보겠습니다. (x86 쪽을 봤네요.)
1. i386과 x86_64의 boot 코드가 통합되었다.
- 두 코드가 같은 일을 수행하는 거의 유사한 코드라서 그동안 중복의 문제는 있었습니다.
- 이게 이제는 통합되었네요.
2. boot 코드의 assembly들이 c 소스의 inline assembly로 바뀌었다.
- assembly 코드의 사용을 극도로 제한한 모습이 역력합니다.
- 정겨운 assembly 코드를 많이 보지 못해서 아쉬운감이 한편으로 드네요.
3. xen이 추가되었다.
- 최창훈님 말씀대로 xen이 추가된것 같습니다.
놀라운 변화가 일어나고 있네요.
ARM 쪽과 PPC 쪽도 한번 확인해봐야겠습니다.
댓글 5
-
선준규
2008.01.13 00:55
-
백창우
2008.01.13 02:41
ARM 쪽은 그다지 바뀐건 없고, PPC쪽은 그 지저분하던 코드가 어느정도 정리가 되었습니다. 하지만 아직도 지저분합니다.
multi-core를 위한 CFS(Completely Fair Scheduling)가 들어갔습니다.
그리고 xen paravirtualization 실험적으로 들어갔습니다. 더군다나 VMware EAX server paravirtualization도 실험적으로 들어가 있습니다.
특별한 문제가 없는한 포함되지 않을까 생각됩니다.
-
이정승
2008.01.17 13:39
CFS가 단순히 multi-core를 위한다기 보다는, 응답성을 개선했다고
얘기하는 게 맞는 얘기인 것 같습니다.
커널의 변화에 대해서는 이곳이 잘 정리가 되어 있는 듯 하네요.
target=_blank>http://kernelnewbies.org/Linux_2_6_23
http://tree.celinuxforum.org/gitstat/ -
백창우
2008.01.20 21:22
CFS가 단순히 응답성을 개선했다기 보다는 multi-core에서의 응답성과 공정성을 동시에 개선했다고 보는게 맞지 않을까요?
사실 저도 CFS에 대해 대략적으로만 알고 있지 정확한 알고리즘을 아는것은 아닙니다. 아직 소스도 보지 못했고요.
그래서 뭐라 말씀드리기 어렵지만!!!
CFS가 제가 알고 있는 fair scheduling의 한 부류라면 단순 응답성 보다는 multi-core에서의 응답성과 공정성을 동시에 제공하기 위해서인 것이 맞을것같습니다. 단순히 uni-core에서 응답성을 개선하기를 바랬다면 CFS 말고도 대안이 많이 있는데 굳이 CFS가 들어간것은...
아직 명확하지 않기 때문에 뭐라 더 이상 할말은 없네요. CFS 소스를 한번 보고 CFS의 Fair가 제가 알고 있는 그 Fair인지 확인해보고나서 다시 이야기 할수 있을것 같습니다.
여기 fair scheduling의 대표격인 pfair scheduling 논문을 같이 올립니다.
target=_blank>http://www.cs.unc.edu/~anderson/papers/fairbook.pdf
http://www.cs.unc.edu/~anderson/papers/euro00.pdf
http://www.cs.unc.edu/~anderson/papers/rtss03a.pdf
혹시 CFS에 대해서 더 해주실수 있는 이야기가 있다면 글 남겨주십시요. 고맙게 듣겠습니다. -
이정승
2008.01.24 12:56
제가 본 문서중 CFS에 대해서 가장 잘 설명되어 있는 문서입니다.
target=_blank>http://www.ibm.com/developerworks/linux/library/l-cfs/
어차피 nice값에 따른 weight가 각 sched entity의
스케쥴링 순서와 timeslice에 영향을 미치기 때문에..
솔직히 뭐가 completely fair한건지 잘 모르겠습니다 ㅡㅡ
응답성 부분에서는 running/waiting time 순으로 스케쥴순서가
결정되므로 이전 우선순위기반 스케쥴 방식보다는 개선이 되었다고 볼 수 있겠지요.
multicore와 관련된 부분은 이전 O(1) 스케쥴러와 비교해 볼때 로드밸런싱방법에서 별다른 차이를 찾기 어렵네요.
.
저희가 분석중인 2.6.20 커널하고는 또 차이가 많이 나는군요...
x86_64커널 분석 마칠쯔음이면 새로운 커널 분석해야하는게 아닌지^^;;