NetBSD 재단에서는 얼마전 멀티프로세서에서의 성능을 개선하기 위해 Andrew Doran씨를 정식으로 고용하여 NetBSD 개발에 전념할 수 있도록 한 바 있습니다. 그 Doran씨가 오늘 tech-kern 메일링 리스트에 그간의 성과를 보여주는 벤치마크 결과를 올렸습니다. MySQL의 sysbench 결과인데요, 기존의 NetBSD에 비해 괄목할만한 성능 향상을 보여줍니다.

NetBSD 3.0까지만 해도 멀티프로세서의 경우(연두색)가 프로세서가 하나인 경우(분홍색)보다 성능이 더 떨어지는 어처구니없는 상황이었습니다만, NetBSD-current에서는 프로세서 하나(파란색)로도 3.0보다 20% 정도 더 많은 트랜잭션을 처리하는데다가, 멀티프로세서(빨간색)로 가면 거의 세 배 가까운 트랜잭션을 처리해내고 있습니다.
더 재미있는 것은 다른 운영 체제와 비교한 결과입니다. 다음 그림을 보시죠.

처음 그림과 마찬가지로 빨간 선이 멀티프로세서에서 NetBSD-current를 쓰는 경우입니다. 클라이언트 쓰레드가 어느 정도 이상이 되면 대략 초당 450개 정도의 트랜잭션을 처리합니다. OpenBSD에서 성능 최적화에는 그다지 신경을 쓰지 않음은 잘 알려져 있으므로 같은 조건의 OpenBSD 4.1(하늘색)이 겨우 100개만을 처리하는 것은 별로 놀랍지 않습니다만, FreeBSD-current(파란색)도 NetBSD-current의 2/3인 300개에 못 미치는 성능을 보여주네요. 리눅스 2.6.21의 경우(연두색)도 흥미롭습니다. 클라이언트 쓰레드가 10개 미만인 경우에는 NetBSD보다 많이 쳐집니다. 특히 단일 클라이언트인 경우 NetBSD에서 초당 125개 정도의 트랜잭션을 처리할 수 있는 반면, 리눅스는 50개를 간신히 넘는 수준이네요. 하지만 클라이언트 수가 10개를 넘어가면서 상황이 뒤바뀝니다. 대략 클라이언트 17개까지는 리눅스가 조금 낫습니다. 문제는 18개 이상인 경우인데요, NetBSD의 경우는 그래프가 평평한 것이 클라이언트 수가 더 늘더라도 꾸준히 400 이상은 유지할 것으로 보입니다. 하지만 리눅스는 들쭉날쭉 예측 불능의 상태로 빠져들면서 성능도 저하됩니다. 다른 분의 말에 따르면 캐쉬와 관련된 문제로 저런 제멋대로의 상황으로 빠져드는 것 같다는군요. 더 많은 수의 클라이언트에 대해서도 벤치마크를 해 보았더라면 확실히 알 수 있었을텐데 좀 아쉽습니다.
어쨌든 NetBSD의 성능이 대폭 향상되어 다른 운영 체제와 견주어도 월등히 낫거나 비슷한 수준이므로, 5.0을 기대해봐도 좋을 것 같습니다(4.0은 언제?). 그동안 NetBSD 재단에 기부를 하신 분들께서도 기부하신 돈이 제대로 쓰이고 있음을 확인할 수 있는 기회가 되겠네요. 앞으로 이러한 기회를 더 많이 가질 수 있도록 현재 진행중인 기금 조성 캠페인에도 많은 참여 부탁드립니다. (이번 캠페인은 5만불을 목표로 하고 있고, 현재까지 만이천불 정도가 모였습니다.)
2007년 9월 29일 오전 10:58 | 분류: 개발.
댓글 한개.
얼마전 발표된 새 GPL을 놓고 여기저기서 말이 많습니다. 리눅스 커널을 비롯한 여러 프로젝트에서 기존 버젼의 GPL과 새 버젼의 장단점을 따져보느라 바쁜 것 같은데요, 언뜻 보기에는 이 논쟁과 별 상관이 없어보이는 NetBSD에서도 이 문제를 진지하게 생각해봐야 할 필요가 있습니다. 비록 NetBSD의 커널을 비롯한 대부분의 코드가 BSD 라이센스를 따르고 있지만, 몇몇 툴들은 아직 GNU 소프트웨어에 의존하고 있습니다. 그렇다면 그 소프트웨어들이 GPLv3을 따르게 될 경우, 지금처럼 NetBSD에 해당 소프트웨어들을 포함한채로 사용해도 아무 영향이 없을까요?
이 질문에 답을 하려면 먼저 GPLv2와 GPLv3의 차이를 알아야합니다. 문제는 그게 그리 쉽지 않다는거죠. GPLv3는 이전 버젼에 비해 보다 많은 조건들을 담고 있는데다가, (법과 그리 친하지 않은 일반인들에게는) 그다지 직관적이지 못한 용어들을 사용하고 있어서, 읽고 이해하기가 만만치 않습니다. 저 역시 그걸 읽고 해석을 내릴만한 역량은 안되므로, NetBSD에 영향을 줄 소지가 있는 점만을 얘기해보겠습니다.
문제의 발단은 티보에서 자사의 하드웨어에 자사의 소프트웨어만을 돌릴 수 있게 하면서 비롯되었습니다. GPLv2에 따르면 GPL 소프트웨어를 고쳐서 쓰고 있는 티보는 그 소스를 공개할 의무가 있지만, 정작 티보의 고객 입장에서는 소스를 보고 뭔가 고쳐서 돌려본다던지 하는 일은 할 수 없는 것이죠. 이 점을 FSF에서는 고객의 “자유”를 침해하는 것으로 간주하고, 새 GPL에는 그걸 명시적으로 금지하는 조항을 추가했습니다. 그러나 달리 보면 이 조항은 오히려 하드웨어를 만드는 티보의 “자유”를 제한한다는 점에서 FSF의 자유는 “시키는대로 해라”라는 의미의 자유(Free as in “do as I say”)라고 조롱을 받고, 리누스까지 나서서 “위선자“라고 혹평을 해서 좀 시끄러웠죠. FSF가 저작권자인 소프트웨어에 어떤 라이센스를 적용할지야 전적으로 FSF의 마음이고, 리눅스 커널이나 그밖의 GPLv2 프로젝트들은 해당 프로젝트에서 알아서 할 사안이니, 여기서 누가 옳고 그르고를 논하지는 않겠습니다. 다만 NetBSD의 입장에서는 새로운 조항이 소프트웨어의 이용 범위를 제한할 수 있다는 점이 중요합니다.
티보가 아니어도, 특정 하드웨어에서 동작하는 소프트웨어가 변경되는 것을 방지해야만 하는 경우가 있습니다. 보안이 중요한 환경이라면 허가받지 않은 프로그램이 동작한다는건 심각한 위협이 될 수 있죠. 일례로, 미국에서는 연방 정보 처리 표준이라는 지침을 정해두고 있는데, 그 중 하나인 FIPS PUB 140-2를 보면 바뀐 소프트웨어가 실행되는 것을 명시적으로 금지하고 있습니다. 즉, GPLv3 소프트웨어를 탑재하는 것이 마음대로 소프트웨어를 바꿔서 구동할 수 있어야 한다는 것을 의미한다면, 그 장비는 FIPS PUB 140-2를 준수해야하는 환경에서는 쓸 수 없게 됩니다.
NetBSD는 애초부터 누구나 아무 제한없이 쓸 수 있는 운영 체제를 목표로 하고 있는 만큼, 추가적인 제약을 가하는 GPLv3 소프트웨어를 쓰는 것은 프로젝트의 목표에 정면으로 위배됩니다. 그러므로 현재 NetBSD에 포함된 GPLv2 소프트웨어들이 GPLv3로 간다면, 그 소프트웨어들을 새 버젼으로 바꾸기는 어려울겁니다. 아마도 마지막 GPLv2 버젼을 유지하면서 점차 BSD 라이센스로 대체해나가야 하지 않을까요? 어차피 GPL에서 완전히 자유로운 운영 체제를 만드는 것이 장기적인 목표이므로, 어쩌면 GPLv3의 발표가 그 일정을 좀더 앞당기는 구실을 할 지도 모르겠습니다. 다만 Jem Matzan의 말처럼 GPLv3가 정말로 GNU의 쇠락을 가져오는 계기가 될 지는 좀 더 지켜봐야 할 것 같습니다.
(이 글은 제 개인적인 견해이며, NetBSD 재단의 공식 입장과는 무관합니다.)
2007년 7월 20일 오후 4:03 | 분류: 개발.
댓글 2개.

