A Comparison of Solaris, Linux, and FreeBSD Kernels, by Max

sangwoo의 이미지

흥미있는 글이네요. 세 운영체제의 커널 서브시스템 (scheduling, memory management, file system architecture)를 비교하고 있습니다.

http://www.opensolaris.org/os/article/2005-10-14_a_comparison_of_solaris__linux__and_freebsd_kernels/

kenny007one의 이미지

리눅스 커널은 쓰레드 코드를 스케쥴러 액티베이션로 고치지 않는한 솔라리스의 성능은 절대 따라잡을수가 없는건 어쩔수 없는듯 합니다.

sangwoo의 이미지

솔라리스 thread 모델도 스케줄러 액티베이션 아닐껄요.
이전에는 N:M 모델이었다가 1:1로 다시 구현했다고 들었습니다.

PS. 또 느끼는 거지만 글을 참 선정적으로 쓰시네요.

----
Let's shut up and code.

cocas의 이미지

네 솔라리스가 리눅스보다 쓰레드 성능이 더 좋을 수는 있습니다. 리눅스 커널의 쓰레드 구현 하에서는 아직 context switching 에서 메모리 전환 비용이 꽤 크게 먹이기 때문입니다.

질문 하나 드리고 싶습니다. 솔라리스 메뉴얼을 보면 솔라리스9 이후에는 기존의 M:N 모델이 아닌 1:1 모델을 기본으로 삼고 있습니다. ( M:N이 옵션으로 제공되는지 완전히 제거된건지는 잘 모르겠습니다. ) 솔라리스8 까지의 쓰레드 구현은 그렇게 나쁘지 않은 걸로 알고 있었습니다. 그런데 왜 1:1로 바뀌었을까요? 질문 내용이 '1:1이 더 좋으니까 1:1로 바뀐거 아니냐' 라는 유인 대답을 유도하게 생기긴 했는데 아닙니다. 실제로도 잘 몰라서 그런겁니다. 분명 M:N이 이론적으로 좋을 거 같고 솔라리스는 그 구현도 잘 되어있다고 알고 있었거든요.

kenny007one 님께서 생각하시는 그 리눅스의 성능 저하 요인은 무엇이라고 보십니까? 또 근거는 무엇이신지요?