애플 컴퓨터(지금은 애플)를 창립하고 오늘날까지 이끌어온 스티브 잡스의 일대기입니다. 픽사와 애플의 최근 연이은 대박과 특유의 프리젠테이션을 통해서만 잡스를 알고 계신 분들이라면 한번 읽어볼만합니다. 그가 살아온 삶 자체가 워낙 드라마같았기 때문에 단순히 소설책 읽는 기분으로 읽어도 재미있게 볼 수 있습니다. 더군다나 애플 컴퓨터의 옛 기종을 접하셨던 분들이라면 그때를 떠올리며 잠시 감상에 젖으실 수도 있습니다.
다만 이 책에서 아쉬운 점은 단지 사실 나열에만 그치고 있다는 점입니다. 어쩌면 그게 살아있는 인물의 일대기에서 취해야할 바른 자세인지도 모르겠습니다. 그러나 잡스라는 인물에 대해 칭찬과 비난이 갈리고 있음을 고려할때, 저자의 통찰력까지는 아니더라도 나름대로 고유의 시각으로 바라보고 새로운 해석을 내려주었더라면 하는 바램이 남습니다.
제목(iCon Steve Jobs)만 보면 잡스를 우상화하는 책이 아닐까 싶은데, 약간 호의적이긴 해도 그렇게 띄워주기만 하는 책은 아닙니다. 아무때나 별 부담없이 읽을 수 있으므로 짬짬이 가볍게 읽을만한 책을 찾을때 한번 선택해보세요.
2007년 7월 10일 오후 1:56 | 분류: 나머지.
이 글에 달린 댓글.
pkgsrc의 2007년 제2사분기 안정 브랜치가 나왔습니다. 최근의 벌크 빌드 결과에 따르면 패키지 숫자도 7000개를 넘어섰습니다. 가장 큰 변화는 역시 맥에서 디스크 이미지를 만들지 않고도 부트스트랩 및 설치가 가능하도록 한 점입니다. 이번 브랜치에서는 디스크 이미지 방식을 놔 둔채로 시험적으로 추가가 되었지만, 제3사분기 안정 브랜치에서는 아예 디스크 이미지 방식을 완전히 없애버릴 계획입니다. 그때는 바이너리 부트스트랩 키트도 .pkg로 배포하게 되지 않을까 생각합니다. 사실 지금 바로 사용해도 큰 문제는 없습니다. 제가 2년 넘게 그런 식으로 써 왔거든요. 맥의 파일시스템에서 대소문자를 구분하지 않아서 생기는 문제는 발견하는 족족 고쳐서 이제는 거의 남아있지 않습니다. 지난 브랜치에 비해 많은 패키지들이 추가, 갱신되었으므로 안정 브랜치를 쓰고 계시다면 꼭 업데이트하실 것을 권합니다.
2007년 7월 3일 오전 9:40 | 분류: 관리.
이 글에 달린 댓글.
어제 NetBSD 3.1과 3.0 브랜치에 릴리스 노트가 추가되었더군요. 3.1.1과 3.0.3의 정식 발표가 임박한 모양입니다. 마지막 숫자가 하나씩 올라가는만큼, 일반적인 기능 추가보다는 꼭 필요한 보안이나 안정성과 관련된 중요한 것들만 고친 버젼입니다. 3.1이나 3.0.2를 쓰고 계신 분들은 업그레이드 준비를 하셔야겠습니다.
다음은 3.1.1에서 바뀐 내용입니다.
- 씨게이트 ST3160811A 드라이버 수정
- 커널 패닉을 일으키던 블럭 크기가 0인 압축 이미지를 거부
- NULL 포인터로 인한 커널 패닉 문제 해결
- dhcpd.conf(5)의 get-lease-hostnames 옵션 수정
- ipfilter에서 TCP 윈도우 스케일링 수정
- quota를 쓰는 파일시스템의 스냅샷 생성시 커널 패닉 방지
- dump(8)에서 -X를 쓸 경우 코어덤프 문제 해결
- ftpd(8)에서 문제 발생 소지가 있던 glob(3)의 버퍼 넘침 문제 해결(SA2006-027)
- X11의 Render 및 DBE에서 정수 오버플로우 문제 해결(SA2007-002)
- BIND의 서비스 거부 취약점 수정(SA2007-003)
- iso(4)의 버퍼 넘침 문제 해결(SA2007-004)
- file(1)의 정수 언더플로우 및 오버플로우 문제 해결(CVE 2007-1536, 2799)
- X11의 정수 오버플로우 문제 해결(CVE 2007-1003, 1351, 1352, 1667)
- racoon(8)의 서비스 거부 취약점 수정
- 서비스 거부 공격에 쓰일 수 있는 IPv6 패킷 사용 금지
- 업그레이드시 etcupdate(8)의 문제점 해결
- 시간대 정보 tzdata2007f로 변경
- /etc/postfix/post-install을 실행 가능한 파일로 변경
- su(1)로 인한 혼돈을 막기 위해 passwd(1)이 암호 변경한 계정을 출력하도록 함
(6월 29일) 정식으로 발표되었습니다. CVS에는 반영이 되었고, 웹사이트에도 곧 올라올겁니다.
2007년 6월 25일 오전 2:57 | 분류: 관리.
이 글에 달린 댓글.
NetBSD의 수많은 포트들중에서 가장 많이 쓰이는 포트는 단연코 i386일 겁니다. NetBSD의 뿌리중 한 축이 386BSD인 만큼 역사도 가장 오래되었죠. 그러나 이제는 i386 포트에서 더 이상 i386을 지원하지 않습니다. 물론 여기서 말하는 i386은 인텔 80386입니다. i486 이상은 계속 지원합니다.
학교 전산실에서 XT 갖고 놀던 시절에 집에 386 샀다고 자랑하는 친구들을 부러워하곤 했었는데, 어느새 386은 토스터만도 못한 기종이 되어버렸나봅니다.
2007년 6월 14일 오전 12:01 | 분류: 관리.
이 글에 달린 댓글.
NetBSD 웹사이트가 정말 오랜만에(!) 새로운 모습으로 바뀌었습니다. 사실 그간 여러차례 디자인을 바꾸려는 시도가 있었지만 워낙 사공이 많은 탓에 결단을 못 내리다가, 최근 Daniel Sieger씨가 www팀에 합류한 이후로 논의가 급진전되었습니다. 저번에 있었던 Documentation Hackathon이나 며칠전 디렉토리 구조를 재배치해서 여기저기 흩어져있던 자료들을 체계적으로 분류한 것도 디자인 변경을 위한 준비작업이었습니다. 무엇보다 첫 화면에 너무 많아서 정신없었던 링크들이 사라진 덕에 깔끔해져서 보기가 좋군요.
2007년 6월 13일 오전 1:13 | 분류: 나머지.
댓글 5개.
맥에서 pkgsrc를 쓰는데에 관심이 있으신 분들께 반가운 소식입니다. pkgsrc가 맥(Darwin)을 지원한다고는 하지만 실제로 설치해서 사용하려면 상당히 귀찮은 과정을 거쳐야 했습니다. 다른 유닉스 기반 시스템의 경우 사분기마다 배포되는 pkgsrc-2007Q1.tar.gz를 받거나 CVS로 직접 받아서 부트스트랩 과정만 거치면 바로 사용이 가능한 반면, 맥에서는 별도의 디스크 이미지를 만드는 과정을 거치도록 권하고 있습니다. 이유는 맥의 기본 파일 시스템이 대소문자를 구분하지 않는다는 점 때문입니다. 이로 인해 pkgsrc의 몇몇 디렉토리(deve/cvs와 devel/CVS 등)가 충돌이 생겨서 제대로 체크아웃을 할 수 없고, 결국 궁여지책으로 생각해낸 방법이 대소문자가 구분되는 파일 시스템을 디스크 이미지(.dmg)로 만들어서, 그 이미지를 마운트해서 쓰는 방법입니다. 이렇게 하면 대소문자 충돌은 피할 수 있지만, 이미지 크기를 미리 예상해서 적당한 크기로 만들어 주어야 하고 매번 마운트를 해야 하는 번거로움이 따릅니다. 사실 pkgsrc를 맥 사용자들에게 마음놓고 권할 수 없는 가장 큰 이유가 이거였죠.
다행히 지난 pkgsrcCon를 계기로 Amitai Schlair씨를 필두로 한 맥을 쓰는 몇몇 pkgsrc 개발자들이 본격적으로 pkgsrc 개선에 뛰어들기로 해서 앞으로 많은 발전이 있을 것으로 예상이 됩니다. 첫번째 임무는 pkgsrc의 대소문자 충돌을 완전히 제거하는 것입니다. pkgsrc-users 메일링 리스트를 구독하시는 분들께서는 몇몇 디렉토리 이름이 바뀐다는 메시지를 보셨을 겁니다. 그 작업은 전부 완료되어서 이제 CVS에서 체크아웃할때 보이는 문제는 완전히 사라졌습니다. 아직 LOCALBASE(/usr/pkg)나 VARBASE(/var) 등에서의 대소문자 문제는 남아있을 수 있지만, 대부분의 패키지는 별 이상없이 동작합니다. 디스크 이미지를 만들 필요만 없어져도 아마 MacPorts보다는 낫다고 할 수 있을겁니다. 기회가 되면 맥에서 쓸 수 있는 다른 패키지 시스템(MacPorts, Fink)과 비교를 해보도록 하겠습니다.
2007년 6월 9일 오전 11:02 | 분류: 관리.
이 글에 달린 댓글.

이공계쪽에서 논문을 읽거나 발표를 듣다보면 저자나 발표자에 따라 머리에 쏙쏙 들어오기도 하고 뭔 소린지 전혀 감을 잡을 수 없기도 합니다. 이는 내용이 어렵거나 복잡해서라기보다는 말하는 사람이 청중의 기대와 상관없이 자기 기준대로 발표하기 때문인 경우가 많습니다. 그나마 논문의 경우는 여러번 주의깊게 읽다보면 간신히 이해되기도 하지만, 발표를 듣는 경우 일단 한번 흐름을 놓치면 그 이후의 내용을 전혀 쫓아갈 수 없는 경우가 대부분이라 정말 난감합니다.
이 책은 이공계 분야에서 글을 쓰거나 발표를 할 때 간과하기 쉬운 것들을 잘 지적해주고 있습니다. 나온지 좀 오래된 책이다보니 종이에 직접 논문을 쓰고 OHP로 발표를 하는 등 요즘 추세와는 맞지 않는 내용이 있긴 합니다만, 그래도 여전히 새겨들을만한 내용이 많이 있습니다. 특히 영어가 모국어가 아닌 사람 입장에서 글을 쓰거나 말을 할 때에는 나 말고 다른 사람들은 모두 영어에 능통하다고 생각하기 쉬운데, 이 책에서는 영어가 외국어인 청중이나 독자를 위해 어떤 배려를 해야하는지에 한 장을 할애해서 설명하고 있습니다. 저 역시 외국인 청중, 독자입장으로서 공감되는 부분이 많더군요. 글쓴이가 영국 사람이다보니 미국 영어를 무시하는 경향이 종종 보입니다만, 제삼자 입장에서는 그것도 재미로 봐줄만 합니다.
무엇보다 이 책의 장점은 짧다는 것! 크기도 작고 70쪽 정도에 불과하기 때문에 부담없이 읽을 수 있습니다. 마치 이공계쪽 글쓰기의 The Elements of Style처럼 느껴질 정도입니다. 하지만 이 책 자체는 그만큼 매끄럽게 쓰여진 편이 아니라는 점이 아쉽습니다. 각 절이 유기적으로 연결되지 못하고 따로 노는 느낌이랄까요? 그래도 하나하나가 꼭 필요한 조언들이므로 틈날때마다 관심있는 주제를 펼쳐서 읽는 것도 괜찮을 겁니다. 이공계쪽에 종사하시면서 영어로 논문을 쓰거나 발표할 일이 많으신 분들이라면 한번쯤 읽어볼만한 책입니다.
2007년 6월 8일 오후 1:46 | 분류: 연구.
이 글에 달린 댓글.
좀 늦은 감이 있지만 2007년의 첫번째 NetBSD 상황 보고서가 나왔습니다. 기능적인 측면의 변화는 다음과 같습니다.
- uGuru 하드웨어 시스템 모니터 지원
- 일광 절약 시간제 변경
- ASUS AI Booster ACPI 하드웨어 모니터 지원
- DRM/DRI 지원
- 경량 프로세스 스케쥴링 개선
- On Demand Clock Modulation 지원
- IPv4의 Fast Forward 지원을 IPv6로도 확대
- curses 라이브러리의 아시아권 문자 지원
개인적으로 반가운 것은 마지막 두 항목입니다. IPv6의 Fast Forward 지원은 FAST_IPSEC과 더불어 IPv4와 IPv6의 기능상 차이를 거의 없앴다는 점에서 의미가 있습니다. curses 라이브러리에서 아시아권 문자를 쓸 수 있게 된건 더 말할 필요도 없겠죠. 새 curses 라이브러리의 한국어 테스트는 yui님께서 해 주셨습니다.
이 외에도 pkgsrcCon이나 구글의 Summer of Code 프로젝트 등의 굵직한 소식이 많이 있습니다. 자세한 내용은 전문을 참조하시기 바랍니다.
2007년 6월 1일 오전 12:00 | 분류: 개발.
이 글에 달린 댓글.